Title: [253814] trunk
- Revision
- 253814
- Author
- commit-qu...@webkit.org
- Date
- 2019-12-20 05:35:19 -0800 (Fri, 20 Dec 2019)
Log Message
Fetch: handle emtpy Location value
https://bugs.webkit.org/show_bug.cgi?id=205462
Patch by Rob Buis <rb...@igalia.com> on 2019-12-20
Reviewed by Youenn Fablet.
LayoutTests/imported/w3c:
Update improved test results.
* web-platform-tests/fetch/api/redirect/redirect-empty-location.any-expected.txt:
* web-platform-tests/fetch/api/redirect/redirect-empty-location.any.worker-expected.txt:
Source/WebCore:
Handle empty Location value on redirect as specified here:
https://fetch.spec.whatwg.org/#concept-http-redirect-fetch step 3
Tests: web-platform-tests/fetch/api/redirect/redirect-empty-location.any.html
web-platform-tests/fetch/api/redirect/redirect-empty-location.any.worker.html
* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::didReceiveResponse):
Modified Paths
Diff
Modified: trunk/LayoutTests/imported/w3c/ChangeLog (253813 => 253814)
--- trunk/LayoutTests/imported/w3c/ChangeLog 2019-12-20 13:15:24 UTC (rev 253813)
+++ trunk/LayoutTests/imported/w3c/ChangeLog 2019-12-20 13:35:19 UTC (rev 253814)
@@ -1,3 +1,15 @@
+2019-12-20 Rob Buis <rb...@igalia.com>
+
+ Fetch: handle emtpy Location value
+ https://bugs.webkit.org/show_bug.cgi?id=205462
+
+ Reviewed by Youenn Fablet.
+
+ Update improved test results.
+
+ * web-platform-tests/fetch/api/redirect/redirect-empty-location.any-expected.txt:
+ * web-platform-tests/fetch/api/redirect/redirect-empty-location.any.worker-expected.txt:
+
2019-12-19 Chris Dumez <cdu...@apple.com>
REGRESSION: (r251677) imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/form-double-submit-3.html is a flaky failure
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-empty-location.any-expected.txt (253813 => 253814)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-empty-location.any-expected.txt 2019-12-20 13:15:24 UTC (rev 253813)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-empty-location.any-expected.txt 2019-12-20 13:35:19 UTC (rev 253814)
@@ -1,4 +1,4 @@
-FAIL redirect response with empty Location, follow mode assert_unreached: Should have rejected: undefined Reached unreachable code
+PASS redirect response with empty Location, follow mode
PASS redirect response with empty Location, manual mode
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-empty-location.any.worker-expected.txt (253813 => 253814)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-empty-location.any.worker-expected.txt 2019-12-20 13:15:24 UTC (rev 253813)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-empty-location.any.worker-expected.txt 2019-12-20 13:35:19 UTC (rev 253814)
@@ -1,4 +1,4 @@
-FAIL redirect response with empty Location, follow mode assert_unreached: Should have rejected: undefined Reached unreachable code
+PASS redirect response with empty Location, follow mode
PASS redirect response with empty Location, manual mode
Modified: trunk/Source/WebCore/ChangeLog (253813 => 253814)
--- trunk/Source/WebCore/ChangeLog 2019-12-20 13:15:24 UTC (rev 253813)
+++ trunk/Source/WebCore/ChangeLog 2019-12-20 13:35:19 UTC (rev 253814)
@@ -1,3 +1,19 @@
+2019-12-20 Rob Buis <rb...@igalia.com>
+
+ Fetch: handle emtpy Location value
+ https://bugs.webkit.org/show_bug.cgi?id=205462
+
+ Reviewed by Youenn Fablet.
+
+ Handle empty Location value on redirect as specified here:
+ https://fetch.spec.whatwg.org/#concept-http-redirect-fetch step 3
+
+ Tests: web-platform-tests/fetch/api/redirect/redirect-empty-location.any.html
+ web-platform-tests/fetch/api/redirect/redirect-empty-location.any.worker.html
+
+ * loader/SubresourceLoader.cpp:
+ (WebCore::SubresourceLoader::didReceiveResponse):
+
2019-12-20 youenn fablet <you...@apple.com>
DOMPromise::whenPromiseIsSettled is asserting in service worker
Modified: trunk/Source/WebCore/loader/SubresourceLoader.cpp (253813 => 253814)
--- trunk/Source/WebCore/loader/SubresourceLoader.cpp 2019-12-20 13:15:24 UTC (rev 253813)
+++ trunk/Source/WebCore/loader/SubresourceLoader.cpp 2019-12-20 13:35:19 UTC (rev 253814)
@@ -326,6 +326,12 @@
#endif
+static bool isLocationURLFailure(const ResourceResponse& response)
+{
+ auto locationString = response.httpHeaderField(HTTPHeaderName::Location);
+ return !locationString.isNull() && locationString.isEmpty();
+}
+
void SubresourceLoader::didReceiveResponse(const ResourceResponse& response, CompletionHandler<void()>&& policyCompletionHandler)
{
ASSERT(!response.isNull());
@@ -401,14 +407,21 @@
return;
}
- if (options().redirect == FetchOptions::Redirect::Manual && response.isRedirection()) {
- ResourceResponse opaqueRedirectedResponse = response;
- opaqueRedirectedResponse.setType(ResourceResponse::Type::Opaqueredirect);
- opaqueRedirectedResponse.setTainting(ResourceResponse::Tainting::Opaqueredirect);
- m_resource->responseReceived(opaqueRedirectedResponse);
- if (!reachedTerminalState())
- ResourceLoader::didReceiveResponse(opaqueRedirectedResponse, [completionHandlerCaller = WTFMove(completionHandlerCaller)] { });
- return;
+ if (response.isRedirection()) {
+ if (options().redirect == FetchOptions::Redirect::Follow && isLocationURLFailure(response)) {
+ // Implementing https://fetch.spec.whatwg.org/#concept-http-redirect-fetch step 3
+ cancel();
+ return;
+ }
+ if (options().redirect == FetchOptions::Redirect::Manual) {
+ ResourceResponse opaqueRedirectedResponse = response;
+ opaqueRedirectedResponse.setType(ResourceResponse::Type::Opaqueredirect);
+ opaqueRedirectedResponse.setTainting(ResourceResponse::Tainting::Opaqueredirect);
+ m_resource->responseReceived(opaqueRedirectedResponse);
+ if (!reachedTerminalState())
+ ResourceLoader::didReceiveResponse(opaqueRedirectedResponse, [completionHandlerCaller = WTFMove(completionHandlerCaller)] { });
+ return;
+ }
}
m_resource->responseReceived(response);
if (reachedTerminalState())
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes