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

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

Issue 398903002: Plumb redirect info out of net, through content, and into child processes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add a TODO Created 6 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc e-loading 5 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc e-loading
6 6
7 #include "content/child/resource_dispatcher.h" 7 #include "content/child/resource_dispatcher.h"
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 484
485 PendingRequestInfo* request_info = GetPendingRequestInfo(request_id); 485 PendingRequestInfo* request_info = GetPendingRequestInfo(request_id);
486 if (!request_info) 486 if (!request_info)
487 return; 487 return;
488 488
489 request_info->peer->OnDownloadedData(data_len, encoded_data_length); 489 request_info->peer->OnDownloadedData(data_len, encoded_data_length);
490 } 490 }
491 491
492 void ResourceDispatcher::OnReceivedRedirect( 492 void ResourceDispatcher::OnReceivedRedirect(
493 int request_id, 493 int request_id,
494 const GURL& new_url, 494 const net::RedirectInfo& redirect_info,
495 const GURL& new_first_party_for_cookies,
496 const ResourceResponseHead& response_head) { 495 const ResourceResponseHead& response_head) {
497 TRACE_EVENT0("loader", "ResourceDispatcher::OnReceivedRedirect"); 496 TRACE_EVENT0("loader", "ResourceDispatcher::OnReceivedRedirect");
498 PendingRequestInfo* request_info = GetPendingRequestInfo(request_id); 497 PendingRequestInfo* request_info = GetPendingRequestInfo(request_id);
499 if (!request_info) 498 if (!request_info)
500 return; 499 return;
501 request_info->response_start = ConsumeIOTimestamp(); 500 request_info->response_start = ConsumeIOTimestamp();
502 501
503 ResourceResponseInfo renderer_response_info; 502 ResourceResponseInfo renderer_response_info;
504 ToResourceResponseInfo(*request_info, response_head, &renderer_response_info); 503 ToResourceResponseInfo(*request_info, response_head, &renderer_response_info);
505 if (request_info->peer->OnReceivedRedirect( 504 if (request_info->peer->OnReceivedRedirect(redirect_info,
506 new_url, new_first_party_for_cookies, renderer_response_info)) { 505 renderer_response_info)) {
507 // Double-check if the request is still around. The call above could 506 // Double-check if the request is still around. The call above could
508 // potentially remove it. 507 // potentially remove it.
509 request_info = GetPendingRequestInfo(request_id); 508 request_info = GetPendingRequestInfo(request_id);
510 if (!request_info) 509 if (!request_info)
511 return; 510 return;
512 // We update the response_url here so that we can send it to 511 // We update the response_url here so that we can send it to
513 // SiteIsolationPolicy later when OnReceivedResponse is called. 512 // SiteIsolationPolicy later when OnReceivedResponse is called.
514 request_info->response_url = new_url; 513 request_info->response_url = redirect_info.url;
515 request_info->pending_redirect_message.reset( 514 request_info->pending_redirect_message.reset(
516 new ResourceHostMsg_FollowRedirect(request_id)); 515 new ResourceHostMsg_FollowRedirect(request_id));
517 if (!request_info->is_deferred) { 516 if (!request_info->is_deferred) {
518 FollowPendingRedirect(request_id, *request_info); 517 FollowPendingRedirect(request_id, *request_info);
519 } 518 }
520 } else { 519 } else {
521 CancelPendingRequest(request_id); 520 CancelPendingRequest(request_id);
522 } 521 }
523 } 522 }
524 523
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
852 void ResourceDispatcher::ReleaseResourcesInMessageQueue(MessageQueue* queue) { 851 void ResourceDispatcher::ReleaseResourcesInMessageQueue(MessageQueue* queue) {
853 while (!queue->empty()) { 852 while (!queue->empty()) {
854 IPC::Message* message = queue->front(); 853 IPC::Message* message = queue->front();
855 ReleaseResourcesInDataMessage(*message); 854 ReleaseResourcesInDataMessage(*message);
856 queue->pop_front(); 855 queue->pop_front();
857 delete message; 856 delete message;
858 } 857 }
859 } 858 }
860 859
861 } // namespace content 860 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698