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

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

Issue 2804023004: Replace ASSERT with DCHECK in modules/fetch. (Closed)
Patch Set: Use DCHECK_EQ in all but a few instances Created 3 years, 8 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 "modules/fetch/FetchManager.h" 5 #include "modules/fetch/FetchManager.h"
6 6
7 #include <memory> 7 #include <memory>
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 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 updater_(updater), 186 updater_(updater),
187 response_(response), 187 response_(response),
188 loader_(loader), 188 loader_(loader),
189 integrity_metadata_(integrity_metadata), 189 integrity_metadata_(integrity_metadata),
190 url_(url), 190 url_(url),
191 finished_(false) { 191 finished_(false) {
192 reader_ = handle_->ObtainReader(this); 192 reader_ = handle_->ObtainReader(this);
193 } 193 }
194 194
195 void DidGetReadable() override { 195 void DidGetReadable() override {
196 ASSERT(reader_); 196 DCHECK(reader_);
197 ASSERT(loader_); 197 DCHECK(loader_);
198 ASSERT(response_); 198 DCHECK(response_);
199 199
200 WebDataConsumerHandle::Result r = WebDataConsumerHandle::kOk; 200 WebDataConsumerHandle::Result r = WebDataConsumerHandle::kOk;
201 while (r == WebDataConsumerHandle::kOk) { 201 while (r == WebDataConsumerHandle::kOk) {
202 const void* buffer; 202 const void* buffer;
203 size_t size; 203 size_t size;
204 r = reader_->BeginRead(&buffer, WebDataConsumerHandle::kFlagNone, 204 r = reader_->BeginRead(&buffer, WebDataConsumerHandle::kFlagNone,
205 &size); 205 &size);
206 if (r == WebDataConsumerHandle::kOk) { 206 if (r == WebDataConsumerHandle::kOk) {
207 buffer_.Append(static_cast<const char*>(buffer), size); 207 buffer_.Append(static_cast<const char*>(buffer), size);
208 reader_->EndRead(size); 208 reader_->EndRead(size);
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 finished_(false), 302 finished_(false),
303 response_http_status_code_(0), 303 response_http_status_code_(0),
304 integrity_verifier_(nullptr), 304 integrity_verifier_(nullptr),
305 did_finish_loading_(false), 305 did_finish_loading_(false),
306 is_isolated_world_(is_isolated_world), 306 is_isolated_world_(is_isolated_world),
307 execution_context_(execution_context) { 307 execution_context_(execution_context) {
308 url_list_.push_back(request->Url()); 308 url_list_.push_back(request->Url());
309 } 309 }
310 310
311 FetchManager::Loader::~Loader() { 311 FetchManager::Loader::~Loader() {
312 ASSERT(!loader_); 312 DCHECK(!loader_);
313 } 313 }
314 314
315 DEFINE_TRACE(FetchManager::Loader) { 315 DEFINE_TRACE(FetchManager::Loader) {
316 visitor->Trace(fetch_manager_); 316 visitor->Trace(fetch_manager_);
317 visitor->Trace(resolver_); 317 visitor->Trace(resolver_);
318 visitor->Trace(request_); 318 visitor->Trace(request_);
319 visitor->Trace(loader_); 319 visitor->Trace(loader_);
320 visitor->Trace(integrity_verifier_); 320 visitor->Trace(integrity_verifier_);
321 visitor->Trace(execution_context_); 321 visitor->Trace(execution_context_);
322 } 322 }
323 323
324 void FetchManager::Loader::DidReceiveRedirectTo(const KURL& url) { 324 void FetchManager::Loader::DidReceiveRedirectTo(const KURL& url) {
325 url_list_.push_back(url); 325 url_list_.push_back(url);
326 } 326 }
327 327
328 void FetchManager::Loader::DidReceiveResponse( 328 void FetchManager::Loader::DidReceiveResponse(
329 unsigned long, 329 unsigned long,
330 const ResourceResponse& response, 330 const ResourceResponse& response,
331 std::unique_ptr<WebDataConsumerHandle> handle) { 331 std::unique_ptr<WebDataConsumerHandle> handle) {
332 ASSERT(handle); 332 DCHECK(handle);
333 // TODO(horo): This check could be false when we will use the response url 333 // TODO(horo): This check could be false when we will use the response url
334 // in service worker responses. (crbug.com/553535) 334 // in service worker responses. (crbug.com/553535)
335 DCHECK(response.Url() == url_list_.back()); 335 DCHECK(response.Url() == url_list_.back());
336 ScriptState* script_state = resolver_->GetScriptState(); 336 ScriptState* script_state = resolver_->GetScriptState();
337 ScriptState::Scope scope(script_state); 337 ScriptState::Scope scope(script_state);
338 338
339 if (response.Url().ProtocolIs("blob") && response.HttpStatusCode() == 404) { 339 if (response.Url().ProtocolIs("blob") && response.HttpStatusCode() == 404) {
340 // "If |blob| is null, return a network error." 340 // "If |blob| is null, return a network error."
341 // https://fetch.spec.whatwg.org/#concept-basic-fetch 341 // https://fetch.spec.whatwg.org/#concept-basic-fetch
342 PerformNetworkError("Blob not found."); 342 PerformNetworkError("Blob not found.");
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 // whose name is `Content-Type` and value is the MIME type and 486 // whose name is `Content-Type` and value is the MIME type and
487 // parameters returned from obtaining a resource" 487 // parameters returned from obtaining a resource"
488 r->headers()->HeaderList()->Remove(HTTPNames::Access_Control_Allow_Origin); 488 r->headers()->HeaderList()->Remove(HTTPNames::Access_Control_Allow_Origin);
489 } 489 }
490 r->headers()->SetGuard(Headers::kImmutableGuard); 490 r->headers()->SetGuard(Headers::kImmutableGuard);
491 491
492 if (request_->Integrity().IsEmpty()) { 492 if (request_->Integrity().IsEmpty()) {
493 resolver_->Resolve(r); 493 resolver_->Resolve(r);
494 resolver_.Clear(); 494 resolver_.Clear();
495 } else { 495 } else {
496 ASSERT(!integrity_verifier_); 496 DCHECK(!integrity_verifier_);
497 integrity_verifier_ = 497 integrity_verifier_ =
498 new SRIVerifier(std::move(handle), sri_consumer, r, this, 498 new SRIVerifier(std::move(handle), sri_consumer, r, this,
499 request_->Integrity(), response.Url()); 499 request_->Integrity(), response.Url());
500 } 500 }
501 } 501 }
502 502
503 void FetchManager::Loader::DidFinishLoading(unsigned long, double) { 503 void FetchManager::Loader::DidFinishLoading(unsigned long, double) {
504 did_finish_loading_ = true; 504 did_finish_loading_ = true;
505 // If there is an integrity verifier, and it has not already finished, it 505 // If there is an integrity verifier, and it has not already finished, it
506 // will take care of finishing the load or performing a network error when 506 // will take care of finishing the load or performing a network error when
(...skipping 29 matching lines...) Expand all
536 } 536 }
537 537
538 Document* FetchManager::Loader::GetDocument() const { 538 Document* FetchManager::Loader::GetDocument() const {
539 if (execution_context_->IsDocument()) { 539 if (execution_context_->IsDocument()) {
540 return ToDocument(execution_context_); 540 return ToDocument(execution_context_);
541 } 541 }
542 return nullptr; 542 return nullptr;
543 } 543 }
544 544
545 void FetchManager::Loader::LoadSucceeded() { 545 void FetchManager::Loader::LoadSucceeded() {
546 ASSERT(!failed_); 546 DCHECK(!failed_);
547 547
548 finished_ = true; 548 finished_ = true;
549 549
550 if (GetDocument() && GetDocument()->GetFrame() && 550 if (GetDocument() && GetDocument()->GetFrame() &&
551 GetDocument()->GetFrame()->GetPage() && 551 GetDocument()->GetFrame()->GetPage() &&
552 FetchUtils::IsOkStatus(response_http_status_code_)) { 552 FetchUtils::IsOkStatus(response_http_status_code_)) {
553 GetDocument()->GetFrame()->GetPage()->GetChromeClient().AjaxSucceeded( 553 GetDocument()->GetFrame()->GetPage()->GetChromeClient().AjaxSucceeded(
554 GetDocument()->GetFrame()); 554 GetDocument()->GetFrame());
555 } 555 }
556 probe::didFinishFetch(execution_context_, this, request_->Method(), 556 probe::didFinishFetch(execution_context_, this, request_->Method(),
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 "\" is not supported."); 693 "\" is not supported.");
694 } 694 }
695 } 695 }
696 696
697 void FetchManager::Loader::PerformNetworkError(const String& message) { 697 void FetchManager::Loader::PerformNetworkError(const String& message) {
698 Failed(message); 698 Failed(message);
699 } 699 }
700 700
701 void FetchManager::Loader::PerformHTTPFetch(bool cors_flag, 701 void FetchManager::Loader::PerformHTTPFetch(bool cors_flag,
702 bool cors_preflight_flag) { 702 bool cors_preflight_flag) {
703 ASSERT(SchemeRegistry::ShouldTreatURLSchemeAsSupportingFetchAPI( 703 DCHECK(SchemeRegistry::ShouldTreatURLSchemeAsSupportingFetchAPI(
704 request_->Url().Protocol()) || 704 request_->Url().Protocol()) ||
705 (request_->Url().ProtocolIs("blob") && !cors_flag && 705 (request_->Url().ProtocolIs("blob") && !cors_flag &&
706 !cors_preflight_flag)); 706 !cors_preflight_flag));
707 // CORS preflight fetch procedure is implemented inside 707 // CORS preflight fetch procedure is implemented inside
708 // DocumentThreadableLoader. 708 // DocumentThreadableLoader.
709 709
710 // "1. Let |HTTPRequest| be a copy of |request|, except that |HTTPRequest|'s 710 // "1. Let |HTTPRequest| be a copy of |request|, except that |HTTPRequest|'s
711 // body is a tee of |request|'s body." 711 // body is a tee of |request|'s body."
712 // We use ResourceRequest class for HTTPRequest. 712 // We use ResourceRequest class for HTTPRequest.
713 // FIXME: Support body. 713 // FIXME: Support body.
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
832 threadable_loader_options, 832 threadable_loader_options,
833 resource_loader_options); 833 resource_loader_options);
834 loader_->Start(request); 834 loader_->Start(request);
835 } 835 }
836 836
837 // performDataFetch() is almost the same as performHTTPFetch(), except for: 837 // performDataFetch() is almost the same as performHTTPFetch(), except for:
838 // - We set AllowCrossOriginRequests to allow requests to data: URLs in 838 // - We set AllowCrossOriginRequests to allow requests to data: URLs in
839 // 'same-origin' mode. 839 // 'same-origin' mode.
840 // - We reject non-GET method. 840 // - We reject non-GET method.
841 void FetchManager::Loader::PerformDataFetch() { 841 void FetchManager::Loader::PerformDataFetch() {
842 ASSERT(request_->Url().ProtocolIsData()); 842 DCHECK(request_->Url().ProtocolIsData());
843 843
844 ResourceRequest request(request_->Url()); 844 ResourceRequest request(request_->Url());
845 request.SetRequestContext(request_->Context()); 845 request.SetRequestContext(request_->Context());
846 request.SetUseStreamOnResponse(true); 846 request.SetUseStreamOnResponse(true);
847 request.SetHTTPMethod(request_->Method()); 847 request.SetHTTPMethod(request_->Method());
848 request.SetFetchRedirectMode(WebURLRequest::kFetchRedirectModeError); 848 request.SetFetchRedirectMode(WebURLRequest::kFetchRedirectModeError);
849 // We intentionally skip 'setExternalRequestStateFromRequestorAddressSpace', 849 // We intentionally skip 'setExternalRequestStateFromRequestorAddressSpace',
850 // as 'data:' can never be external. 850 // as 'data:' can never be external.
851 851
852 ResourceLoaderOptions resource_loader_options; 852 ResourceLoaderOptions resource_loader_options;
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
923 loaders_.erase(loader); 923 loaders_.erase(loader);
924 loader->Dispose(); 924 loader->Dispose();
925 } 925 }
926 926
927 DEFINE_TRACE(FetchManager) { 927 DEFINE_TRACE(FetchManager) {
928 visitor->Trace(loaders_); 928 visitor->Trace(loaders_);
929 ContextLifecycleObserver::Trace(visitor); 929 ContextLifecycleObserver::Trace(visitor);
930 } 930 }
931 931
932 } // namespace blink 932 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698