- Revision
- 252354
- Author
- [email protected]
- Date
- 2019-11-11 18:56:48 -0800 (Mon, 11 Nov 2019)
Log Message
Add SPI to access a WebsiteDataStore without instantiating it, and its configuration
https://bugs.webkit.org/show_bug.cgi?id=204089
Reviewed by Tim Horton.
Source/WebKit:
Calling WKWebViewConfiguration.websiteDataStore instantiates the default data store.
We need a way to query if it has been set but not instantiate anything if it hasn't.
We also need a way to access the configuration used to create a WKWebsiteDataStore like we do with WKWebView.
These have been requested to fix <rdar://problem/57091216> and I think they're a good idea in general.
Covered by API tests.
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration _websiteDataStoreIfExists]):
* UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _setDelegate:]):
(-[WKWebsiteDataStore set_delegate:]):
(-[WKWebsiteDataStore _configuration]):
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:
(WebKit::WebsiteDataStoreConfiguration::copy const):
(WebKit::WebsiteDataStoreConfiguration::copy): Deleted.
* UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
Tools:
* TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:
(TEST):
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (252353 => 252354)
--- trunk/Source/WebKit/ChangeLog 2019-11-12 01:59:16 UTC (rev 252353)
+++ trunk/Source/WebKit/ChangeLog 2019-11-12 02:56:48 UTC (rev 252354)
@@ -1,3 +1,30 @@
+2019-11-11 Alex Christensen <[email protected]>
+
+ Add SPI to access a WebsiteDataStore without instantiating it, and its configuration
+ https://bugs.webkit.org/show_bug.cgi?id=204089
+
+ Reviewed by Tim Horton.
+
+ Calling WKWebViewConfiguration.websiteDataStore instantiates the default data store.
+ We need a way to query if it has been set but not instantiate anything if it hasn't.
+ We also need a way to access the configuration used to create a WKWebsiteDataStore like we do with WKWebView.
+ These have been requested to fix <rdar://problem/57091216> and I think they're a good idea in general.
+
+ Covered by API tests.
+
+ * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
+ (-[WKWebViewConfiguration _websiteDataStoreIfExists]):
+ * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
+ * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
+ (-[WKWebsiteDataStore _setDelegate:]):
+ (-[WKWebsiteDataStore set_delegate:]):
+ (-[WKWebsiteDataStore _configuration]):
+ * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
+ * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:
+ (WebKit::WebsiteDataStoreConfiguration::copy const):
+ (WebKit::WebsiteDataStoreConfiguration::copy): Deleted.
+ * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
+
2019-11-11 Sihui Liu <[email protected]>
Add size file for CacheStorage
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm (252353 => 252354)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm 2019-11-12 01:59:16 UTC (rev 252353)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm 2019-11-12 02:56:48 UTC (rev 252354)
@@ -878,6 +878,11 @@
_shouldDeferAsynchronousScriptsUntilAfterDocumentLoad = shouldDeferAsynchronousScriptsUntilAfterDocumentLoad;
}
+- (WKWebsiteDataStore *)_websiteDataStoreIfExists
+{
+ return _websiteDataStore.peek();
+}
+
- (BOOL)_drawsBackground
{
return _drawsBackground;
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h (252353 => 252354)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h 2019-11-12 01:59:16 UTC (rev 252353)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h 2019-11-12 02:56:48 UTC (rev 252354)
@@ -76,6 +76,8 @@
@property (nonatomic, setter=_setDrawsBackground:) BOOL _drawsBackground WK_API_AVAILABLE(macos(10.14), ios(12.0));
@property (nonatomic, setter=_setShouldDeferAsynchronousScriptsUntilAfterDocumentLoad:) BOOL _shouldDeferAsynchronousScriptsUntilAfterDocumentLoad WK_API_AVAILABLE(macos(10.14), ios(12.0));
+@property (nonatomic, readonly) WKWebsiteDataStore *_websiteDataStoreIfExists WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
+
#if TARGET_OS_IPHONE
@property (nonatomic, setter=_setAlwaysRunsAtForegroundPriority:) BOOL _alwaysRunsAtForegroundPriority WK_API_AVAILABLE(ios(9_0));
@property (nonatomic, setter=_setInlineMediaPlaybackRequiresPlaysInlineAttribute:) BOOL _inlineMediaPlaybackRequiresPlaysInlineAttribute WK_API_AVAILABLE(ios(10.0));
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm (252353 => 252354)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm 2019-11-12 01:59:16 UTC (rev 252353)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm 2019-11-12 02:56:48 UTC (rev 252354)
@@ -560,4 +560,9 @@
_websiteDataStore->setClient(makeUniqueRef<WebsiteDataStoreClient>(delegate));
}
+- (_WKWebsiteDataStoreConfiguration *)_configuration
+{
+ return wrapper(_websiteDataStore->configuration().copy());
+}
+
@end
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h (252353 => 252354)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h 2019-11-12 01:59:16 UTC (rev 252353)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h 2019-11-12 02:56:48 UTC (rev 252354)
@@ -77,6 +77,7 @@
- (void)_processStatisticsAndDataRecords:(void (^)(void))completionHandler WK_API_AVAILABLE(macos(10.15), ios(13.0));
@property (nullable, nonatomic, weak) id <_WKWebsiteDataStoreDelegate> _delegate WK_API_AVAILABLE(macos(10.15), ios(13.0));
+@property (nonatomic, readonly, copy) _WKWebsiteDataStoreConfiguration *_configuration;
@end
Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp (252353 => 252354)
--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp 2019-11-12 01:59:16 UTC (rev 252353)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp 2019-11-12 02:56:48 UTC (rev 252354)
@@ -49,7 +49,7 @@
}
}
-Ref<WebsiteDataStoreConfiguration> WebsiteDataStoreConfiguration::copy()
+Ref<WebsiteDataStoreConfiguration> WebsiteDataStoreConfiguration::copy() const
{
auto copy = WebsiteDataStoreConfiguration::create(m_isPersistent);
Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h (252353 => 252354)
--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h 2019-11-12 01:59:16 UTC (rev 252353)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h 2019-11-12 02:56:48 UTC (rev 252354)
@@ -39,7 +39,7 @@
static Ref<WebsiteDataStoreConfiguration> create(IsPersistent isPersistent) { return adoptRef(*new WebsiteDataStoreConfiguration(isPersistent)); }
WebsiteDataStoreConfiguration(IsPersistent);
- Ref<WebsiteDataStoreConfiguration> copy();
+ Ref<WebsiteDataStoreConfiguration> copy() const;
bool isPersistent() const { return m_isPersistent == IsPersistent::Yes; }
Modified: trunk/Tools/ChangeLog (252353 => 252354)
--- trunk/Tools/ChangeLog 2019-11-12 01:59:16 UTC (rev 252353)
+++ trunk/Tools/ChangeLog 2019-11-12 02:56:48 UTC (rev 252354)
@@ -1,3 +1,13 @@
+2019-11-11 Alex Christensen <[email protected]>
+
+ Add SPI to access a WebsiteDataStore without instantiating it, and its configuration
+ https://bugs.webkit.org/show_bug.cgi?id=204089
+
+ Reviewed by Tim Horton.
+
+ * TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:
+ (TEST):
+
2019-11-11 Ross Kirsling <[email protected]>
UTC offset for Samoa is miscalculated when !HAVE(TIMEGM)
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm (252353 => 252354)
--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm 2019-11-12 01:59:16 UTC (rev 252353)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm 2019-11-12 02:56:48 UTC (rev 252354)
@@ -529,6 +529,15 @@
EXPECT_FALSE([[[[_WKWebsiteDataStoreConfiguration alloc] initNonPersistentConfiguration] autorelease] _indexedDBDatabaseDirectory]);
}
+TEST(WebKit, WebsiteDataStoreIfExists)
+{
+ auto webViewConfiguration = adoptNS([WKWebViewConfiguration new]);
+ EXPECT_FALSE([webViewConfiguration _websiteDataStoreIfExists]);
+ WKWebsiteDataStore *dataStore = [webViewConfiguration websiteDataStore];
+ EXPECT_TRUE([webViewConfiguration _websiteDataStoreIfExists]);
+ EXPECT_TRUE(dataStore._configuration.persistent);
+}
+
TEST(WebKit, NetworkCacheDirectory)
{
using namespace TestWebKitAPI;