Title: [276514] trunk/Source/WebKit
Revision
276514
Author
[email protected]
Date
2021-04-23 12:53:26 -0700 (Fri, 23 Apr 2021)

Log Message

Web Inspector: [Cocoa] WKInspectorResourceURLSchemeHandler needs to serialize cleanup actions
https://bugs.webkit.org/show_bug.cgi?id=224986
<rdar://76768454>

Reviewed by Devin Rousso.

* UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:
(-[WKInspectorResourceURLSchemeHandler webView:startURLSchemeTask:]):
Do cleanup on the main queue so that it can be serialized with reads.

(-[WKInspectorResourceURLSchemeHandler webView:stopURLSchemeTask:]):
Ensure that all removals from the map are processed before doing a lookup.

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (276513 => 276514)


--- trunk/Source/WebKit/ChangeLog	2021-04-23 19:51:44 UTC (rev 276513)
+++ trunk/Source/WebKit/ChangeLog	2021-04-23 19:53:26 UTC (rev 276514)
@@ -1,3 +1,18 @@
+2021-04-23  BJ Burg  <[email protected]>
+
+        Web Inspector: [Cocoa] WKInspectorResourceURLSchemeHandler needs to serialize cleanup actions
+        https://bugs.webkit.org/show_bug.cgi?id=224986
+        <rdar://76768454>
+
+        Reviewed by Devin Rousso.
+
+        * UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:
+        (-[WKInspectorResourceURLSchemeHandler webView:startURLSchemeTask:]):
+        Do cleanup on the main queue so that it can be serialized with reads.
+
+        (-[WKInspectorResourceURLSchemeHandler webView:stopURLSchemeTask:]):
+        Ensure that all removals from the map are processed before doing a lookup.
+
 2021-04-23  Darin Adler  <[email protected]>
 
         Remove decoder memory allocations based on untrusted data (sizes) in the stream; related changes

Modified: trunk/Source/WebKit/UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm (276513 => 276514)


--- trunk/Source/WebKit/UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm	2021-04-23 19:51:44 UTC (rev 276513)
+++ trunk/Source/WebKit/UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm	2021-04-23 19:53:26 UTC (rev 276514)
@@ -88,7 +88,9 @@
     }
 
     NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
-        [_fileLoadOperations removeObjectForKey:urlSchemeTask];
+        dispatch_async(dispatch_get_main_queue(), ^{
+            [_fileLoadOperations removeObjectForKey:urlSchemeTask];
+        });
 
         NSURL *requestURL = urlSchemeTask.request.URL;
         NSURL *fileURLForRequest = [_cachedBundle URLForResource:requestURL.relativePath withExtension:@""];
@@ -136,10 +138,13 @@
 
 - (void)webView:(WKWebView *)webView stopURLSchemeTask:(id <WKURLSchemeTask>)urlSchemeTask
 {
-    if (NSOperation *operation = [_fileLoadOperations objectForKey:urlSchemeTask]) {
-        [operation cancel];
-        [_fileLoadOperations removeObjectForKey:urlSchemeTask];
-    }
+    // Ensure that all blocks with pending removals are dispatched before doing a map lookup.
+    dispatch_async(dispatch_get_main_queue(), ^{
+        if (NSOperation *operation = [_fileLoadOperations objectForKey:urlSchemeTask]) {
+            [operation cancel];
+            [_fileLoadOperations removeObjectForKey:urlSchemeTask];
+        }
+    });
 }
 
 @end
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to