OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "modules/serviceworkers/FetchEvent.h" | 5 #include "modules/serviceworkers/FetchEvent.h" |
6 | 6 |
7 #include "bindings/core/v8/ScriptState.h" | 7 #include "bindings/core/v8/ScriptState.h" |
8 #include "bindings/core/v8/ToV8.h" | 8 #include "bindings/core/v8/ToV8.h" |
9 #include "bindings/core/v8/V8HiddenValue.h" | 9 #include "bindings/core/v8/V8HiddenValue.h" |
10 #include "modules/fetch/BytesConsumerForDataConsumerHandle.h" | 10 #include "modules/fetch/BytesConsumerForDataConsumerHandle.h" |
11 #include "modules/fetch/Request.h" | 11 #include "modules/fetch/Request.h" |
12 #include "modules/fetch/Response.h" | 12 #include "modules/fetch/Response.h" |
13 #include "modules/serviceworkers/FetchRespondWithObserver.h" | 13 #include "modules/serviceworkers/FetchRespondWithObserver.h" |
14 #include "modules/serviceworkers/ServiceWorkerError.h" | 14 #include "modules/serviceworkers/ServiceWorkerError.h" |
15 #include "modules/serviceworkers/ServiceWorkerGlobalScope.h" | 15 #include "modules/serviceworkers/ServiceWorkerGlobalScope.h" |
| 16 #include "platform/network/NetworkUtils.h" |
16 #include "public/platform/WebURLResponse.h" | 17 #include "public/platform/WebURLResponse.h" |
17 #include "public/platform/modules/serviceworker/WebServiceWorkerError.h" | 18 #include "public/platform/modules/serviceworker/WebServiceWorkerError.h" |
18 #include "wtf/PtrUtil.h" | 19 #include "wtf/PtrUtil.h" |
19 #include "wtf/RefPtr.h" | 20 #include "wtf/RefPtr.h" |
20 | 21 |
21 namespace blink { | 22 namespace blink { |
22 | 23 |
23 FetchEvent* FetchEvent::create(ScriptState* scriptState, | 24 FetchEvent* FetchEvent::create(ScriptState* scriptState, |
24 const AtomicString& type, | 25 const AtomicString& type, |
25 const FetchEventInit& initializer) { | 26 const FetchEventInit& initializer) { |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 responseData->setURLList(urlList); | 127 responseData->setURLList(urlList); |
127 responseData->setStatus(response->httpStatusCode()); | 128 responseData->setStatus(response->httpStatusCode()); |
128 responseData->setStatusMessage(response->httpStatusText()); | 129 responseData->setStatusMessage(response->httpStatusText()); |
129 responseData->setResponseTime(response->toResourceResponse().responseTime()); | 130 responseData->setResponseTime(response->toResourceResponse().responseTime()); |
130 const HTTPHeaderMap& headers( | 131 const HTTPHeaderMap& headers( |
131 response->toResourceResponse().httpHeaderFields()); | 132 response->toResourceResponse().httpHeaderFields()); |
132 for (const auto& header : headers) { | 133 for (const auto& header : headers) { |
133 responseData->headerList()->append(header.key, header.value); | 134 responseData->headerList()->append(header.key, header.value); |
134 } | 135 } |
135 FetchResponseData* taintedResponse = | 136 FetchResponseData* taintedResponse = |
136 responseData->createBasicFilteredResponse(); | 137 NetworkUtils::isRedirectResponseCode(response->httpStatusCode()) |
| 138 ? responseData->createOpaqueRedirectFilteredResponse() |
| 139 : responseData->createBasicFilteredResponse(); |
137 m_preloadResponseProperty->resolve( | 140 m_preloadResponseProperty->resolve( |
138 Response::create(scriptState->getExecutionContext(), taintedResponse)); | 141 Response::create(scriptState->getExecutionContext(), taintedResponse)); |
139 } | 142 } |
140 | 143 |
141 void FetchEvent::onNavigationPreloadError( | 144 void FetchEvent::onNavigationPreloadError( |
142 ScriptState* scriptState, | 145 ScriptState* scriptState, |
143 std::unique_ptr<WebServiceWorkerError> error) { | 146 std::unique_ptr<WebServiceWorkerError> error) { |
144 if (!scriptState->contextIsValid()) | 147 if (!scriptState->contextIsValid()) |
145 return; | 148 return; |
146 DCHECK(m_preloadResponseProperty); | 149 DCHECK(m_preloadResponseProperty); |
147 m_preloadResponseProperty->reject( | 150 m_preloadResponseProperty->reject( |
148 ServiceWorkerError::take(nullptr, *error.get())); | 151 ServiceWorkerError::take(nullptr, *error.get())); |
149 } | 152 } |
150 | 153 |
151 DEFINE_TRACE(FetchEvent) { | 154 DEFINE_TRACE(FetchEvent) { |
152 visitor->trace(m_observer); | 155 visitor->trace(m_observer); |
153 visitor->trace(m_request); | 156 visitor->trace(m_request); |
154 visitor->trace(m_preloadResponseProperty); | 157 visitor->trace(m_preloadResponseProperty); |
155 ExtendableEvent::trace(visitor); | 158 ExtendableEvent::trace(visitor); |
156 } | 159 } |
157 | 160 |
158 } // namespace blink | 161 } // namespace blink |
OLD | NEW |