Changeset 234735 in webkit
- Timestamp:
- Aug 9, 2018, 2:43:48 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r234730 r234735 1 2018-08-09 Alex Christensen <[email protected]> 2 3 WKURLSchemeHandler crashes when sent errors with sync XHR 4 https://bugs.webkit.org/show_bug.cgi?id=188358 5 6 Reviewed by Chris Dumez. 7 8 * UIProcess/WebURLSchemeTask.cpp: 9 (WebKit::WebURLSchemeTask::didReceiveData): 10 (WebKit::WebURLSchemeTask::didComplete): 11 * UIProcess/WebURLSchemeTask.h: 12 1 13 2018-08-09 Sihui Liu <[email protected]> 2 14 -
trunk/Source/WebKit/UIProcess/WebURLSchemeTask.cpp
r233113 r234735 97 97 } 98 98 99 auto WebURLSchemeTask::didReceiveData(Ref<SharedBuffer> buffer) -> ExceptionType99 auto WebURLSchemeTask::didReceiveData(Ref<SharedBuffer>&& buffer) -> ExceptionType 100 100 { 101 101 if (m_stopped) … … 111 111 112 112 if (isSync()) { 113 if (!m_syncData) 114 m_syncData = SharedBuffer::create(); 115 m_syncData->append(buffer); 113 if (m_syncData) 114 m_syncData->append(buffer); 115 else 116 m_syncData = WTFMove(buffer); 116 117 } 117 118 … … 134 135 135 136 if (isSync()) { 136 m_syncCompletionHandler(m_syncResponse, error, IPC::DataReference { (const uint8_t*)m_syncData->data(), m_syncData->size() }); 137 IPC::DataReference data; 138 if (m_syncData) 139 data = { reinterpret_cast<const uint8_t*>(m_syncData->data()), m_syncData->size() }; 140 m_syncCompletionHandler(m_syncResponse, error, data); 137 141 m_syncData = nullptr; 138 142 } -
trunk/Source/WebKit/UIProcess/WebURLSchemeTask.h
r233113 r234735 71 71 ExceptionType didPerformRedirection(WebCore::ResourceResponse&&, WebCore::ResourceRequest&&); 72 72 ExceptionType didReceiveResponse(const WebCore::ResourceResponse&); 73 ExceptionType didReceiveData(Ref<WebCore::SharedBuffer> );73 ExceptionType didReceiveData(Ref<WebCore::SharedBuffer>&&); 74 74 ExceptionType didComplete(const WebCore::ResourceError&); 75 75 -
trunk/Tools/ChangeLog
r234734 r234735 1 2018-08-09 Alex Christensen <[email protected]> 2 3 WKURLSchemeHandler crashes when sent errors with sync XHR 4 https://bugs.webkit.org/show_bug.cgi?id=188358 5 6 Reviewed by Chris Dumez. 7 8 * TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm: 9 (-[SyncErrorScheme webView:startURLSchemeTask:]): 10 (-[SyncErrorScheme webView:stopURLSchemeTask:]): 11 (-[SyncErrorScheme webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]): 12 1 13 2018-08-09 Per Arne Vollan <[email protected]> 2 14 -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm
r233113 r234735 539 539 } 540 540 541 @interface SyncErrorScheme : NSObject <WKURLSchemeHandler, WKUIDelegate> 542 @end 543 544 @implementation SyncErrorScheme 545 546 - (void)webView:(WKWebView *)webView startURLSchemeTask:(id <WKURLSchemeTask>)task 547 { 548 if ([task.request.URL.absoluteString isEqualToString:@"syncerror:///main.html"]) { 549 static const char* bytes = "<script>var xhr=new XMLHttpRequest();xhr.open('GET','https://trac.webkit.org/subresource',false);try{xhr.send(null);alert('no error')}catch(e){alert(e)}</script>"; 550 [task didReceiveResponse:[[[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@"text/html" expectedContentLength:strlen(bytes) textEncodingName:nil] autorelease]]; 551 [task didReceiveData:[NSData dataWithBytes:bytes length:strlen(bytes)]]; 552 [task didFinish]; 553 } else { 554 EXPECT_STREQ(task.request.URL.absoluteString.UTF8String, "syncerror:///subresource"); 555 [task didReceiveResponse:[[[NSURLResponse alloc] init] autorelease]]; 556 [task didFailWithError:[NSError errorWithDomain:@"TestErrorDomain" code:123 userInfo:nil]]; 557 } 558 } 559 560 - (void)webView:(WKWebView *)webView stopURLSchemeTask:(id <WKURLSchemeTask>)task 561 { 562 } 563 564 - (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler 565 { 566 EXPECT_STREQ(message.UTF8String, "NetworkError: A network error occurred."); 567 completionHandler(); 568 done = true; 569 } 570 571 @end 572 573 TEST(URLSchemeHandler, SyncXHRError) 574 { 575 auto webViewConfiguration = adoptNS([[WKWebViewConfiguration alloc] init]); 576 auto handler = adoptNS([[SyncErrorScheme alloc] init]); 577 [webViewConfiguration setURLSchemeHandler:handler.get() forURLScheme:@"syncerror"]; 578 auto webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:webViewConfiguration.get()]); 579 [webView setUIDelegate:handler.get()]; 580 [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"syncerror:///main.html"]]]; 581 TestWebKitAPI::Util::run(&done); 582 } 583 584 541 585 #endif // WK_API_ENABLED 542 586
Note:
See TracChangeset
for help on using the changeset viewer.