OLD | NEW |
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 503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
514 void ResourceDispatcher::FollowPendingRedirect( | 514 void ResourceDispatcher::FollowPendingRedirect( |
515 int request_id, | 515 int request_id, |
516 PendingRequestInfo& request_info) { | 516 PendingRequestInfo& request_info) { |
517 IPC::Message* msg = request_info.pending_redirect_message.release(); | 517 IPC::Message* msg = request_info.pending_redirect_message.release(); |
518 if (msg) | 518 if (msg) |
519 message_sender()->Send(msg); | 519 message_sender()->Send(msg); |
520 } | 520 } |
521 | 521 |
522 void ResourceDispatcher::OnRequestComplete( | 522 void ResourceDispatcher::OnRequestComplete( |
523 int request_id, | 523 int request_id, |
524 int error_code, | 524 const ResourceMsg_RequestCompleteData& request_complete_data) { |
525 bool was_ignored_by_handler, | |
526 const std::string& security_info, | |
527 const base::TimeTicks& browser_completion_time) { | |
528 TRACE_EVENT0("loader", "ResourceDispatcher::OnRequestComplete"); | 525 TRACE_EVENT0("loader", "ResourceDispatcher::OnRequestComplete"); |
529 SiteIsolationPolicy::OnRequestComplete(request_id); | 526 SiteIsolationPolicy::OnRequestComplete(request_id); |
530 | 527 |
531 PendingRequestInfo* request_info = GetPendingRequestInfo(request_id); | 528 PendingRequestInfo* request_info = GetPendingRequestInfo(request_id); |
532 if (!request_info) | 529 if (!request_info) |
533 return; | 530 return; |
534 request_info->completion_time = ConsumeIOTimestamp(); | 531 request_info->completion_time = ConsumeIOTimestamp(); |
535 request_info->buffer.reset(); | 532 request_info->buffer.reset(); |
536 request_info->buffer_size = 0; | 533 request_info->buffer_size = 0; |
537 | 534 |
538 ResourceLoaderBridge::Peer* peer = request_info->peer; | 535 ResourceLoaderBridge::Peer* peer = request_info->peer; |
539 | 536 |
540 if (delegate_) { | 537 if (delegate_) { |
541 ResourceLoaderBridge::Peer* new_peer = | 538 ResourceLoaderBridge::Peer* new_peer = |
542 delegate_->OnRequestComplete( | 539 delegate_->OnRequestComplete( |
543 request_info->peer, request_info->resource_type, error_code); | 540 request_info->peer, request_info->resource_type, |
| 541 request_complete_data.error_code); |
544 if (new_peer) | 542 if (new_peer) |
545 request_info->peer = new_peer; | 543 request_info->peer = new_peer; |
546 } | 544 } |
547 | 545 |
548 base::TimeTicks renderer_completion_time = ToRendererCompletionTime( | 546 base::TimeTicks renderer_completion_time = ToRendererCompletionTime( |
549 *request_info, browser_completion_time); | 547 *request_info, request_complete_data.completion_time); |
550 // The request ID will be removed from our pending list in the destructor. | 548 // The request ID will be removed from our pending list in the destructor. |
551 // Normally, dispatching this message causes the reference-counted request to | 549 // Normally, dispatching this message causes the reference-counted request to |
552 // die immediately. | 550 // die immediately. |
553 peer->OnCompletedRequest(error_code, was_ignored_by_handler, security_info, | 551 peer->OnCompletedRequest(request_complete_data.error_code, |
| 552 request_complete_data.was_ignored_by_handler, |
| 553 request_complete_data.exists_in_cache, |
| 554 request_complete_data.security_info, |
554 renderer_completion_time); | 555 renderer_completion_time); |
555 } | 556 } |
556 | 557 |
557 int ResourceDispatcher::AddPendingRequest( | 558 int ResourceDispatcher::AddPendingRequest( |
558 ResourceLoaderBridge::Peer* callback, | 559 ResourceLoaderBridge::Peer* callback, |
559 ResourceType::Type resource_type, | 560 ResourceType::Type resource_type, |
560 int origin_pid, | 561 int origin_pid, |
561 const GURL& frame_origin, | 562 const GURL& frame_origin, |
562 const GURL& request_url) { | 563 const GURL& request_url) { |
563 // Compute a unique request_id for this renderer process. | 564 // Compute a unique request_id for this renderer process. |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
802 void ResourceDispatcher::ReleaseResourcesInMessageQueue(MessageQueue* queue) { | 803 void ResourceDispatcher::ReleaseResourcesInMessageQueue(MessageQueue* queue) { |
803 while (!queue->empty()) { | 804 while (!queue->empty()) { |
804 IPC::Message* message = queue->front(); | 805 IPC::Message* message = queue->front(); |
805 ReleaseResourcesInDataMessage(*message); | 806 ReleaseResourcesInDataMessage(*message); |
806 queue->pop_front(); | 807 queue->pop_front(); |
807 delete message; | 808 delete message; |
808 } | 809 } |
809 } | 810 } |
810 | 811 |
811 } // namespace content | 812 } // namespace content |
OLD | NEW |