WebKit Bugzilla
Attachment 368705 Details for
Bug 182849
: LayoutTest imported/w3c/web-platform-tests/xhr/event-upload-progress-crossorigin.htm is a flaky failure
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-182849-20190501140418.patch (text/plain), 9.27 KB, created by
youenn fablet
on 2019-05-01 14:04:18 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
youenn fablet
Created:
2019-05-01 14:04:18 PDT
Size:
9.27 KB
patch
obsolete
>Subversion Revision: 244802 >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 74b8925a4f81ba9a6b832affab0b873e04c2707f..e2959600e7183ea0ccc582b622535718f5e47a99 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,26 @@ >+2019-05-01 Youenn Fablet <youenn@apple.com> >+ >+ LayoutTest imported/w3c/web-platform-tests/xhr/event-upload-progress-crossorigin.htm is a flaky failure >+ https://bugs.webkit.org/show_bug.cgi?id=182849 >+ <rdar://problem/50353372> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ In case of restarting the load after a redirection, which now happens in case >+ of following cross origin redirections with same-origin credentials, make sure to >+ update the request as would do NetworkLoad. >+ This is in particular important to preserve the request body. >+ >+ Covered by WPT updated test. >+ >+ * NetworkProcess/NetworkLoad.cpp: >+ (WebKit::updateRequest): >+ (WebKit::NetworkLoad::updateRequestAfterRedirection const): >+ (WebKit::NetworkLoad::continueWillSendRequest): >+ * NetworkProcess/NetworkLoad.h: >+ * NetworkProcess/NetworkResourceLoader.cpp: >+ (WebKit::NetworkResourceLoader::continueWillSendRequest): >+ > 2019-05-01 Youenn Fablet <youenn@apple.com> > > Reuse existing WebPageProxy quota handler for NetworkProcessProxy quota requests >diff --git a/Source/WebKit/NetworkProcess/NetworkLoad.cpp b/Source/WebKit/NetworkProcess/NetworkLoad.cpp >index 3a6fa10cf9f7ed4bfcd83d0ba27468eb2317060b..735f369a1ca06c27c61a830e68177298239dc6bc 100644 >--- a/Source/WebKit/NetworkProcess/NetworkLoad.cpp >+++ b/Source/WebKit/NetworkProcess/NetworkLoad.cpp >@@ -90,14 +90,26 @@ void NetworkLoad::cancel() > m_task->cancel(); > } > >-void NetworkLoad::continueWillSendRequest(WebCore::ResourceRequest&& newRequest) >+static inline void updateRequest(ResourceRequest& currentRequest, const ResourceRequest& newRequest) > { > #if PLATFORM(COCOA) >- m_currentRequest.updateFromDelegatePreservingOldProperties(newRequest.nsURLRequest(HTTPBodyUpdatePolicy::DoNotUpdateHTTPBody)); >+ currentRequest.updateFromDelegatePreservingOldProperties(newRequest.nsURLRequest(HTTPBodyUpdatePolicy::DoNotUpdateHTTPBody)); > #else > // FIXME: Implement ResourceRequest::updateFromDelegatePreservingOldProperties. See https://bugs.webkit.org/show_bug.cgi?id=126127. >- m_currentRequest.updateFromDelegatePreservingOldProperties(newRequest); >+ currentRequest.updateFromDelegatePreservingOldProperties(newRequest); > #endif >+} >+ >+void NetworkLoad::updateRequestAfterRedirection(WebCore::ResourceRequest& newRequest) const >+{ >+ ResourceRequest updatedRequest = m_currentRequest; >+ updateRequest(updatedRequest, newRequest); >+ newRequest = WTFMove(updatedRequest); >+} >+ >+void NetworkLoad::continueWillSendRequest(WebCore::ResourceRequest&& newRequest) >+{ >+ updateRequest(m_currentRequest, newRequest); > > auto redirectCompletionHandler = std::exchange(m_redirectCompletionHandler, nullptr); > ASSERT(redirectCompletionHandler); >diff --git a/Source/WebKit/NetworkProcess/NetworkLoad.h b/Source/WebKit/NetworkProcess/NetworkLoad.h >index 5a51b2993cea15c7c2215eed6928cadb07f6184a..a5ebab60f72eea3f7191a5586e3a620c24f106cc 100644 >--- a/Source/WebKit/NetworkProcess/NetworkLoad.h >+++ b/Source/WebKit/NetworkProcess/NetworkLoad.h >@@ -52,6 +52,7 @@ public: > bool isAllowedToAskUserForCredentials() const; > > const WebCore::ResourceRequest& currentRequest() const { return m_currentRequest; } >+ void updateRequestAfterRedirection(WebCore::ResourceRequest&) const; > > const NetworkLoadParameters& parameters() const { return m_parameters; } > >diff --git a/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp b/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp >index 048f077f90bbceb276d452c3e90e0ebaf2e373aa..0878978beb83b048fc99a84cb8d80ff369ed4d56 100644 >--- a/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp >+++ b/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp >@@ -711,6 +711,10 @@ void NetworkResourceLoader::continueWillSendRequest(ResourceRequest&& newRequest > { > if (m_shouldRestartLoad) { > m_shouldRestartLoad = false; >+ >+ if (m_networkLoad) >+ m_networkLoad->updateRequestAfterRedirection(newRequest); >+ > restartNetworkLoad(WTFMove(newRequest)); > return; > } >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 1448aea12d201f093ccd5e470125371b801e7d54..f703f24fd3bfa890111279aad1c645e4860b9a59 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,13 @@ >+2019-05-01 Youenn Fablet <youenn@apple.com> >+ >+ LayoutTest imported/w3c/web-platform-tests/xhr/event-upload-progress-crossorigin.htm is a flaky failure >+ https://bugs.webkit.org/show_bug.cgi?id=182849 >+ <rdar://problem/50353372> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * platform/mac-wk2/TestExpectations: >+ > 2019-05-01 Youenn Fablet <youenn@apple.com> > > Import WPT referrer-policy tests >diff --git a/LayoutTests/imported/w3c/ChangeLog b/LayoutTests/imported/w3c/ChangeLog >index 858e65c0a58bcbf0d3e2254d594c40b13989c127..d7ad0751174cbdb6d5549bdf38f1f7186105b147 100644 >--- a/LayoutTests/imported/w3c/ChangeLog >+++ b/LayoutTests/imported/w3c/ChangeLog >@@ -1,3 +1,15 @@ >+2019-05-01 Youenn Fablet <youenn@apple.com> >+ >+ LayoutTest imported/w3c/web-platform-tests/xhr/event-upload-progress-crossorigin.htm is a flaky failure >+ https://bugs.webkit.org/show_bug.cgi?id=182849 >+ <rdar://problem/50353372> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Modernize the test and add an assertion that the body is transmitted after a redirection. >+ >+ * web-platform-tests/xhr/event-upload-progress-crossorigin.htm: >+ > 2019-05-01 Youenn Fablet <youenn@apple.com> > > Import WPT referrer-policy tests >diff --git a/LayoutTests/imported/w3c/web-platform-tests/xhr/event-upload-progress-crossorigin.htm b/LayoutTests/imported/w3c/web-platform-tests/xhr/event-upload-progress-crossorigin.htm >index 5e558a27b78b1879e0ad3e352037db3434b9fb6a..5acfc05be7d45885175927587014103674e1ead9 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/xhr/event-upload-progress-crossorigin.htm >+++ b/LayoutTests/imported/w3c/web-platform-tests/xhr/event-upload-progress-crossorigin.htm >@@ -11,23 +11,42 @@ const remote = get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/corsenabled. > redirect = "resources/redirect.py?code=307&location=" + remote; > > [remote, redirect].forEach(url => { >- async_test(test => { >+ promise_test(async test => { > const client = new XMLHttpRequest(); >- client.upload.onprogress = test.step_func_done() >- client.onload = test.unreached_func() >- client.open("POST", url) >- client.send("On time: " + url) >+ >+ const loadFinished = new Promise(resolve => client.onloadend = resolve); >+ const progressReceived = new Promise(resolve => client.upload.onprogress = resolve); >+ const loadReceived = new Promise((resolve, reject) => client.onload = () => { reject("load event received") }); >+ >+ const body = "On time: " + url; >+ client.open("POST", url); >+ client.send(body); >+ >+ await Promise.race([progressReceived, loadReceived]); >+ >+ await loadFinished; >+ assert_equals(client.getResponseHeader("X-Request-Data"), body, "test body"); > }, "Upload events registered on time (" + url + ")"); > }); > > [remote, redirect].forEach(url => { >- async_test(test => { >+ promise_test(async test => { > const client = new XMLHttpRequest(); >- client.onload = test.step_func_done(); >+ >+ const loadFinished = new Promise(resolve => client.onloadend = resolve); >+ const loadReceived = new Promise(resolve => client.onload = resolve); >+ >+ const body = "Too late: " + url; > client.open("POST", url); >- client.send("Too late: " + url); >- client.upload.onloadstart = test.unreached_func(); // registered too late >- client.upload.onprogress = test.unreached_func(); // registered too late >+ client.send(body); >+ >+ const loadstartReceived = new Promise((resolve, reject) => client.upload.onloadstart = () => { reject("loadstart event received") }); >+ const progressReceived = new Promise((resolve, reject) => client.upload.onprogress = () => { reject("progress event received") }); >+ >+ await Promise.race([loadReceived, progressReceived, loadstartReceived]); >+ >+ await loadFinished; >+ assert_equals(client.getResponseHeader("X-Request-Data"), body); > }, "Upload events registered too late (" + url + ")"); > }); > </script> >diff --git a/LayoutTests/platform/mac-wk2/TestExpectations b/LayoutTests/platform/mac-wk2/TestExpectations >index 319af9441ae1a56fa4af4bd07ca570367efcafe4..763aa556bbafd54390a4f608a144ad8189615449 100644 >--- a/LayoutTests/platform/mac-wk2/TestExpectations >+++ b/LayoutTests/platform/mac-wk2/TestExpectations >@@ -832,8 +832,6 @@ webkit.org/b/182341 imported/w3c/web-platform-tests/service-workers/service-work > > webkit.org/b/179352 imported/w3c/web-platform-tests/service-workers/service-worker/windowclient-navigate.https.html [ Pass Failure Slow ] > >-webkit.org/b/182849 imported/w3c/web-platform-tests/xhr/event-upload-progress-crossorigin.htm [ Pass Failure ] >- > webkit.org/b/183164 fast/dom/Window/window-focus-self.html [ Pass Failure ] > > webkit.org/b/180982 [ Debug ] imported/w3c/web-platform-tests/service-workers/service-worker/registration-updateviacache.https.html [ Slow ]
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 182849
: 368705