Changeset 228150 in webkit


Ignore:
Timestamp:
Feb 5, 2018 7:57:32 PM (6 years ago)
Author:
commit-queue@webkit.org
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 <youenn@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:
Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r228147 r228150  
     12018-02-05  Youenn Fablet  <youenn@apple.com>
     2
     3        Crash in imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub.html
     4        https://bugs.webkit.org/show_bug.cgi?id=182422
     5        <rdar://problem/37182665>
     6
     7        Reviewed by Alex Christensen.
     8
     9        * platform/mac/TestExpectations:
     10
    1112018-02-05  Myles C. Maxfield  <mmaxfield@apple.com>
    212
  • trunk/LayoutTests/platform/mac/TestExpectations

    r228104 r228150  
    17411741
    17421742webkit.org/b/182422 imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage.html [ Pass Failure ]
    1743 webkit.org/b/182422 imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub.html [ Skip ]
     1743webkit.org/b/182422 imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub.html [ Pass Failure ]
  • trunk/Source/WebCore/ChangeLog

    r228149 r228150  
     12018-02-05  Youenn Fablet  <youenn@apple.com>
     2
     3        Crash in imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub.html
     4        https://bugs.webkit.org/show_bug.cgi?id=182422
     5        <rdar://problem/37182665>
     6
     7        Reviewed by Alex Christensen.
     8
     9        Covered by test no longer crashing in Debug mode.
     10        Make sure completionHandler is called on the main thread.
     11
     12        * platform/network/cocoa/WebCoreNSURLSession.mm:
     13        (-[WebCoreNSURLSessionDataTask resource:receivedRedirect:request:completionHandler:]):
     14
    1152018-02-05  Filip Pizlo  <fpizlo@apple.com>
    216
  • trunk/Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm

    r224960 r228150  
    390390void WebCoreNSURLSessionDataTaskClient::redirectReceived(PlatformMediaResource& resource, ResourceRequest&& request, const ResourceResponse& response, CompletionHandler<void(ResourceRequest&&)>&& completionHandler)
    391391{
    392     [m_task resource:resource receivedRedirect:response request:WTFMove(request) completionHandler:WTFMove(completionHandler)];
     392    [m_task resource:resource receivedRedirect:response request:WTFMove(request) completionHandler: [completionHandler = WTFMove(completionHandler)] (auto&& request) {
     393        ASSERT(isMainThread());
     394        completionHandler(WTFMove(request));
     395    }];
    393396}
    394397
     
    619622{
    620623    ASSERT_UNUSED(resource, &resource == _resource);
    621     [self.session addDelegateOperation:[strongSelf = retainPtr(self), response = retainPtr(response.nsURLResponse()), request = WTFMove(request), completionHandler = WTFMove(completionHandler)] () mutable {
     624    [self.session addDelegateOperation:[strongSelf = retainPtr(self), response = retainPtr(response.nsURLResponse()), request = request.isolatedCopy(), completionHandler = WTFMove(completionHandler)] () mutable {
    622625        if (![response isKindOfClass:[NSHTTPURLResponse class]]) {
    623626            ASSERT_NOT_REACHED();
    624             return completionHandler(WTFMove(request));
     627            callOnMainThread([request = WTFMove(request), completionHandler = WTFMove(completionHandler)] () mutable {
     628                completionHandler(WTFMove(request));
     629            });
     630            return;
    625631        }
    626632       
     
    628634        if ([dataDelegate respondsToSelector:@selector(URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:)]) {
    629635            auto completionHandlerBlock = BlockPtr<void(NSURLRequest *)>::fromCallable([completionHandler = WTFMove(completionHandler)](NSURLRequest *newRequest) mutable {
     636                if (!isMainThread()) {
     637                    callOnMainThread([request = ResourceRequest { newRequest }, completionHandler = WTFMove(completionHandler)] () mutable {
     638                        completionHandler(WTFMove(request));
     639                    });
     640                    return;
     641                }
    630642                completionHandler(newRequest);
    631643            });
    632644            [dataDelegate URLSession:(NSURLSession *)strongSelf.get().session task:(NSURLSessionTask *)strongSelf.get() willPerformHTTPRedirection:(NSHTTPURLResponse *)response.get() newRequest:request.nsURLRequest(DoNotUpdateHTTPBody) completionHandler:completionHandlerBlock.get()];
    633         } else
    634             completionHandler(WTFMove(request));
     645        } else {
     646            callOnMainThread([request = WTFMove(request), completionHandler = WTFMove(completionHandler)] () mutable {
     647                completionHandler(WTFMove(request));
     648            });
     649        }
    635650    }];
    636651}
Note: See TracChangeset for help on using the changeset viewer.