Title: [228150] trunk
- Revision
- 228150
- Author
- commit-qu...@webkit.org
- Date
- 2018-02-05 19:57:32 -0800 (Mon, 05 Feb 2018)
Log Message
Crash in imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub.html
https://bugs.webkit.org/show_bug.cgi?id=182422
<rdar://problem/37182665>
Patch by Youenn Fablet <you...@apple.com> on 2018-02-05
Reviewed by Alex Christensen.
Source/WebCore:
Covered by test no longer crashing in Debug mode.
Make sure completionHandler is called on the main thread.
* platform/network/cocoa/WebCoreNSURLSession.mm:
(-[WebCoreNSURLSessionDataTask resource:receivedRedirect:request:completionHandler:]):
LayoutTests:
* platform/mac/TestExpectations:
Modified Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (228149 => 228150)
--- trunk/LayoutTests/ChangeLog 2018-02-06 03:50:30 UTC (rev 228149)
+++ trunk/LayoutTests/ChangeLog 2018-02-06 03:57:32 UTC (rev 228150)
@@ -1,3 +1,13 @@
+2018-02-05 Youenn Fablet <you...@apple.com>
+
+ Crash in imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub.html
+ https://bugs.webkit.org/show_bug.cgi?id=182422
+ <rdar://problem/37182665>
+
+ Reviewed by Alex Christensen.
+
+ * platform/mac/TestExpectations:
+
2018-02-05 Myles C. Maxfield <mmaxfi...@apple.com>
Test gardening after r228044
Modified: trunk/LayoutTests/platform/mac/TestExpectations (228149 => 228150)
--- trunk/LayoutTests/platform/mac/TestExpectations 2018-02-06 03:50:30 UTC (rev 228149)
+++ trunk/LayoutTests/platform/mac/TestExpectations 2018-02-06 03:57:32 UTC (rev 228150)
@@ -1740,4 +1740,4 @@
webkit.org/b/181831 [ HighSierra+ ] fast/forms/searchfield-heights.html [ Pass Failure ]
webkit.org/b/182422 imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage.html [ Pass Failure ]
-webkit.org/b/182422 imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub.html [ Skip ]
+webkit.org/b/182422 imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub.html [ Pass Failure ]
Modified: trunk/Source/WebCore/ChangeLog (228149 => 228150)
--- trunk/Source/WebCore/ChangeLog 2018-02-06 03:50:30 UTC (rev 228149)
+++ trunk/Source/WebCore/ChangeLog 2018-02-06 03:57:32 UTC (rev 228150)
@@ -1,3 +1,17 @@
+2018-02-05 Youenn Fablet <you...@apple.com>
+
+ Crash in imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub.html
+ https://bugs.webkit.org/show_bug.cgi?id=182422
+ <rdar://problem/37182665>
+
+ Reviewed by Alex Christensen.
+
+ Covered by test no longer crashing in Debug mode.
+ Make sure completionHandler is called on the main thread.
+
+ * platform/network/cocoa/WebCoreNSURLSession.mm:
+ (-[WebCoreNSURLSessionDataTask resource:receivedRedirect:request:completionHandler:]):
+
2018-02-05 Filip Pizlo <fpi...@apple.com>
Global objects should be able to use TLCs to allocate from different blocks from each other
Modified: trunk/Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm (228149 => 228150)
--- trunk/Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm 2018-02-06 03:50:30 UTC (rev 228149)
+++ trunk/Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm 2018-02-06 03:57:32 UTC (rev 228150)
@@ -389,7 +389,10 @@
void WebCoreNSURLSessionDataTaskClient::redirectReceived(PlatformMediaResource& resource, ResourceRequest&& request, const ResourceResponse& response, CompletionHandler<void(ResourceRequest&&)>&& completionHandler)
{
- [m_task resource:resource receivedRedirect:response request:WTFMove(request) completionHandler:WTFMove(completionHandler)];
+ [m_task resource:resource receivedRedirect:response request:WTFMove(request) completionHandler: [completionHandler = WTFMove(completionHandler)] (auto&& request) {
+ ASSERT(isMainThread());
+ completionHandler(WTFMove(request));
+ }];
}
void WebCoreNSURLSessionDataTaskClient::accessControlCheckFailed(PlatformMediaResource& resource, const ResourceError& error)
@@ -618,20 +621,32 @@
- (void)resource:(PlatformMediaResource&)resource receivedRedirect:(const ResourceResponse&)response request:(ResourceRequest&&)request completionHandler:(CompletionHandler<void(ResourceRequest&&)>&&)completionHandler
{
ASSERT_UNUSED(resource, &resource == _resource);
- [self.session addDelegateOperation:[strongSelf = retainPtr(self), response = retainPtr(response.nsURLResponse()), request = WTFMove(request), completionHandler = WTFMove(completionHandler)] () mutable {
+ [self.session addDelegateOperation:[strongSelf = retainPtr(self), response = retainPtr(response.nsURLResponse()), request = request.isolatedCopy(), completionHandler = WTFMove(completionHandler)] () mutable {
if (![response isKindOfClass:[NSHTTPURLResponse class]]) {
ASSERT_NOT_REACHED();
- return completionHandler(WTFMove(request));
+ callOnMainThread([request = WTFMove(request), completionHandler = WTFMove(completionHandler)] () mutable {
+ completionHandler(WTFMove(request));
+ });
+ return;
}
id<NSURLSessionDataDelegate> dataDelegate = (id<NSURLSessionDataDelegate>)strongSelf.get().session.delegate;
if ([dataDelegate respondsToSelector:@selector(URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:)]) {
auto completionHandlerBlock = BlockPtr<void(NSURLRequest *)>::fromCallable([completionHandler = WTFMove(completionHandler)](NSURLRequest *newRequest) mutable {
+ if (!isMainThread()) {
+ callOnMainThread([request = ResourceRequest { newRequest }, completionHandler = WTFMove(completionHandler)] () mutable {
+ completionHandler(WTFMove(request));
+ });
+ return;
+ }
completionHandler(newRequest);
});
[dataDelegate URLSession:(NSURLSession *)strongSelf.get().session task:(NSURLSessionTask *)strongSelf.get() willPerformHTTPRedirection:(NSHTTPURLResponse *)response.get() newRequest:request.nsURLRequest(DoNotUpdateHTTPBody) completionHandler:completionHandlerBlock.get()];
- } else
- completionHandler(WTFMove(request));
+ } else {
+ callOnMainThread([request = WTFMove(request), completionHandler = WTFMove(completionHandler)] () mutable {
+ completionHandler(WTFMove(request));
+ });
+ }
}];
}
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes