Title: [228181] branches/safari-605-branch

Diff

Modified: branches/safari-605-branch/LayoutTests/ChangeLog (228180 => 228181)


--- branches/safari-605-branch/LayoutTests/ChangeLog	2018-02-06 18:43:50 UTC (rev 228180)
+++ branches/safari-605-branch/LayoutTests/ChangeLog	2018-02-06 18:43:55 UTC (rev 228181)
@@ -1,5 +1,19 @@
 2018-02-06  Jason Marcell  <[email protected]>
 
+        Cherry-pick r228150. rdar://problem/37264467
+
+    2018-02-05  Youenn Fablet  <[email protected]>
+
+            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-06  Jason Marcell  <[email protected]>
+
         Cherry-pick r228147. rdar://problem/37264529
 
     2018-02-05  Myles C. Maxfield  <[email protected]>

Modified: branches/safari-605-branch/LayoutTests/platform/mac/TestExpectations (228180 => 228181)


--- branches/safari-605-branch/LayoutTests/platform/mac/TestExpectations	2018-02-06 18:43:50 UTC (rev 228180)
+++ branches/safari-605-branch/LayoutTests/platform/mac/TestExpectations	2018-02-06 18:43:55 UTC (rev 228181)
@@ -1767,3 +1767,4 @@
 fast/css/read-only-read-write-input-basics.html [ Skip ]
 fast/forms/color/input-appearance-color.html [ Skip ]
 inspector/canvas/requestContent-webgl2.html [ Skip ]
+webkit.org/b/182422 imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub.html [ Pass Failure ]

Modified: branches/safari-605-branch/Source/WebCore/ChangeLog (228180 => 228181)


--- branches/safari-605-branch/Source/WebCore/ChangeLog	2018-02-06 18:43:50 UTC (rev 228180)
+++ branches/safari-605-branch/Source/WebCore/ChangeLog	2018-02-06 18:43:55 UTC (rev 228181)
@@ -1,5 +1,23 @@
 2018-02-06  Jason Marcell  <[email protected]>
 
+        Cherry-pick r228150. rdar://problem/37264467
+
+    2018-02-05  Youenn Fablet  <[email protected]>
+
+            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-06  Jason Marcell  <[email protected]>
+
         Cherry-pick r228151. rdar://problem/37264535
 
     2018-02-05  Ryosuke Niwa  <[email protected]>

Modified: branches/safari-605-branch/Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm (228180 => 228181)


--- branches/safari-605-branch/Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm	2018-02-06 18:43:50 UTC (rev 228180)
+++ branches/safari-605-branch/Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm	2018-02-06 18:43:55 UTC (rev 228181)
@@ -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
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to