Changeset 225702 in webkit
- Timestamp:
- Dec 8, 2017 2:41:48 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r225698 r225702 1 2017-12-08 Youenn Fablet <youenn@apple.com> 2 3 FetchResponse should keep unfiltered ResourceResponse so that it can be used in Service Worker 4 https://bugs.webkit.org/show_bug.cgi?id=179641 5 <rdar://problem/35923570> 6 7 Reviewed by Alex Christensen. 8 9 * TestExpectations: 10 1 11 2017-12-08 Konstantin Tokarev <annulen@yandex.ru> 2 12 -
trunk/LayoutTests/TestExpectations
r225644 r225702 191 191 imported/w3c/web-platform-tests/service-workers/service-worker/fetch-cors-xhr.https.html [ DumpJSConsoleLogInStdErr Pass Failure ] 192 192 imported/w3c/web-platform-tests/service-workers/service-worker/update.https.html [ Pass Failure Timeout ] 193 194 imported/w3c/web-platform-tests/service-workers/service-worker/fetch-response-taint.https.html [ DumpJSConsoleLogInStdErr ] 193 195 194 196 # Skip workers tests that are timing out or are SharedWorker related only -
trunk/LayoutTests/imported/w3c/ChangeLog
r225644 r225702 1 2017-12-08 Youenn Fablet <youenn@apple.com> 2 3 FetchResponse should keep unfiltered ResourceResponse so that it can be used in Service Worker 4 https://bugs.webkit.org/show_bug.cgi?id=179641 5 <rdar://problem/35923570> 6 7 Reviewed by Alex Christensen. 8 9 * web-platform-tests/service-workers/service-worker/fetch-request-css-cross-origin-mime-check.https-expected.txt: 10 * web-platform-tests/service-workers/service-worker/fetch-response-taint.https-expected.txt: 11 1 12 2017-12-07 Youenn Fablet <youenn@apple.com> 2 13 -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-frame-resource.https-expected.txt
r224852 r225702 1 CONSOLE MESSAGE: line 51: Blocked a frame with origin "https://localhost:9443" from accessing a frame with origin "null". The frame requesting access has a protocol of "https", the frame being accessed has a protocol of "https". Protocols must match. 2 1 3 2 4 PASS Basic type response could be loaded in the iframe. -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-request-css-cross-origin-mime-check.https-expected.txt
r224852 r225702 1 CONSOLE MESSAGE: Did not parse stylesheet at 'https://localhost:9443/service-workers/service-worker/resources/cross-origin-html.css' because non CSS MIME types are not allowed for cross-origin stylesheets. 1 2 3 PASS Mime type checking of CSS files fetched via SW. 2 4 3 FAIL Mime type checking of CSS files fetched via SW. assert_equals: The color must not be overridden by cross origin non CSS file. expected "rgb(0, 0, 255)" but got "rgb(255, 0, 0)"4 -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-response-taint.https-expected.txt
r225574 r225702 1 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?. Cross origin requests are not allowed when using same-origin fetch mode.2 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?. Cross origin requests are not allowed when using same-origin fetch mode.3 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?. Cross origin requests are not allowed when using same-origin fetch mode.4 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.5 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.6 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.7 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&. Cross origin requests are not allowed when using same-origin fetch mode.8 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&. Cross origin requests are not allowed when using same-origin fetch mode.9 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&. Cross origin requests are not allowed when using same-origin fetch mode.10 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.11 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.12 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.13 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.14 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.15 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.16 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.17 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.18 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.19 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3Dhttps%3A%2F%2Flocalhost%3A9443%26ACACredentials%3Dtrue&mode=cors&credentials=include&. Cross origin requests are not allowed when using same-origin fetch mode.20 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3Dhttps%3A%2F%2Flocalhost%3A9443%26ACACredentials%3Dtrue&mode=cors&credentials=include&. Cross origin requests are not allowed when using same-origin fetch mode.21 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3Dhttps%3A%2F%2Flocalhost%3A9443%26ACACredentials%3Dtrue&mode=cors&credentials=include&. Cross origin requests are not allowed when using same-origin fetch mode.22 1 23 2 PASS initialize global state … … 113 92 PASS fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"no-cors" credentials:"same-origin" should succeed. 114 93 PASS fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"no-cors" credentials:"include" should succeed. 115 FAIL url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"cors" credentials:"omit" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code 116 FAIL url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"cors" credentials:"same-origin" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code 117 FAIL url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"cors" credentials:"include" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code 94 PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"cors" credentials:"omit" should fail. 95 PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"cors" credentials:"same-origin" should fail. 96 PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"cors" credentials:"include" should fail. 118 97 FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&" mode:"same-origin" credentials:"omit" should succeed. assert_equals: response type expected "cors" but got "basic" 119 98 FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&" mode:"same-origin" credentials:"same-origin" should succeed. assert_equals: response type expected "cors" but got "basic" -
trunk/Source/WebCore/ChangeLog
r225699 r225702 1 2017-12-08 Youenn Fablet <youenn@apple.com> 2 3 FetchResponse should keep unfiltered ResourceResponse so that it can be used in Service Worker 4 https://bugs.webkit.org/show_bug.cgi?id=179641 5 <rdar://problem/35923570> 6 7 Reviewed by Alex Christensen. 8 9 Covered by existing rebased tests. 10 11 FetchResponse will now store an unfiltered response. 12 If it needs to expose it to JavaScript, it will create a filtered response lazily. 13 This allows service worker to send back to web pages, opaque responses containing every information. 14 15 Updating Document::initSecurityContext so that any document loaded with a response whose tainting is Opaque gets a unique origin. 16 This ensures cross-origin checks to work if service worker returns such a response on a same origin URL. 17 18 Updated SubresourceLoader to check cross origin service worker responses based on their tainting. 19 20 * Modules/fetch/FetchResponse.cpp: 21 (WebCore::FetchResponse::create): 22 (WebCore::FetchResponse::error): 23 (WebCore::FetchResponse::redirect): 24 (WebCore::FetchResponse::FetchResponse): 25 (WebCore::FetchResponse::clone): 26 (WebCore::FetchResponse::url const): 27 (WebCore::FetchResponse::filteredResponse const): 28 (WebCore::FetchResponse::BodyLoader::didReceiveResponse): 29 (WebCore::FetchResponse::resourceResponse const): 30 * Modules/fetch/FetchResponse.h: 31 (WebCore::FetchResponse::create): Deleted. 32 * dom/Document.cpp: 33 (WebCore::Document::initSecurityContext): 34 * loader/SubresourceLoader.cpp: 35 (WebCore::SubresourceLoader::willSendRequestInternal): 36 (WebCore::SubresourceLoader::checkResponseCrossOriginAccessControl): 37 1 38 2017-12-08 David Quesada <david_quesada@apple.com> 2 39 -
trunk/Source/WebCore/Modules/fetch/FetchResponse.cpp
r225297 r225702 45 45 } 46 46 47 Ref<FetchResponse> FetchResponse::create(ScriptExecutionContext& context, std::optional<FetchBody>&& body, Ref<FetchHeaders>&& headers, ResourceResponse&& response) 48 { 49 auto fetchResponse = adoptRef(*new FetchResponse(context, WTFMove(body), WTFMove(headers), WTFMove(response))); 50 fetchResponse->m_filteredResponse = ResourceResponseBase::filter(fetchResponse->m_internalResponse); 51 return fetchResponse; 52 } 53 47 54 ExceptionOr<Ref<FetchResponse>> FetchResponse::create(ScriptExecutionContext& context, std::optional<FetchBody::Init>&& body, Init&& init) 48 55 { … … 109 116 r->m_contentType = contentType; 110 117 auto mimeType = extractMIMETypeFromMediaType(contentType); 111 r->m_ response.setMimeType(mimeType.isEmpty() ? defaultMIMEType() : mimeType);112 113 r->m_ response.setHTTPStatusCode(status);114 r->m_ response.setHTTPStatusText(statusText);118 r->m_internalResponse.setMimeType(mimeType.isEmpty() ? defaultMIMEType() : mimeType); 119 120 r->m_internalResponse.setHTTPStatusCode(status); 121 r->m_internalResponse.setHTTPStatusText(statusText); 115 122 116 123 return WTFMove(r); … … 120 127 { 121 128 auto response = adoptRef(*new FetchResponse(context, { }, FetchHeaders::create(FetchHeaders::Guard::Immutable), { })); 122 response->m_ response.setType(Type::Error);129 response->m_internalResponse.setType(Type::Error); 123 130 return response; 124 131 } … … 133 140 return Exception { RangeError }; 134 141 auto redirectResponse = adoptRef(*new FetchResponse(context, { }, FetchHeaders::create(FetchHeaders::Guard::Immutable), { })); 135 redirectResponse->m_response.setHTTPStatusCode(status); 142 redirectResponse->m_internalResponse.setHTTPStatusCode(status); 143 redirectResponse->m_internalResponse.setHTTPHeaderField(HTTPHeaderName::Location, requestURL.string()); 136 144 redirectResponse->m_headers->fastSet(HTTPHeaderName::Location, requestURL.string()); 137 145 return WTFMove(redirectResponse); … … 140 148 FetchResponse::FetchResponse(ScriptExecutionContext& context, std::optional<FetchBody>&& body, Ref<FetchHeaders>&& headers, ResourceResponse&& response) 141 149 : FetchBodyOwner(context, WTFMove(body), WTFMove(headers)) 142 , m_ response(WTFMove(response))150 , m_internalResponse(WTFMove(response)) 143 151 { 144 152 } … … 155 163 readableStream(*context.execState()); 156 164 157 auto clone = adoptRef(*new FetchResponse(context, std::nullopt, FetchHeaders::create(headers()), ResourceResponse(m_ response)));165 auto clone = adoptRef(*new FetchResponse(context, std::nullopt, FetchHeaders::create(headers()), ResourceResponse(m_internalResponse))); 158 166 clone->cloneBody(*this); 159 167 if (isBodyOpaque()) … … 183 191 { 184 192 if (m_responseURL.isNull()) { 185 URL url = m_ response.url();193 URL url = m_internalResponse.url(); 186 194 url.removeFragmentIdentifier(); 187 195 m_responseURL = url.string(); 188 196 } 189 197 return m_responseURL; 198 } 199 200 const ResourceResponse& FetchResponse::filteredResponse() const 201 { 202 if (m_filteredResponse) 203 return m_filteredResponse.value(); 204 return m_internalResponse; 190 205 } 191 206 … … 247 262 void FetchResponse::BodyLoader::didReceiveResponse(const ResourceResponse& resourceResponse) 248 263 { 249 m_response.m_response = ResourceResponseBase::filter(resourceResponse); 264 m_response.m_filteredResponse = ResourceResponseBase::filter(resourceResponse); 265 m_response.m_internalResponse = resourceResponse; 266 m_response.m_internalResponse.setType(m_response.m_filteredResponse->type()); 250 267 if (resourceResponse.tainting() == ResourceResponse::Tainting::Opaque) { 251 268 m_response.m_opaqueLoadIdentifier = ++nextOpaqueLoadIdentifier; … … 253 270 } 254 271 255 m_response.m_headers->filterAndFill(m_response.m_ response.httpHeaderFields(), FetchHeaders::Guard::Response);272 m_response.m_headers->filterAndFill(m_response.m_filteredResponse->httpHeaderFields(), FetchHeaders::Guard::Response); 256 273 m_response.updateContentType(); 257 274 … … 443 460 ResourceResponse FetchResponse::resourceResponse() const 444 461 { 445 auto response = m_response; 446 // FIXME: Add a setHTTPHeaderFields on ResourceResponseBase. 447 for (auto& header : headers().internalHeaders()) 448 response.setHTTPHeaderField(header.key, header.value); 462 auto response = m_internalResponse; 463 464 if (headers().guard() != FetchHeaders::Guard::Immutable) { 465 // FIXME: Add a setHTTPHeaderFields on ResourceResponseBase. 466 for (auto& header : headers().internalHeaders()) 467 response.setHTTPHeaderField(header.key, header.value); 468 } 469 449 470 return response; 450 471 } -
trunk/Source/WebCore/Modules/fetch/FetchResponse.h
r224344 r225702 69 69 #endif 70 70 71 Type type() const { return m_response.type(); }71 Type type() const { return filteredResponse().type(); } 72 72 const String& url() const; 73 bool redirected() const { return m_response.isRedirected(); }74 int status() const { return m_response.httpStatusCode(); }75 bool ok() const { return m_response.isSuccessful(); }76 const String& statusText() const { return m_response.httpStatusText(); }73 bool redirected() const { return filteredResponse().isRedirected(); } 74 int status() const { return filteredResponse().httpStatusCode(); } 75 bool ok() const { return filteredResponse().isSuccessful(); } 76 const String& statusText() const { return filteredResponse().httpStatusText(); } 77 77 78 78 const FetchHeaders& headers() const { return m_headers; } … … 109 109 bool canSuspendForDocumentSuspension() const final; 110 110 111 const ResourceResponse& filteredResponse() const; 112 111 113 #if ENABLE(STREAMS_API) 112 114 void closeStream(); … … 140 142 }; 141 143 142 ResourceResponse m_response; 144 mutable std::optional<ResourceResponse> m_filteredResponse; 145 ResourceResponse m_internalResponse; 143 146 std::optional<BodyLoader> m_bodyLoader; 144 147 mutable String m_responseURL; … … 148 151 }; 149 152 150 inline Ref<FetchResponse> FetchResponse::create(ScriptExecutionContext& context, std::optional<FetchBody>&& body, Ref<FetchHeaders>&& headers, ResourceResponse&& response)151 {152 return adoptRef(*new FetchResponse(context, WTFMove(body), WTFMove(headers), WTFMove(response)));153 }154 155 153 } // namespace WebCore -
trunk/Source/WebCore/dom/Document.cpp
r225696 r225702 5465 5465 applyContentDispositionAttachmentSandbox(); 5466 5466 5467 setSecurityOriginPolicy(SecurityOriginPolicy::create(isSandboxed(SandboxOrigin) ? SecurityOrigin::createUnique() : SecurityOrigin::create(m_url))); 5467 bool isSecurityOriginUnique = isSandboxed(SandboxOrigin); 5468 if (!isSecurityOriginUnique) { 5469 auto* loader = m_frame->loader().documentLoader(); 5470 isSecurityOriginUnique = loader && loader->response().tainting() == ResourceResponse::Tainting::Opaque; 5471 } 5472 5473 setSecurityOriginPolicy(SecurityOriginPolicy::create(isSecurityOriginUnique ? SecurityOrigin::createUnique() : SecurityOrigin::create(m_url))); 5468 5474 setContentSecurityPolicy(std::make_unique<ContentSecurityPolicy>(*this)); 5469 5475 -
trunk/Source/WebCore/loader/SubresourceLoader.cpp
r225564 r225702 215 215 opaqueRedirectedResponse.setTainting(ResourceResponse::Tainting::Opaqueredirect); 216 216 m_resource->responseReceived(opaqueRedirectedResponse); 217 if (reachedTerminalState()) 218 return; 217 219 218 220 NetworkLoadMetrics emptyMetrics; … … 498 500 #if ENABLE(SERVICE_WORKER) 499 501 if (response.source() == ResourceResponse::Source::ServiceWorker) 500 return true;502 return response.tainting() != ResourceResponse::Tainting::Opaque; 501 503 #endif 502 504 -
trunk/Source/WebKit/ChangeLog
r225700 r225702 1 2017-12-08 Youenn Fablet <youenn@apple.com> 2 3 FetchResponse should keep unfiltered ResourceResponse so that it can be used in Service Worker 4 https://bugs.webkit.org/show_bug.cgi?id=179641 5 <rdar://problem/35923570> 6 7 Reviewed by Alex Christensen. 8 9 * WebProcess/Storage/ServiceWorkerClientFetch.cpp: 10 (WebKit::ServiceWorkerClientFetch::didReceiveResponse): In case of opaque redirected response, handle it as a regular response. 11 1 12 2017-12-08 Alex Christensen <achristensen@webkit.org> 2 13 -
trunk/Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.cpp
r225297 r225702 66 66 } 67 67 68 void ServiceWorkerClientFetch::didReceiveResponse( WebCore::ResourceResponse&& response)68 void ServiceWorkerClientFetch::didReceiveResponse(ResourceResponse&& response) 69 69 { 70 70 auto protectedThis = makeRef(*this); 71 71 72 if (response.isRedirection() ) {72 if (response.isRedirection() && response.tainting() != ResourceResponse::Tainting::Opaqueredirect) { 73 73 m_redirectionStatus = RedirectionStatus::Receiving; 74 74 // FIXME: Get shouldClearReferrerOnHTTPSToHTTPRedirect value from
Note: See TracChangeset
for help on using the changeset viewer.