⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 276514 in webkit


Ignore:
Timestamp:
Apr 23, 2021, 12:53:26 PM (5 years ago)
Author:
BJ Burg
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.

Location:
trunk/Source/WebKit
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r276510 r276514  
     12021-04-23  BJ Burg  <bburg@apple.com>
     2
     3        Web Inspector: [Cocoa] WKInspectorResourceURLSchemeHandler needs to serialize cleanup actions
     4        https://bugs.webkit.org/show_bug.cgi?id=224986
     5        <rdar://76768454>
     6
     7        Reviewed by Devin Rousso.
     8
     9        * UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:
     10        (-[WKInspectorResourceURLSchemeHandler webView:startURLSchemeTask:]):
     11        Do cleanup on the main queue so that it can be serialized with reads.
     12
     13        (-[WKInspectorResourceURLSchemeHandler webView:stopURLSchemeTask:]):
     14        Ensure that all removals from the map are processed before doing a lookup.
     15
    1162021-04-23  Darin Adler  <darin@apple.com>
    217
  • trunk/Source/WebKit/UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm

    r276476 r276514  
    8989
    9090    NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
    91         [_fileLoadOperations removeObjectForKey:urlSchemeTask];
     91        dispatch_async(dispatch_get_main_queue(), ^{
     92            [_fileLoadOperations removeObjectForKey:urlSchemeTask];
     93        });
    9294
    9395        NSURL *requestURL = urlSchemeTask.request.URL;
     
    137139- (void)webView:(WKWebView *)webView stopURLSchemeTask:(id <WKURLSchemeTask>)urlSchemeTask
    138140{
    139     if (NSOperation *operation = [_fileLoadOperations objectForKey:urlSchemeTask]) {
    140         [operation cancel];
    141         [_fileLoadOperations removeObjectForKey:urlSchemeTask];
    142     }
     141    // Ensure that all blocks with pending removals are dispatched before doing a map lookup.
     142    dispatch_async(dispatch_get_main_queue(), ^{
     143        if (NSOperation *operation = [_fileLoadOperations objectForKey:urlSchemeTask]) {
     144            [operation cancel];
     145            [_fileLoadOperations removeObjectForKey:urlSchemeTask];
     146        }
     147    });
    143148}
    144149
Note: See TracChangeset for help on using the changeset viewer.