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

Changeset 220064 in webkit


Ignore:
Timestamp:
Jul 31, 2017, 7:37:34 AM (9 years ago)
Author:
jmarcell@apple.com
Message:

Cherry-pick r220033. rdar://problem/33619596

Location:
branches/safari-604-branch
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/safari-604-branch/Source/WebKit/ChangeLog

    r220062 r220064  
     12017-07-31  Jason Marcell  <jmarcell@apple.com>
     2
     3        Cherry-pick r220033. rdar://problem/33619596
     4
     5    2017-07-28  Brady Eidson  <beidson@apple.com>
     6
     7            API tests that use URLSchemeHandler are failing.
     8            https://bugs.webkit.org/show_bug.cgi?id=174950
     9
     10            Reviewed by Alex Christensen.
     11
     12            Make sure that in all cases where we remove the last task from the page->task map...
     13            ...We also remove the map itself.
     14
     15            * UIProcess/WebURLSchemeHandler.cpp:
     16            (WebKit::WebURLSchemeHandler::stopTask):
     17            (WebKit::WebURLSchemeHandler::taskCompleted):
     18            (WebKit::WebURLSchemeHandler::removeTaskFromPageMap):
     19            * UIProcess/WebURLSchemeHandler.h:
     20
    1212017-07-31  Jason Marcell  <jmarcell@apple.com>
    222
  • branches/safari-604-branch/Source/WebKit/UIProcess/WebURLSchemeHandler.cpp

    r220062 r220064  
    8181        return;
    8282
    83     auto pageIterator = m_tasksByPageIdentifier.find(page.pageID());
    84     ASSERT(pageIterator != m_tasksByPageIdentifier.end());
    85     ASSERT(pageIterator->value.contains(taskIdentifier));
    86     pageIterator->value.remove(taskIdentifier);
    87 
    8883    iterator->value->stop();
    8984    platformStopTask(page, iterator->value);
    9085
     86    removeTaskFromPageMap(page.pageID(), taskIdentifier);
    9187    m_tasks.remove(iterator);
    92     if (pageIterator->value.isEmpty())
    93         m_tasksByPageIdentifier.remove(pageIterator);
    9488}
    9589
    … …  
    9892    auto takenTask = m_tasks.take(task.identifier());
    9993    ASSERT_UNUSED(takenTask, takenTask->ptr() == &task);
    100 
    101     ASSERT(m_tasksByPageIdentifier.get(task.pageID()).contains(task.identifier()));
    102     m_tasksByPageIdentifier.get(task.pageID()).remove(task.identifier());
     94    removeTaskFromPageMap(task.pageID(), task.identifier());
    10395
    10496    platformTaskCompleted(task);
    10597}
    10698
     99void WebURLSchemeHandler::removeTaskFromPageMap(uint64_t pageID, uint64_t taskID)
     100{
     101    auto iterator = m_tasksByPageIdentifier.find(pageID);
     102    ASSERT(iterator != m_tasksByPageIdentifier.end());
     103    ASSERT(iterator->value.contains(taskID));
     104    iterator->value.remove(taskID);
     105    if (iterator->value.isEmpty())
     106        m_tasksByPageIdentifier.remove(iterator);
     107}
     108
    107109} // namespace WebKit
  • branches/safari-604-branch/Source/WebKit/UIProcess/WebURLSchemeHandler.h

    r220062 r220064  
    6060    virtual void platformTaskCompleted(WebURLSchemeTask&) = 0;
    6161
     62    void removeTaskFromPageMap(uint64_t pageID, uint64_t taskID);
     63
    6264    uint64_t m_identifier;
    6365
  • branches/safari-604-branch/Tools/ChangeLog

    r220030 r220064  
     12017-07-31  Jason Marcell  <jmarcell@apple.com>
     2
     3        Cherry-pick r220033. rdar://problem/33619596
     4
     5    2017-07-28  Brady Eidson  <beidson@apple.com>
     6
     7            API tests that use URLSchemeHandler are failing.
     8            https://bugs.webkit.org/show_bug.cgi?id=174950
     9
     10            Reviewed by Alex Christensen.
     11
     12            Fix the NoMIMEType test to be correct.
     13
     14            * TestWebKitAPI/Tests/WebKit2Cocoa/WKURLSchemeHandler-1.mm:
     15            (-[SchemeHandler initWithData:mimeType:]):
     16            (-[SchemeHandler webView:startURLSchemeTask:]):
     17            (TEST):
     18
    1192017-07-28  Jason Marcell  <jmarcell@apple.com>
    220
  • branches/safari-604-branch/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKURLSchemeHandler-1.mm

    r218810 r220064  
    4242@property (readonly) NSMutableArray<NSURL *> *startedURLs;
    4343@property (readonly) NSMutableArray<NSURL *> *stoppedURLs;
     44@property (assign) BOOL shouldFinish;
    4445- (instancetype)initWithData:(NSData *)data mimeType:(NSString *)inMIMEType;
    4546@end
    … …  
    6061    _startedURLs = [[NSMutableArray alloc] init];
    6162    _stoppedURLs = [[NSMutableArray alloc] init];
     63    _shouldFinish = YES;
    6264
    6365    return self;
    … …  
    8587    [task didReceiveResponse:response.get()];
    8688    [task didReceiveData:resourceData.get()];
    87     [task didFinish];
     89    if (_shouldFinish)
     90        [task didFinish];
    8891}
    8992
    … …  
    134137
    135138    RetainPtr<SchemeHandler> handler = adoptNS([[SchemeHandler alloc] initWithData:[NSData dataWithBytesNoCopy:(void*)mainBytes length:sizeof(mainBytes) freeWhenDone:NO] mimeType:nil]);
     139    handler.get().shouldFinish = NO;
    136140    [configuration setURLSchemeHandler:handler.get() forURLScheme:@"testing"];
    137141
Note: See TracChangeset for help on using the changeset viewer.