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