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

Side by Side Diff: content/child/web_url_loader_impl.cc

Issue 941223002: Fix regression from r317126 that caused a DCHECK in ResourceDispatcher. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "content/child/web_url_loader_impl.h" 5 #include "content/child/web_url_loader_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <deque> 8 #include <deque>
9 #include <string> 9 #include <string>
10 10
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 client_(NULL), 366 client_(NULL),
367 resource_dispatcher_(resource_dispatcher), 367 resource_dispatcher_(resource_dispatcher),
368 task_runner_(task_runner), 368 task_runner_(task_runner),
369 referrer_policy_(blink::WebReferrerPolicyDefault), 369 referrer_policy_(blink::WebReferrerPolicyDefault),
370 got_all_stream_body_data_(false), 370 got_all_stream_body_data_(false),
371 defers_loading_(NOT_DEFERRING), 371 defers_loading_(NOT_DEFERRING),
372 request_id_(-1) { 372 request_id_(-1) {
373 } 373 }
374 374
375 void WebURLLoaderImpl::Context::Cancel() { 375 void WebURLLoaderImpl::Context::Cancel() {
376 if (resource_dispatcher_) // NULL in unittest. 376 if (resource_dispatcher_ && // NULL in unittest.
377 request_id_ != -1) {
377 resource_dispatcher_->Cancel(request_id_); 378 resource_dispatcher_->Cancel(request_id_);
Ken Russell (switch to Gerrit) 2015/02/20 17:52:51 Is it OK that we'll potentially send a -1 request_
jam 2015/02/20 17:56:29 How could that happen? This if statement is guarde
Ken Russell (switch to Gerrit) 2015/02/20 17:57:30 Ah, sorry, I read the diffs backward and thought y
379 request_id_ = -1;
380 }
378 381
379 // Ensure that we do not notify the multipart delegate anymore as it has 382 // Ensure that we do not notify the multipart delegate anymore as it has
380 // its own pointer to the client. 383 // its own pointer to the client.
381 if (multipart_delegate_) 384 if (multipart_delegate_)
382 multipart_delegate_->Cancel(); 385 multipart_delegate_->Cancel();
383 // Ditto for the ftp delegate. 386 // Ditto for the ftp delegate.
384 if (ftp_listing_delegate_) 387 if (ftp_listing_delegate_)
385 ftp_listing_delegate_->Cancel(); 388 ftp_listing_delegate_->Cancel();
386 389
387 // Do not make any further calls to the client. 390 // Do not make any further calls to the client.
388 client_ = NULL; 391 client_ = NULL;
389 loader_ = NULL; 392 loader_ = NULL;
390 } 393 }
391 394
392 void WebURLLoaderImpl::Context::SetDefersLoading(bool value) { 395 void WebURLLoaderImpl::Context::SetDefersLoading(bool value) {
393 resource_dispatcher_->SetDefersLoading(request_id_, value); 396 if (request_id_ != -1)
397 resource_dispatcher_->SetDefersLoading(request_id_, value);
394 if (value && defers_loading_ == NOT_DEFERRING) { 398 if (value && defers_loading_ == NOT_DEFERRING) {
395 defers_loading_ = SHOULD_DEFER; 399 defers_loading_ = SHOULD_DEFER;
396 } else if (!value && defers_loading_ != NOT_DEFERRING) { 400 } else if (!value && defers_loading_ != NOT_DEFERRING) {
397 if (defers_loading_ == DEFERRED_DATA) { 401 if (defers_loading_ == DEFERRED_DATA) {
398 task_runner_->PostTask(FROM_HERE, 402 task_runner_->PostTask(FROM_HERE,
399 base::Bind(&Context::HandleDataURL, this)); 403 base::Bind(&Context::HandleDataURL, this));
400 } 404 }
401 defers_loading_ = NOT_DEFERRING; 405 defers_loading_ = NOT_DEFERRING;
402 } 406 }
403 } 407 }
404 408
405 void WebURLLoaderImpl::Context::DidChangePriority( 409 void WebURLLoaderImpl::Context::DidChangePriority(
406 WebURLRequest::Priority new_priority, int intra_priority_value) { 410 WebURLRequest::Priority new_priority, int intra_priority_value) {
407 resource_dispatcher_->DidChangePriority( 411 if (request_id_ != -1) {
408 request_id_, 412 resource_dispatcher_->DidChangePriority(
409 ConvertWebKitPriorityToNetPriority(new_priority), 413 request_id_,
410 intra_priority_value); 414 ConvertWebKitPriorityToNetPriority(new_priority),
415 intra_priority_value);
416 }
411 } 417 }
412 418
413 bool WebURLLoaderImpl::Context::AttachThreadedDataReceiver( 419 bool WebURLLoaderImpl::Context::AttachThreadedDataReceiver(
414 blink::WebThreadedDataReceiver* threaded_data_receiver) { 420 blink::WebThreadedDataReceiver* threaded_data_receiver) {
415 resource_dispatcher_->AttachThreadedDataReceiver( 421 if (request_id_ != -1) {
416 request_id_, threaded_data_receiver); 422 resource_dispatcher_->AttachThreadedDataReceiver(
423 request_id_, threaded_data_receiver);
424 }
417 425
418 return false; 426 return false;
419 } 427 }
420 428
421 void WebURLLoaderImpl::Context::Start(const WebURLRequest& request, 429 void WebURLLoaderImpl::Context::Start(const WebURLRequest& request,
422 SyncLoadResponse* sync_load_response) { 430 SyncLoadResponse* sync_load_response) {
431 DCHECK(request_id_ == -1);
423 request_ = request; // Save the request. 432 request_ = request; // Save the request.
424 if (request.extraData()) { 433 if (request.extraData()) {
425 RequestExtraData* extra_data = 434 RequestExtraData* extra_data =
426 static_cast<RequestExtraData*>(request.extraData()); 435 static_cast<RequestExtraData*>(request.extraData());
427 stream_override_ = extra_data->TakeStreamOverrideOwnership(); 436 stream_override_ = extra_data->TakeStreamOverrideOwnership();
428 } 437 }
429 438
430 GURL url = request.url(); 439 GURL url = request.url();
431 440
432 // PlzNavigate: during navigation, the renderer should request a stream which 441 // PlzNavigate: during navigation, the renderer should request a stream which
(...skipping 702 matching lines...) Expand 10 before | Expand all | Expand 10 after
1135 int intra_priority_value) { 1144 int intra_priority_value) {
1136 context_->DidChangePriority(new_priority, intra_priority_value); 1145 context_->DidChangePriority(new_priority, intra_priority_value);
1137 } 1146 }
1138 1147
1139 bool WebURLLoaderImpl::attachThreadedDataReceiver( 1148 bool WebURLLoaderImpl::attachThreadedDataReceiver(
1140 blink::WebThreadedDataReceiver* threaded_data_receiver) { 1149 blink::WebThreadedDataReceiver* threaded_data_receiver) {
1141 return context_->AttachThreadedDataReceiver(threaded_data_receiver); 1150 return context_->AttachThreadedDataReceiver(threaded_data_receiver);
1142 } 1151 }
1143 1152
1144 } // namespace content 1153 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698