Changeset 204020 in webkit


Ignore:
Timestamp:
Aug 2, 2016 1:07:28 AM (8 years ago)
Author:
commit-queue@webkit.org
Message:

[Fetch API] Fetch promises should not reject or resolve when ActiveDOMObjects are being stopped
https://bugs.webkit.org/show_bug.cgi?id=160420

Patch by Youenn Fablet <youenn@apple.com> on 2016-08-02
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/fetch/api/cors/cors-preflight-redirect-worker-expected.txt: Added.
  • web-platform-tests/fetch/nosniff/worker-expected.txt: Added.

Source/WebCore:

Test: http/tests/fetch/fetch-in-worker-crash.html

Promises should not be rejected when FetchResponse/FetchRequest are stopped as ActiveDOMObject.

  • Modules/fetch/FetchBody.h:

(WebCore::FetchBody::cleanConsumePromise): Allowing to nullify the promise used to consume body.

  • Modules/fetch/FetchBodyOwner.cpp:

(WebCore::FetchBodyOwner::stop): Nullifying the body consume promise if any.

  • Modules/fetch/FetchResponse.cpp:

(WebCore::FetchResponse::BodyLoader::stop): Nullifying the fetch promise if any.

LayoutTests:

  • TestExpectations:
  • http/tests/fetch/fetch-in-worker-crash-expected.txt: Added.
  • http/tests/fetch/fetch-in-worker-crash.html: Added.
  • http/tests/fetch/fetch-in-worker.js: Added.

(onmessage):

  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-worker-expected.txt:
Location:
trunk
Files:
5 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r204005 r204020  
     12016-08-02  Youenn Fablet  <youenn@apple.com>
     2
     3        [Fetch API] Fetch promises should not reject or resolve when ActiveDOMObjects are being stopped
     4        https://bugs.webkit.org/show_bug.cgi?id=160420
     5
     6        Reviewed by Alex Christensen.
     7
     8        * TestExpectations:
     9        * http/tests/fetch/fetch-in-worker-crash-expected.txt: Added.
     10        * http/tests/fetch/fetch-in-worker-crash.html: Added.
     11        * http/tests/fetch/fetch-in-worker.js: Added.
     12        (onmessage):
     13        * platform/ios-simulator-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-worker-expected.txt:
     14
    1152016-08-01  Tim Horton  <timothy_horton@apple.com>
    216
  • trunk/LayoutTests/TestExpectations

    r204005 r204020  
    338338# Failing assertion with dynamic message
    339339imported/w3c/web-platform-tests/XMLHttpRequest/responsexml-document-properties.htm [ Failure ]
    340 # Fetch Worker tests skipped until bug 156737 is resolved
    341 imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-worker.html [ Skip ]
    342 imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies-worker.html [ Skip ]
    343 imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering-worker.html [ Skip ]
    344 imported/w3c/web-platform-tests/fetch/api/cors/cors-multiple-origins-worker.html [ Skip ]
    345 imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight-worker.html [ Skip ]
    346 imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-worker.html [ Skip ]
    347 imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect-worker.html [ Skip ]
    348 imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer-worker.html [ Skip ]
    349 imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status-worker.html [ Skip ]
    350 imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-worker.html [ Skip ]
    351 imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials-worker.html [ Skip ]
    352 imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-worker.html [ Skip ]
    353 imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic-worker.html [ Skip ]
    354 imported/w3c/web-platform-tests/fetch/api/credentials/cookies-worker.html [ Skip ]
    355 imported/w3c/web-platform-tests/fetch/api/policies/csp-blocked-worker.html [ Skip ]
    356 imported/w3c/web-platform-tests/fetch/api/policies/referrer-no-referrer-worker.html [ Skip ]
    357 imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-worker.html [ Skip ]
    358 imported/w3c/web-platform-tests/fetch/api/policies/referrer-unsafe-url-worker.html [ Skip ]
    359 imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-worker.html [ Skip ]
    360 imported/w3c/web-platform-tests/fetch/api/redirect/redirect-location-worker.html [ Skip ]
    361 imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method-worker.html [ Skip ]
    362 imported/w3c/web-platform-tests/fetch/api/redirect/redirect-mode-worker.html [ Skip ]
    363 imported/w3c/web-platform-tests/fetch/nosniff/worker.html [ Skip ]
     340
     341imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies-worker.html [ Crash Failure Pass ]
     342[ Debug ] imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-worker.html [ Crash Pass ]
     343imported/w3c/web-platform-tests/fetch/api/request/request-cache.html [ Skip ]
    364344
    365345webkit.org/b/157068 imported/w3c/web-platform-tests/fetch/nosniff/importscripts.html [ Skip ]
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r204019 r204020  
     12016-08-02  Youenn Fablet  <youenn@apple.com>
     2
     3        [Fetch API] Fetch promises should not reject or resolve when ActiveDOMObjects are being stopped
     4        https://bugs.webkit.org/show_bug.cgi?id=160420
     5
     6        Reviewed by Alex Christensen.
     7
     8        * web-platform-tests/fetch/api/cors/cors-preflight-redirect-worker-expected.txt: Added.
     9        * web-platform-tests/fetch/nosniff/worker-expected.txt: Added.
     10
    1112016-08-02  Youenn Fablet  <youenn@apple.com>
    212
  • trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-worker-expected.txt

    r203732 r204020  
    11
    2 FAIL Same domain different port [no-cors mode] assert_equals: Opaque filter: status is 0 expected 0 but got 200
     2PASS Same domain different port [no-cors mode]
    33PASS Same domain different port [server forbid CORS]
    4 FAIL Same domain different port [cors mode] assert_equals: CORS response's type is cors expected "cors" but got "basic"
     4PASS Same domain different port [cors mode]
    55FAIL Same domain different protocol different port [no-cors mode] promise_test: Unhandled rejection with value: object "TypeError: Type error"
    66PASS Same domain different protocol different port [server forbid CORS]
    77FAIL Same domain different protocol different port [cors mode] promise_test: Unhandled rejection with value: object "TypeError: Type error"
    8 FAIL Cross domain basic usage [no-cors mode] assert_equals: Opaque filter: status is 0 expected 0 but got 200
     8PASS Cross domain basic usage [no-cors mode]
    99PASS Cross domain basic usage [server forbid CORS]
    10 FAIL Cross domain basic usage [cors mode] assert_equals: CORS response's type is cors expected "cors" but got "basic"
    11 FAIL Cross domain different port [no-cors mode] assert_equals: Opaque filter: status is 0 expected 0 but got 200
     10PASS Cross domain basic usage [cors mode]
     11PASS Cross domain different port [no-cors mode]
    1212PASS Cross domain different port [server forbid CORS]
    13 FAIL Cross domain different port [cors mode] assert_equals: CORS response's type is cors expected "cors" but got "basic"
     13PASS Cross domain different port [cors mode]
    1414FAIL Cross domain different protocol [no-cors mode] promise_test: Unhandled rejection with value: object "TypeError: Type error"
    1515PASS Cross domain different protocol [server forbid CORS]
  • trunk/Source/WebCore/ChangeLog

    r204019 r204020  
     12016-08-02  Youenn Fablet  <youenn@apple.com>
     2
     3        [Fetch API] Fetch promises should not reject or resolve when ActiveDOMObjects are being stopped
     4        https://bugs.webkit.org/show_bug.cgi?id=160420
     5
     6        Reviewed by Alex Christensen.
     7
     8        Test: http/tests/fetch/fetch-in-worker-crash.html
     9
     10        Promises should not be rejected when FetchResponse/FetchRequest are stopped as ActiveDOMObject.
     11
     12        * Modules/fetch/FetchBody.h:
     13        (WebCore::FetchBody::cleanConsumePromise): Allowing to nullify the promise used to consume body.
     14        * Modules/fetch/FetchBodyOwner.cpp:
     15        (WebCore::FetchBodyOwner::stop): Nullifying the body consume promise if any.
     16        * Modules/fetch/FetchResponse.cpp:
     17        (WebCore::FetchResponse::BodyLoader::stop): Nullifying the fetch promise if any.
     18
    1192016-08-02  Youenn Fablet  <youenn@apple.com>
    220
  • trunk/Source/WebCore/Modules/fetch/FetchBody.h

    r203767 r204020  
    8181    FetchBodyConsumer& consumer() { return m_consumer; }
    8282
     83    void cleanConsumePromise() { m_consumePromise = Nullopt; }
     84
    8385private:
    8486    FetchBody(Ref<Blob>&&);
  • trunk/Source/WebCore/Modules/fetch/FetchBodyOwner.cpp

    r203767 r204020  
    4949void FetchBodyOwner::stop()
    5050{
     51    m_body.cleanConsumePromise();
     52
    5153    if (m_blobLoader) {
    5254        if (m_blobLoader->loader)
  • trunk/Source/WebCore/Modules/fetch/FetchResponse.cpp

    r203767 r204020  
    198198void FetchResponse::BodyLoader::stop()
    199199{
     200    m_promise = Nullopt;
    200201    if (m_loader)
    201202        m_loader->stop();
Note: See TracChangeset for help on using the changeset viewer.