Changeset 220033 in webkit


Ignore:
Timestamp:
Jul 28, 2017 4:19:50 PM (7 years ago)
Author:
beidson@apple.com
Message:

API tests that use URLSchemeHandler are failing.
https://bugs.webkit.org/show_bug.cgi?id=174950

Reviewed by Alex Christensen.

Source/WebKit:

Make sure that in all cases where we remove the last task from the page->task map...
...We also remove the map itself.

  • UIProcess/WebURLSchemeHandler.cpp:

(WebKit::WebURLSchemeHandler::stopTask):
(WebKit::WebURLSchemeHandler::taskCompleted):
(WebKit::WebURLSchemeHandler::removeTaskFromPageMap):

  • UIProcess/WebURLSchemeHandler.h:

Tools:

Fix the NoMIMEType test to be correct.

  • TestWebKitAPI/Tests/WebKit2Cocoa/WKURLSchemeHandler-1.mm:

(-[SchemeHandler initWithData:mimeType:]):
(-[SchemeHandler webView:startURLSchemeTask:]):
(TEST):

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r220011 r220033  
     12017-07-28  Brady Eidson  <beidson@apple.com>
     2
     3        API tests that use URLSchemeHandler are failing.
     4        https://bugs.webkit.org/show_bug.cgi?id=174950
     5
     6        Reviewed by Alex Christensen.
     7
     8        Make sure that in all cases where we remove the last task from the page->task map...
     9        ...We also remove the map itself.
     10
     11        * UIProcess/WebURLSchemeHandler.cpp:
     12        (WebKit::WebURLSchemeHandler::stopTask):
     13        (WebKit::WebURLSchemeHandler::taskCompleted):
     14        (WebKit::WebURLSchemeHandler::removeTaskFromPageMap):
     15        * UIProcess/WebURLSchemeHandler.h:
     16
    1172017-07-28  Brady Eidson  <beidson@apple.com>
    218
  • trunk/Source/WebKit/UIProcess/WebURLSchemeHandler.cpp

    r220011 r220033  
    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
  • trunk/Source/WebKit/UIProcess/WebURLSchemeHandler.h

    r220011 r220033  
    6060    virtual void platformTaskCompleted(WebURLSchemeTask&) = 0;
    6161
     62    void removeTaskFromPageMap(uint64_t pageID, uint64_t taskID);
     63
    6264    uint64_t m_identifier;
    6365
  • trunk/Tools/ChangeLog

    r220032 r220033  
     12017-07-28  Brady Eidson  <beidson@apple.com>
     2
     3        API tests that use URLSchemeHandler are failing.
     4        https://bugs.webkit.org/show_bug.cgi?id=174950
     5
     6        Reviewed by Alex Christensen.
     7
     8        Fix the NoMIMEType test to be correct.
     9
     10        * TestWebKitAPI/Tests/WebKit2Cocoa/WKURLSchemeHandler-1.mm:
     11        (-[SchemeHandler initWithData:mimeType:]):
     12        (-[SchemeHandler webView:startURLSchemeTask:]):
     13        (TEST):
     14
    1152017-07-28  Daniel Bates  <dabates@apple.com>
    216
  • trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKURLSchemeHandler-1.mm

    r218810 r220033  
    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.