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