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 "config.h" | 5 #include "config.h" |
6 #include "modules/fetch/FetchManager.h" | 6 #include "modules/fetch/FetchManager.h" |
7 | 7 |
8 #include "bindings/core/v8/ExceptionState.h" | 8 #include "bindings/core/v8/ExceptionState.h" |
9 #include "bindings/core/v8/ScriptPromiseResolver.h" | 9 #include "bindings/core/v8/ScriptPromiseResolver.h" |
10 #include "bindings/core/v8/ScriptState.h" | 10 #include "bindings/core/v8/ScriptState.h" |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
212 case WebURLRequest::FetchRequestModeSameOrigin: | 212 case WebURLRequest::FetchRequestModeSameOrigin: |
213 ASSERT_NOT_REACHED(); | 213 ASSERT_NOT_REACHED(); |
214 break; | 214 break; |
215 case WebURLRequest::FetchRequestModeNoCORS: | 215 case WebURLRequest::FetchRequestModeNoCORS: |
216 m_request->setResponseTainting(FetchRequestData::OpaqueTainting); | 216 m_request->setResponseTainting(FetchRequestData::OpaqueTainting); |
217 break; | 217 break; |
218 case WebURLRequest::FetchRequestModeCORS: | 218 case WebURLRequest::FetchRequestModeCORS: |
219 case WebURLRequest::FetchRequestModeCORSWithForcedPreflight: | 219 case WebURLRequest::FetchRequestModeCORSWithForcedPreflight: |
220 m_request->setResponseTainting(FetchRequestData::CORSTainting); | 220 m_request->setResponseTainting(FetchRequestData::CORSTainting); |
221 break; | 221 break; |
222 case WebURLRequest::FetchRequestModeNavigate: | |
223 ASSERT_NOT_REACHED(); | |
224 break; | |
222 } | 225 } |
223 } | 226 } |
224 | 227 |
225 FetchResponseData* responseData = nullptr; | 228 FetchResponseData* responseData = nullptr; |
226 CompositeDataConsumerHandle::Updater* updater = nullptr; | 229 CompositeDataConsumerHandle::Updater* updater = nullptr; |
227 if (m_request->integrity().isEmpty()) | 230 if (m_request->integrity().isEmpty()) |
228 responseData = FetchResponseData::createWithBuffer(new BodyStreamBuffer( createFetchDataConsumerHandleFromWebHandle(handle))); | 231 responseData = FetchResponseData::createWithBuffer(new BodyStreamBuffer( createFetchDataConsumerHandleFromWebHandle(handle))); |
229 else | 232 else |
230 responseData = FetchResponseData::createWithBuffer(new BodyStreamBuffer( createFetchDataConsumerHandleFromWebHandle(CompositeDataConsumerHandle::create(c reateWaitingDataConsumerHandle(), &updater)))); | 233 responseData = FetchResponseData::createWithBuffer(new BodyStreamBuffer( createFetchDataConsumerHandleFromWebHandle(CompositeDataConsumerHandle::create(c reateWaitingDataConsumerHandle(), &updater)))); |
231 responseData->setStatus(response.httpStatusCode()); | 234 responseData->setStatus(response.httpStatusCode()); |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
374 // "- |request|'s url's scheme is 'about'" | 377 // "- |request|'s url's scheme is 'about'" |
375 // Note we don't support to call this method with |CORS flag|. | 378 // Note we don't support to call this method with |CORS flag|. |
376 if ((SecurityOrigin::create(m_request->url())->isSameSchemeHostPortAndSubori gin(m_request->origin().get())) | 379 if ((SecurityOrigin::create(m_request->url())->isSameSchemeHostPortAndSubori gin(m_request->origin().get())) |
377 || (m_request->url().protocolIsData() && m_request->sameOriginDataURLFla g()) | 380 || (m_request->url().protocolIsData() && m_request->sameOriginDataURLFla g()) |
378 || (m_request->url().protocolIsAbout())) { | 381 || (m_request->url().protocolIsAbout())) { |
379 // "The result of performing a basic fetch using request." | 382 // "The result of performing a basic fetch using request." |
380 performBasicFetch(); | 383 performBasicFetch(); |
381 return; | 384 return; |
382 } | 385 } |
383 | 386 |
387 // "- |request|'s mode is |navigate|" | |
388 if (m_request->mode() == WebURLRequest::FetchRequestModeNavigate) { | |
yhirano
2015/10/16 18:15:53
It would be good to merge this block with the prev
shiva.jm
2015/10/19 09:03:49
Done.
| |
389 // "The result of performing a basic fetch using |request|." | |
390 performBasicFetch(); | |
391 return; | |
392 } | |
393 | |
384 // "- |request|'s mode is |same-origin|" | 394 // "- |request|'s mode is |same-origin|" |
385 if (m_request->mode() == WebURLRequest::FetchRequestModeSameOrigin) { | 395 if (m_request->mode() == WebURLRequest::FetchRequestModeSameOrigin) { |
386 // "A network error." | 396 // "A network error." |
387 performNetworkError("Fetch API cannot load " + m_request->url().string() + ". Request mode is \"same-origin\" but the URL\'s origin is not same as the r equest origin " + m_request->origin()->toString() + "."); | 397 performNetworkError("Fetch API cannot load " + m_request->url().string() + ". Request mode is \"same-origin\" but the URL\'s origin is not same as the r equest origin " + m_request->origin()->toString() + "."); |
388 return; | 398 return; |
389 } | 399 } |
390 | 400 |
391 // "- |request|'s mode is |no CORS|" | 401 // "- |request|'s mode is |no CORS|" |
392 if (m_request->mode() == WebURLRequest::FetchRequestModeNoCORS) { | 402 if (m_request->mode() == WebURLRequest::FetchRequestModeNoCORS) { |
393 // "Set |request|'s response tainting to |opaque|." | 403 // "Set |request|'s response tainting to |opaque|." |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
538 case WebURLRequest::FetchRequestModeSameOrigin: | 548 case WebURLRequest::FetchRequestModeSameOrigin: |
539 threadableLoaderOptions.crossOriginRequestPolicy = DenyCrossOriginReques ts; | 549 threadableLoaderOptions.crossOriginRequestPolicy = DenyCrossOriginReques ts; |
540 break; | 550 break; |
541 case WebURLRequest::FetchRequestModeNoCORS: | 551 case WebURLRequest::FetchRequestModeNoCORS: |
542 threadableLoaderOptions.crossOriginRequestPolicy = AllowCrossOriginReque sts; | 552 threadableLoaderOptions.crossOriginRequestPolicy = AllowCrossOriginReque sts; |
543 break; | 553 break; |
544 case WebURLRequest::FetchRequestModeCORS: | 554 case WebURLRequest::FetchRequestModeCORS: |
545 case WebURLRequest::FetchRequestModeCORSWithForcedPreflight: | 555 case WebURLRequest::FetchRequestModeCORSWithForcedPreflight: |
546 threadableLoaderOptions.crossOriginRequestPolicy = UseAccessControl; | 556 threadableLoaderOptions.crossOriginRequestPolicy = UseAccessControl; |
547 break; | 557 break; |
558 case WebURLRequest::FetchRequestModeNavigate: | |
559 threadableLoaderOptions.crossOriginRequestPolicy = DenyCrossOriginReques ts; | |
560 break; | |
548 } | 561 } |
549 InspectorInstrumentation::willStartFetch(executionContext(), this); | 562 InspectorInstrumentation::willStartFetch(executionContext(), this); |
550 m_loader = ThreadableLoader::create(*executionContext(), this, request, thre adableLoaderOptions, resourceLoaderOptions); | 563 m_loader = ThreadableLoader::create(*executionContext(), this, request, thre adableLoaderOptions, resourceLoaderOptions); |
551 if (!m_loader) | 564 if (!m_loader) |
552 performNetworkError("Can't create ThreadableLoader"); | 565 performNetworkError("Can't create ThreadableLoader"); |
553 } | 566 } |
554 | 567 |
555 void FetchManager::Loader::failed(const String& message) | 568 void FetchManager::Loader::failed(const String& message) |
556 { | 569 { |
557 if (m_failed || m_finished) | 570 if (m_failed || m_finished) |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
617 loader->dispose(); | 630 loader->dispose(); |
618 } | 631 } |
619 | 632 |
620 DEFINE_TRACE(FetchManager) | 633 DEFINE_TRACE(FetchManager) |
621 { | 634 { |
622 visitor->trace(m_executionContext); | 635 visitor->trace(m_executionContext); |
623 visitor->trace(m_loaders); | 636 visitor->trace(m_loaders); |
624 } | 637 } |
625 | 638 |
626 } // namespace blink | 639 } // namespace blink |
OLD | NEW |