Title: [290736] trunk/Tools
- Revision
- 290736
- Author
- [email protected]
- Date
- 2022-03-02 10:48:46 -0800 (Wed, 02 Mar 2022)
Log Message
Add test coverage for deleting FileSystem data when file is being written
https://bugs.webkit.org/show_bug.cgi?id=237353
Reviewed by Chris Dumez.
Verify that file can be removed from disk, and active FileSystemSyncAccessHandle is invalidated in this case.
* TestWebKitAPI/Tests/WebKitCocoa/FileSystemAccess.mm:
Modified Paths
Diff
Modified: trunk/Tools/ChangeLog (290735 => 290736)
--- trunk/Tools/ChangeLog 2022-03-02 18:47:09 UTC (rev 290735)
+++ trunk/Tools/ChangeLog 2022-03-02 18:48:46 UTC (rev 290736)
@@ -1,3 +1,14 @@
+2022-03-02 Sihui Liu <[email protected]>
+
+ Add test coverage for deleting FileSystem data when file is being written
+ https://bugs.webkit.org/show_bug.cgi?id=237353
+
+ Reviewed by Chris Dumez.
+
+ Verify that file can be removed from disk, and active FileSystemSyncAccessHandle is invalidated in this case.
+
+ * TestWebKitAPI/Tests/WebKitCocoa/FileSystemAccess.mm:
+
2022-03-02 Alex Christensen <[email protected]>
Add SPI _WKDataTask
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/FileSystemAccess.mm (290735 => 290736)
--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/FileSystemAccess.mm 2022-03-02 18:47:09 UTC (rev 290735)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/FileSystemAccess.mm 2022-03-02 18:48:46 UTC (rev 290736)
@@ -194,6 +194,53 @@
EXPECT_WK_STREQ(@"success: write 10 bytes", [lastScriptMessage body]);
}
+TEST(FileSystemAccess, DeleteDataDuringWrite)
+{
+ auto handler = adoptNS([[FileSystemAccessMessageHandler alloc] init]);
+ auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
+ [[configuration userContentController] addScriptMessageHandler:handler.get() name:@"testHandler"];
+ auto preferences = [configuration preferences];
+ preferences._fileSystemAccessEnabled = YES;
+ preferences._accessHandleEnabled = YES;
+ preferences._storageAPIEnabled = YES;
+ auto schemeHandler = adoptNS([[TestURLSchemeHandler alloc] init]);
+ [schemeHandler setStartURLSchemeTaskHandler:^(WKWebView *, id<WKURLSchemeTask> task) {
+ NSURL *requestURL = task.request.URL;
+ EXPECT_WK_STREQ("webkit://webkit.org/worker.js", requestURL.absoluteString);
+ auto response = adoptNS([[NSURLResponse alloc] initWithURL:requestURL MIMEType:@"text/_javascript_" expectedContentLength:0 textEncodingName:nil]);
+ RetainPtr<NSData> data = "" dataWithBytes:workerBytes length:strlen(workerBytes)];
+ [task didReceiveResponse:response.get()];
+ [task didReceiveData:data.get()];
+ [task didFinish];
+ }];
+ [configuration setURLSchemeHandler:schemeHandler.get() forURLScheme:@"webkit"];
+
+ auto webView = adoptNS([[WKWebView alloc] initWithFrame:CGRectMake(0, 0, 800, 600) configuration:configuration.get()]);
+ [webView loadHTMLString:workerFrameString baseURL:[NSURL URLWithString:@"webkit://webkit.org"]];
+ TestWebKitAPI::Util::run(&receivedScriptMessage);
+ receivedScriptMessage = false;
+ EXPECT_WK_STREQ(@"page is loaded", [lastScriptMessage body]);
+
+ [webView evaluateJavaScript:@"start()" completionHandler:nil];
+ TestWebKitAPI::Util::run(&receivedScriptMessage);
+ receivedScriptMessage = false;
+ EXPECT_WK_STREQ(@"success: write 10 bytes", [lastScriptMessage body]);
+
+ done = false;
+ auto types = [NSSet setWithObject:_WKWebsiteDataTypeFileSystem];
+ [[configuration websiteDataStore] removeDataOfTypes:types modifiedSince:[NSDate distantPast] completionHandler:^ {
+ [[configuration websiteDataStore] fetchDataRecordsOfTypes:types completionHandler:^(NSArray<WKWebsiteDataRecord *> *records) {
+ EXPECT_EQ(records.count, 0u);
+ done = true;
+ }];
+ }];
+ TestWebKitAPI::Util::run(&done);
+
+ // Open access handle should be when website data is removed.
+ TestWebKitAPI::Util::run(&receivedScriptMessage);
+ EXPECT_WK_STREQ(@"error: InvalidStateError - AccessHandle is closing or closed", [lastScriptMessage body]);
+}
+
static NSString *basicString = @"<script> \
async function open() \
{ \
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes