Changeset 232739 in webkit
- Timestamp:
- Jun 11, 2018 7:37:17 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r232737 r232739 1 2018-06-11 Youenn Fablet <youenn@apple.com> 2 3 Improve error messages in case FetchEvent.respondWith has a rejected promise 4 https://bugs.webkit.org/show_bug.cgi?id=186368 5 6 Reviewed by Chris Dumez. 7 8 * TestExpectations: 9 * http/tests/workers/service/basic-fetch.https-expected.txt: 10 1 11 2018-06-11 Chris Dumez <cdumez@apple.com> 2 12 -
trunk/LayoutTests/TestExpectations
r232699 r232739 219 219 imported/w3c/web-platform-tests/service-workers/service-worker/register-closed-window.https.html [ DumpJSConsoleLogInStdErr ] 220 220 imported/w3c/web-platform-tests/service-workers/service-worker/registration-security-error.https.html [ DumpJSConsoleLogInStdErr ] 221 imported/w3c/web-platform-tests/service-workers/service-worker/fetch-request-css-images.https.html [ DumpJSConsoleLogInStdErr ] 221 222 imported/w3c/web-platform-tests/service-workers/service-worker/fetch-request-redirect.https.html [ DumpJSConsoleLogInStdErr Slow ] 223 imported/w3c/web-platform-tests/service-workers/service-worker/fetch-request-resources.https.html [ DumpJSConsoleLogInStdErr ] 222 224 [ Debug ] imported/w3c/web-platform-tests/service-workers/service-worker/clients-matchall-order.https.html [ Slow ] 223 225 [ Debug ] imported/w3c/web-platform-tests/service-workers/service-worker/getregistrations.https.html [ Slow ] -
trunk/LayoutTests/http/tests/workers/service/basic-fetch.https-expected.txt
r232484 r232739 1 CONSOLE MESSAGE: Fetch event was canceled 1 2 CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:8443/workers/service/resources/test5. 2 3 -
trunk/LayoutTests/imported/w3c/ChangeLog
r232641 r232739 1 2018-06-11 Youenn Fablet <youenn@apple.com> 2 3 Improve error messages in case FetchEvent.respondWith has a rejected promise 4 https://bugs.webkit.org/show_bug.cgi?id=186368 5 6 Reviewed by Chris Dumez. 7 8 * web-platform-tests/service-workers/service-worker/fetch-event-network-error.https-expected.txt: 9 * web-platform-tests/service-workers/service-worker/fetch-event-redirect.https-expected.txt: 10 * web-platform-tests/service-workers/service-worker/fetch-event-respond-with-argument.https-expected.txt: 11 * web-platform-tests/service-workers/service-worker/fetch-event-respond-with-response-body-with-invalid-chunk.https-expected.txt: 12 * web-platform-tests/service-workers/service-worker/fetch-frame-resource.https-expected.txt: 13 * web-platform-tests/service-workers/service-worker/fetch-mixed-content-to-inscope.https-expected.txt: 14 * web-platform-tests/service-workers/service-worker/fetch-mixed-content-to-outscope.https-expected.txt: 15 * web-platform-tests/service-workers/service-worker/fetch-request-css-images.https-expected.txt: 16 * web-platform-tests/service-workers/service-worker/fetch-request-resources.https-expected.txt: 17 * web-platform-tests/service-workers/service-worker/invalid-header.https-expected.txt: 18 * web-platform-tests/service-workers/service-worker/update-recovery.https-expected.txt: 19 1 20 2018-06-08 Brendan McLoughlin <brendan@bocoup.com> 2 21 -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-network-error.https-expected.txt
r232484 r232739 1 CONSOLE MESSAGE: Fetch event was canceled 1 2 CONSOLE MESSAGE: XMLHttpRequest cannot load https://localhost:9443/service-workers/service-worker/resources/fetch-event-network-error-controllee-iframe.html?prevent-default. 3 CONSOLE MESSAGE: FetchEvent.respondWith received an error: undefined 4 CONSOLE MESSAGE: XMLHttpRequest cannot load https://localhost:9443/service-workers/service-worker/resources/fetch-event-network-error-controllee-iframe.html?reject. 5 CONSOLE MESSAGE: FetchEvent.respondWith received an error: Response is disturbed or locked. 6 CONSOLE MESSAGE: XMLHttpRequest cannot load https://localhost:9443/service-workers/service-worker/resources/fetch-event-network-error-controllee-iframe.html?used-body. 7 CONSOLE MESSAGE: FetchEvent.respondWith received an error: Response is disturbed or locked. 8 CONSOLE MESSAGE: XMLHttpRequest cannot load https://localhost:9443/service-workers/service-worker/resources/fetch-event-network-error-controllee-iframe.html?used-fetched-body. 2 9 3 10 PASS Rejecting the fetch event or using preventDefault() causes a network error -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-redirect.https-expected.txt
r231000 r232739 2 2 CONSOLE MESSAGE: line 51: Not allowed to request resource 3 3 CONSOLE MESSAGE: line 51: Fetch API cannot load https://localhost:9443/nonav-manual-nocors-redirects-to-sameorigin-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Flocalhost%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py&expected_type=opaqueredirect due to access control checks. 4 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin. 5 CONSOLE MESSAGE: Fetch API cannot load https://localhost:9443/nonav-follow-cors-redirects-to-nocors-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252F127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py. 6 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Unsafe attempt to load URL https://127.0.0.1:9443/service-workers/service-worker/resources/success.py from origin https://localhost:9443. Domains, protocols and ports must match. 7 8 CONSOLE MESSAGE: Fetch API cannot load https://localhost:9443/nonav-follow-sameorigin-redirects-to-nocors-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252F127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py. 9 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Unsafe attempt to load URL https://127.0.0.1:9443/service-workers/service-worker/resources/success.py?ACAOrigin=https%3A%2F%2Flocalhost%3A9443 from origin https://localhost:9443. Domains, protocols and ports must match. 10 11 CONSOLE MESSAGE: Fetch API cannot load https://localhost:9443/nonav-follow-sameorigin-redirects-to-cors-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252F127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py%253FACAOrigin%253Dhttps%25253A%25252F%25252Flocalhost%25253A9443. 12 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin. 13 CONSOLE MESSAGE: Fetch API cannot load https://localhost:9443/nonav-follow-cors-redirects-to-nocors-creds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Ffoo%253Abar%2540127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py. 14 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Unsafe attempt to load URL https://127.0.0.1:9443/service-workers/service-worker/resources/success.py from origin https://localhost:9443. Domains, protocols and ports must match. 15 16 CONSOLE MESSAGE: Fetch API cannot load https://localhost:9443/nonav-follow-sameorigin-redirects-to-nocors-creds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Ffoo%253Abar%2540127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py. 17 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Unsafe attempt to load URL https://127.0.0.1:9443/service-workers/service-worker/resources/success.py?ACAOrigin=https%3A%2F%2Flocalhost%3A9443 from origin https://localhost:9443. Domains, protocols and ports must match. 18 19 CONSOLE MESSAGE: Fetch API cannot load https://localhost:9443/nonav-follow-sameorigin-redirects-to-cors-creds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Ffoo%253Abar%2540127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py%253FACAOrigin%253Dhttps%25253A%25252F%25252Flocalhost%25253A9443. 20 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Not allowed to follow a redirection while loading https://localhost:9443/service-workers/service-worker/resources/redirect.py?Redirect=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Fsuccess.py 21 CONSOLE MESSAGE: Fetch API cannot load https://localhost:9443/nonav-error-cors-redirects-to-sameorigin-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Flocalhost%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py. 22 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Not allowed to follow a redirection while loading https://localhost:9443/service-workers/service-worker/resources/redirect.py?Redirect=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Fsuccess.py 23 CONSOLE MESSAGE: Fetch API cannot load https://localhost:9443/nonav-error-cors-redirects-to-nocors-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252F127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py. 24 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Not allowed to follow a redirection while loading https://localhost:9443/service-workers/service-worker/resources/redirect.py?Redirect=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Fsuccess.py%3FACAOrigin%3Dhttps%253A%252F%252Flocalhost%253A9443 25 CONSOLE MESSAGE: Fetch API cannot load https://localhost:9443/nonav-error-cors-redirects-to-cors-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252F127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py%253FACAOrigin%253Dhttps%25253A%25252F%25252Flocalhost%25253A9443. 26 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Not allowed to follow a redirection while loading https://localhost:9443/service-workers/service-worker/resources/redirect.py?Redirect=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Fsuccess.py 27 CONSOLE MESSAGE: Fetch API cannot load https://localhost:9443/nonav-error-sameorigin-redirects-to-sameorigin-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Flocalhost%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py. 28 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Not allowed to follow a redirection while loading https://localhost:9443/service-workers/service-worker/resources/redirect.py?Redirect=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Fsuccess.py 29 CONSOLE MESSAGE: Fetch API cannot load https://localhost:9443/nonav-error-sameorigin-redirects-to-nocors-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252F127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py. 30 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Not allowed to follow a redirection while loading https://localhost:9443/service-workers/service-worker/resources/redirect.py?Redirect=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Fsuccess.py%3FACAOrigin%3Dhttps%253A%252F%252Flocalhost%253A9443 31 CONSOLE MESSAGE: Fetch API cannot load https://localhost:9443/nonav-error-sameorigin-redirects-to-cors-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252F127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py%253FACAOrigin%253Dhttps%25253A%25252F%25252Flocalhost%25253A9443. 4 32 CONSOLE MESSAGE: line 51: No-Cors mode requires follow redirect mode 5 33 CONSOLE MESSAGE: line 51: Not allowed to request resource 6 34 CONSOLE MESSAGE: line 51: Fetch API cannot load https://localhost:9443/nonav-error-nocors-redirects-to-sameorigin-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Flocalhost%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py due to access control checks. 35 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Not allowed to follow a redirection while loading https://localhost:9443/service-workers/service-worker/resources/redirect.py?Redirect=https%3A%2F%2Ffoo%3Abar%40localhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Fsuccess.py 36 CONSOLE MESSAGE: Fetch API cannot load https://localhost:9443/nonav-error-cors-redirects-to-sameorigin-creds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Ffoo%253Abar%2540localhost%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py. 37 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Not allowed to follow a redirection while loading https://localhost:9443/service-workers/service-worker/resources/redirect.py?Redirect=https%3A%2F%2Ffoo%3Abar%40127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Fsuccess.py 38 CONSOLE MESSAGE: Fetch API cannot load https://localhost:9443/nonav-error-cors-redirects-to-nocors-creds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Ffoo%253Abar%2540127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py. 39 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Not allowed to follow a redirection while loading https://localhost:9443/service-workers/service-worker/resources/redirect.py?Redirect=https%3A%2F%2Ffoo%3Abar%40127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Fsuccess.py%3FACAOrigin%3Dhttps%253A%252F%252Flocalhost%253A9443 40 CONSOLE MESSAGE: Fetch API cannot load https://localhost:9443/nonav-error-cors-redirects-to-cors-creds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Ffoo%253Abar%2540127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py%253FACAOrigin%253Dhttps%25253A%25252F%25252Flocalhost%25253A9443. 41 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Not allowed to follow a redirection while loading https://localhost:9443/service-workers/service-worker/resources/redirect.py?Redirect=https%3A%2F%2Ffoo%3Abar%40localhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Fsuccess.py 42 CONSOLE MESSAGE: Fetch API cannot load https://localhost:9443/nonav-error-sameorigin-redirects-to-sameorigin-creds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Ffoo%253Abar%2540localhost%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py. 43 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Not allowed to follow a redirection while loading https://localhost:9443/service-workers/service-worker/resources/redirect.py?Redirect=https%3A%2F%2Ffoo%3Abar%40127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Fsuccess.py 44 CONSOLE MESSAGE: Fetch API cannot load https://localhost:9443/nonav-error-sameorigin-redirects-to-nocors-creds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Ffoo%253Abar%2540127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py. 45 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Not allowed to follow a redirection while loading https://localhost:9443/service-workers/service-worker/resources/redirect.py?Redirect=https%3A%2F%2Ffoo%3Abar%40127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Fsuccess.py%3FACAOrigin%3Dhttps%253A%252F%252Flocalhost%253A9443 46 CONSOLE MESSAGE: Fetch API cannot load https://localhost:9443/nonav-error-sameorigin-redirects-to-cors-creds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Ffoo%253Abar%2540127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py%253FACAOrigin%253Dhttps%25253A%25252F%25252Flocalhost%25253A9443. 7 47 8 48 PASS initialize global state -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-respond-with-argument.https-expected.txt
r224852 r232739 1 CONSOLE MESSAGE: FetchEvent.respondWith received an error: Returned response is null. 2 CONSOLE MESSAGE: XMLHttpRequest cannot load https://localhost:9443/service-workers/service-worker/resources/fetch-event-respond-with-argument-iframe.html?other-value. 1 3 2 4 PASS respondWith() takes either a Response or a promise that resolves with a Response. Other values should raise a network error. -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-respond-with-response-body-with-invalid-chunk.https-expected.txt
r224852 r232739 1 CONSOLE MESSAGE: FetchEvent.respondWith received an error: ReadableStream chunk enqueueing in the sink failed 1 2 2 3 PASS Response with a ReadableStream having non-Uint8Array chunks should be transferred as errored -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-frame-resource.https-expected.txt
r226084 r232739 1 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Not allowed to request resource 2 CONSOLE MESSAGE: Cannot load https://localhost:9443/service-workers/service-worker/resources/fetch-frame-resource/frame-opaque?mode=no-cors&url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py. 3 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Not allowed to request resource 4 CONSOLE MESSAGE: Cannot load https://localhost:9443/service-workers/service-worker/resources/fetch-frame-resource/window-opaque?mode=no-cors&url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py. 1 5 2 6 PASS Basic type response could be loaded in the iframe. -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-mixed-content-to-inscope.https-expected.txt
r224852 r232739 1 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Not allowed to request resource 2 CONSOLE MESSAGE: Cannot load https://localhost:9443/service-workers/service-worker/resources/dummy?mode=no-cors&url=http%3A%2F%2Flocalhost%3A8800%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FPNGIMAGE. 3 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Not allowed to request resource 4 CONSOLE MESSAGE: Cannot load https://localhost:9443/service-workers/service-worker/resources/dummy?mode=no-cors&url=http%3A%2F%2F127.0.0.1%3A8800%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FPNGIMAGE. 1 5 2 6 -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-mixed-content-to-outscope.https-expected.txt
r226066 r232739 1 1 CONSOLE MESSAGE: line 25: The page at https://localhost:9443/service-workers/service-worker/fetch-mixed-content-to-outscope.https.html was allowed to display insecure content from http://localhost:8800/service-workers/service-worker/resources/fetch-access-control.py?PNGIMAGE. 2 2 3 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Not allowed to request resource 4 CONSOLE MESSAGE: Cannot load http://localhost:8800/service-workers/service-worker/resources/fetch-access-control.py?PNGIMAGE. 3 5 CONSOLE MESSAGE: line 42: The page at https://localhost:9443/service-workers/service-worker/fetch-mixed-content-to-outscope.https.html was allowed to display insecure content from http://127.0.0.1:8800/service-workers/service-worker/resources/fetch-access-control.py?PNGIMAGE. 4 6 7 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Not allowed to request resource 8 CONSOLE MESSAGE: Cannot load http://127.0.0.1:8800/service-workers/service-worker/resources/fetch-access-control.py?PNGIMAGE. 5 9 6 10 -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/invalid-header.https-expected.txt
r224852 r232739 1 CONSOLE MESSAGE: FetchEvent.respondWith received an error: TypeError: Header 'foo' has invalid value: 'b 2 CONSOLE MESSAGE: XMLHttpRequest cannot load https://localhost:9443/service-workers/service-worker/resources/dummy?test. 1 3 2 4 PASS Verify the response of FetchEvent using XMLHttpRequest -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/update-recovery.https-expected.txt
r227543 r232739 1 CONSOLE MESSAGE: FetchEvent.respondWith received an error: undefined 2 CONSOLE MESSAGE: Cannot load https://localhost:9443/service-workers/service-worker/resources/simple.txt. 1 3 2 4 PASS Recover from a bad service worker by updating after a failed navigation. -
trunk/Source/WebCore/ChangeLog
r232737 r232739 1 2018-06-11 Youenn Fablet <youenn@apple.com> 2 3 Improve error messages in case FetchEvent.respondWith has a rejected promise 4 https://bugs.webkit.org/show_bug.cgi?id=186368 5 6 Reviewed by Chris Dumez. 7 8 Covered by rebased tests. 9 10 Introduce a new error domain for service worker ResourceError. 11 Used this domain to log in the console any such error. 12 13 Update FetchEvent implementation to get meaningful error messages for respondWith error cases. 14 In particular, convert the rejected promise JS value as a string to populate the error message. 15 16 * loader/SubresourceLoader.cpp: 17 (WebCore::SubresourceLoader::didFail): 18 * platform/network/ResourceErrorBase.cpp: 19 * platform/network/ResourceErrorBase.h: 20 * testing/ServiceWorkerInternals.cpp: 21 (WebCore::ServiceWorkerInternals::waitForFetchEventToFinish): 22 * workers/service/FetchEvent.cpp: 23 (WebCore::FetchEvent::~FetchEvent): 24 (WebCore::FetchEvent::createResponseError): 25 (WebCore::FetchEvent::onResponse): 26 (WebCore::FetchEvent::respondWithError): 27 (WebCore::FetchEvent::processResponse): 28 (WebCore::FetchEvent::promiseIsSettled): 29 * workers/service/FetchEvent.h: 30 * workers/service/context/ServiceWorkerFetch.cpp: 31 (WebCore::ServiceWorkerFetch::processResponse): 32 (WebCore::ServiceWorkerFetch::dispatchFetchEvent): 33 1 34 2018-06-11 Chris Dumez <cdumez@apple.com> 2 35 -
trunk/Source/WebCore/loader/ThreadableLoader.cpp
r231000 r232739 132 132 // We further reduce logging to some errors. 133 133 // FIXME: Log more errors when making so do not make some layout tests flaky. 134 if (error.domain() != errorDomainWebKitInternal && !error.isAccessControl())134 if (error.domain() != errorDomainWebKitInternal && error.domain() != errorDomainWebKitServiceWorker && !error.isAccessControl()) 135 135 return; 136 136 -
trunk/Source/WebCore/platform/network/ResourceErrorBase.cpp
r224638 r232739 31 31 32 32 const char* const errorDomainWebKitInternal = "WebKitInternal"; 33 const char* const errorDomainWebKitServiceWorker = "WebKitServiceWorker"; 33 34 34 35 inline const ResourceError& ResourceErrorBase::asResourceError() const -
trunk/Source/WebCore/platform/network/ResourceErrorBase.h
r226084 r232739 35 35 36 36 WEBCORE_EXPORT extern const char* const errorDomainWebKitInternal; // Used for errors that won't be exposed to clients. 37 WEBCORE_EXPORT extern const char* const errorDomainWebKitServiceWorker; // Used for errors that happen when loading a resource from a service worker. 37 38 38 39 class ResourceErrorBase { -
trunk/Source/WebCore/testing/ServiceWorkerInternals.cpp
r230365 r232739 52 52 void ServiceWorkerInternals::waitForFetchEventToFinish(FetchEvent& event, DOMPromiseDeferred<IDLInterface<FetchResponse>>&& promise) 53 53 { 54 event.onResponse([promise = WTFMove(promise), event = makeRef(event)] ( FetchResponse* response) mutable {55 if (res ponse)56 promise.resolve( *response);54 event.onResponse([promise = WTFMove(promise), event = makeRef(event)] (auto&& result) mutable { 55 if (result.has_value()) 56 promise.resolve(WTFMove(result.value())); 57 57 else 58 promise.reject(TypeError, ASCIILiteral("fetch event responded with error"));58 promise.reject(TypeError, result.error().localizedDescription()); 59 59 }); 60 60 } -
trunk/Source/WebCore/workers/service/FetchEvent.cpp
r232613 r232739 53 53 { 54 54 if (auto callback = WTFMove(m_onResponse)) 55 callback(nullptr); 55 callback(makeUnexpected(ResourceError { errorDomainWebKitServiceWorker, 0, m_request->url(), ASCIILiteral("Fetch event is destroyed."), ResourceError::Type::Cancellation })); 56 } 57 58 ResourceError FetchEvent::createResponseError(const URL& url, const String& errorMessage) 59 { 60 return ResourceError { errorDomainWebKitServiceWorker, 0, url, makeString("FetchEvent.respondWith received an error: ", errorMessage), ResourceError::Type::General }; 61 56 62 } 57 63 … … 82 88 } 83 89 84 void FetchEvent::onResponse( CompletionHandler<void(FetchResponse*)>&& callback)90 void FetchEvent::onResponse(ResponseCallback&& callback) 85 91 { 86 92 ASSERT(!m_onResponse); … … 88 94 } 89 95 90 void FetchEvent::respondWithError( )96 void FetchEvent::respondWithError(ResourceError&& error) 91 97 { 92 98 m_respondWithError = true; 93 processResponse( nullptr);99 processResponse(makeUnexpected(WTFMove(error))); 94 100 } 95 101 96 void FetchEvent::processResponse( FetchResponse* response)102 void FetchEvent::processResponse(Expected<Ref<FetchResponse>, ResourceError>&& result) 97 103 { 98 104 m_respondPromise = nullptr; 99 105 m_waitToRespond = false; 100 106 if (auto callback = WTFMove(m_onResponse)) 101 callback( response);107 callback(WTFMove(result)); 102 108 } 103 109 … … 105 111 { 106 112 if (m_respondPromise->status() == DOMPromise::Status::Rejected) { 107 respondWithError(); 113 auto reason = m_respondPromise->result().toWTFString(m_respondPromise->globalObject()->globalExec()); 114 respondWithError(createResponseError(m_request->url(), reason)); 108 115 return; 109 116 } … … 112 119 auto response = JSFetchResponse::toWrapped(m_respondPromise->globalObject()->globalExec()->vm(), m_respondPromise->result()); 113 120 if (!response) { 114 respondWithError( );121 respondWithError(createResponseError(m_request->url(), ASCIILiteral("Returned response is null."))); 115 122 return; 116 123 } 117 124 118 125 if (response->isDisturbedOrLocked()) { 119 respondWithError( );126 respondWithError(createResponseError(m_request->url(), ASCIILiteral("Response is disturbed or locked."))); 120 127 return; 121 128 } 122 129 123 processResponse( response);130 processResponse(makeRef(*response)); 124 131 } 125 132 -
trunk/Source/WebCore/workers/service/FetchEvent.h
r224532 r232739 31 31 #include "FetchRequest.h" 32 32 #include <wtf/CompletionHandler.h> 33 #include <wtf/Expected.h> 33 34 34 35 namespace WebCore { 35 36 36 37 class FetchResponse; 38 class ResourceError; 37 39 38 40 class FetchEvent final : public ExtendableEvent { … … 57 59 ExceptionOr<void> respondWith(Ref<DOMPromise>&&); 58 60 59 WEBCORE_EXPORT void onResponse(CompletionHandler<void(FetchResponse*)>&&); 61 using ResponseCallback = CompletionHandler<void(Expected<Ref<FetchResponse>, ResourceError>&&)>; 62 WEBCORE_EXPORT void onResponse(ResponseCallback&&); 60 63 61 64 FetchRequest& request() { return m_request.get(); } … … 66 69 bool respondWithEntered() const { return m_respondWithEntered; } 67 70 71 static ResourceError createResponseError(const URL&, const String&); 72 68 73 private: 69 74 WEBCORE_EXPORT FetchEvent(const AtomicString&, Init&&, IsTrusted); 70 75 71 76 void promiseIsSettled(); 72 void processResponse( FetchResponse*);73 void respondWithError( );77 void processResponse(Expected<Ref<FetchResponse>, ResourceError>&&); 78 void respondWithError(ResourceError&&); 74 79 75 80 Ref<FetchRequest> m_request; … … 83 88 RefPtr<DOMPromise> m_respondPromise; 84 89 85 CompletionHandler<void(FetchResponse*)>m_onResponse;90 ResponseCallback m_onResponse; 86 91 }; 87 92 -
trunk/Source/WebCore/workers/service/context/ServiceWorkerFetch.cpp
r232484 r232739 44 44 namespace ServiceWorkerFetch { 45 45 46 static void processResponse(Ref<Client>&& client, FetchResponse* response)46 static void processResponse(Ref<Client>&& client, Expected<Ref<FetchResponse>, ResourceError>&& result) 47 47 { 48 if (!res ponse) {49 client->didFail( ResourceError { errorDomainWebKitInternal, 0, URL(), ASCIILiteral("Response is null") });48 if (!result.has_value()) { 49 client->didFail(result.error()); 50 50 return; 51 51 } 52 auto protectedResponse = makeRef(*response);52 auto response = WTFMove(result.value()); 53 53 54 54 client->didReceiveResponse(response->resourceResponse()); … … 62 62 response->consumeBodyReceivedByChunk([client = WTFMove(client)] (auto&& result) mutable { 63 63 if (result.hasException()) { 64 client->didFail( ResourceError { errorDomainWebKitInternal, 0, URL(), result.exception().message() });64 client->didFail(FetchEvent::createResponseError(URL { }, result.exception().message())); 65 65 return; 66 66 } … … 123 123 auto event = FetchEvent::create(eventNames().fetchEvent, WTFMove(init), Event::IsTrusted::Yes); 124 124 125 event->onResponse([client = client.copyRef()] ( FetchResponse* response) mutable {126 processResponse(WTFMove(client), response);125 event->onResponse([client = client.copyRef()] (auto&& result) mutable { 126 processResponse(WTFMove(client), WTFMove(result)); 127 127 }); 128 128 -
trunk/Source/WebKit/ChangeLog
r232737 r232739 1 2018-06-11 Youenn Fablet <youenn@apple.com> 2 3 Improve error messages in case FetchEvent.respondWith has a rejected promise 4 https://bugs.webkit.org/show_bug.cgi?id=186368 5 6 Reviewed by Chris Dumez. 7 8 Log in JS console in case of failures. 9 Rely on ThreadableLoader to log which client actually failed. 10 11 * WebProcess/Storage/ServiceWorkerClientFetch.cpp: 12 (WebKit::ServiceWorkerClientFetch::didFail): 13 1 14 2018-06-11 Chris Dumez <cdumez@apple.com> 2 15 -
trunk/Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.cpp
r232484 r232739 33 33 #include "WebServiceWorkerProvider.h" 34 34 #include <WebCore/CrossOriginAccessControl.h> 35 #include <WebCore/Document.h> 36 #include <WebCore/Frame.h> 35 37 #include <WebCore/MIMETypeRegistry.h> 36 38 #include <WebCore/NotImplemented.h> … … 234 236 return; 235 237 238 auto* document = m_loader->frame() ? m_loader->frame()->document() : nullptr; 239 if (document) { 240 document->addConsoleMessage(MessageSource::JS, MessageLevel::Error, m_error.localizedDescription()); 241 if (m_loader->options().destination != FetchOptions::Destination::EmptyString) 242 document->addConsoleMessage(MessageSource::JS, MessageLevel::Error, makeString("Cannot load ", m_error.failingURL().string(), ".")); 243 } 244 236 245 m_loader->didFail(m_error); 237 246
Note: See TracChangeset
for help on using the changeset viewer.