Title: [252354] trunk
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;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to