Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(16)

Side by Side Diff: third_party/WebKit/Source/modules/fetch/FetchManager.cpp

Issue 1391583002: Introduce "navigate" mode in Requests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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) {
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698