Title: [232258] trunk
Revision
232258
Author
[email protected]
Date
2018-05-29 09:12:22 -0700 (Tue, 29 May 2018)

Log Message

Unable to remove IndexedDB Databases with Cocoa API removeDataOfTypes
https://bugs.webkit.org/show_bug.cgi?id=185835
<rdar://problem/39142257>

Reviewed by Chris Dumez.

Source/WebKit:

Fix a wrong if condition: databases should be closed and deleted if websiteDataTypes contains
WebsiteDataType::IndexedDBDatabases.

* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::deleteWebsiteDataForOrigins):

Tools:

Add API test coverage.

* TestWebKitAPI/Tests/WebKitCocoa/IndexedDBPersistence.mm:
(TEST):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (232257 => 232258)


--- trunk/Source/WebKit/ChangeLog	2018-05-29 15:19:49 UTC (rev 232257)
+++ trunk/Source/WebKit/ChangeLog	2018-05-29 16:12:22 UTC (rev 232258)
@@ -1,3 +1,17 @@
+2018-05-29  Sihui Liu  <[email protected]>
+
+        Unable to remove IndexedDB Databases with Cocoa API removeDataOfTypes
+        https://bugs.webkit.org/show_bug.cgi?id=185835
+        <rdar://problem/39142257>
+
+        Reviewed by Chris Dumez.
+
+        Fix a wrong if condition: databases should be closed and deleted if websiteDataTypes contains 
+        WebsiteDataType::IndexedDBDatabases.
+
+        * StorageProcess/StorageProcess.cpp:
+        (WebKit::StorageProcess::deleteWebsiteDataForOrigins):
+
 2018-05-28  Sam Weinig  <[email protected]>
 
         Modernize SVGRenderStyleDefs.h

Modified: trunk/Source/WebKit/StorageProcess/StorageProcess.cpp (232257 => 232258)


--- trunk/Source/WebKit/StorageProcess/StorageProcess.cpp	2018-05-29 15:19:49 UTC (rev 232257)
+++ trunk/Source/WebKit/StorageProcess/StorageProcess.cpp	2018-05-29 16:12:22 UTC (rev 232258)
@@ -349,7 +349,7 @@
 #endif
 
 #if ENABLE(INDEXED_DATABASE)
-    if (!websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases))
+    if (websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases))
         idbServer(sessionID).closeAndDeleteDatabasesForOrigins(securityOrigins, [callbackAggregator = WTFMove(callbackAggregator)] { });
 #endif
 }

Modified: trunk/Tools/ChangeLog (232257 => 232258)


--- trunk/Tools/ChangeLog	2018-05-29 15:19:49 UTC (rev 232257)
+++ trunk/Tools/ChangeLog	2018-05-29 16:12:22 UTC (rev 232258)
@@ -1,3 +1,16 @@
+2018-05-29  Sihui Liu  <[email protected]>
+
+        Unable to remove IndexedDB Databases with Cocoa API removeDataOfTypes
+        https://bugs.webkit.org/show_bug.cgi?id=185835
+        <rdar://problem/39142257>
+
+        Reviewed by Chris Dumez.
+
+        Add API test coverage.
+
+        * TestWebKitAPI/Tests/WebKitCocoa/IndexedDBPersistence.mm:
+        (TEST):
+
 2018-05-29  Wenson Hsieh  <[email protected]>
 
         [Extra zoom mode] "Significant area painted" rendering progress event is rarely fired

Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBPersistence.mm (232257 => 232258)


--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBPersistence.mm	2018-05-29 15:19:49 UTC (rev 232257)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBPersistence.mm	2018-05-29 16:12:22 UTC (rev 232258)
@@ -37,6 +37,7 @@
 
 #if WK_API_ENABLED
 
+static bool readyToContinue;
 static bool receivedScriptMessage;
 static RetainPtr<WKScriptMessage> lastScriptMessage;
 
@@ -93,4 +94,47 @@
     EXPECT_WK_STREQ(@"2 TestObjectStore", string3.get());
 }
 
+TEST(IndexedDB, IndexedDBDataRemoval)
+{
+    auto websiteDataTypes = adoptNS([[NSSet alloc] initWithArray:@[WKWebsiteDataTypeIndexedDBDatabases]]);
+
+    readyToContinue = false;
+    [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes.get() modifiedSince:[NSDate distantPast] completionHandler:^() {
+        readyToContinue = true;
+    }];
+    TestWebKitAPI::Util::run(&readyToContinue);
+
+    readyToContinue = false;
+    [[WKWebsiteDataStore defaultDataStore] fetchDataRecordsOfTypes:websiteDataTypes.get() completionHandler:^(NSArray<WKWebsiteDataRecord *> *dataRecords) {
+        readyToContinue = true;
+        ASSERT_EQ(0u, dataRecords.count);
+    }];
+    TestWebKitAPI::Util::run(&readyToContinue);
+
+    receivedScriptMessage = false;
+    auto handler = adoptNS([[IndexedDBMessageHandler alloc] init]);
+    auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
+    [[configuration userContentController] addScriptMessageHandler:handler.get() name:@"testHandler"];
+    auto webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
+    NSURLRequest *request = [NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"IndexedDBPersistence-1" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]];
+    [webView loadRequest:request];
+    TestWebKitAPI::Util::run(&receivedScriptMessage);
+
+    readyToContinue = false;
+    [[WKWebsiteDataStore defaultDataStore] fetchDataRecordsOfTypes:websiteDataTypes.get() completionHandler:^(NSArray<WKWebsiteDataRecord *> *dataRecords) {
+        ASSERT_EQ(1u, dataRecords.count);
+        [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes.get() forDataRecords:dataRecords completionHandler:^() {
+            readyToContinue = true;
+        }];
+    }];
+    TestWebKitAPI::Util::run(&readyToContinue);
+
+    readyToContinue = false;
+    [[WKWebsiteDataStore defaultDataStore] fetchDataRecordsOfTypes:websiteDataTypes.get() completionHandler:^(NSArray<WKWebsiteDataRecord *> *dataRecords) {
+        readyToContinue = true;
+        ASSERT_EQ(0u, dataRecords.count);
+    }];
+    TestWebKitAPI::Util::run(&readyToContinue);
+}
+
 #endif
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to