OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/browser/renderer_host/resource_dispatcher_host.h" | 7 #include "content/browser/renderer_host/resource_dispatcher_host.h" |
8 | 8 |
9 #include <set> | 9 #include <set> |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
12 #include "base/bind.h" | 12 #include "base/bind.h" |
13 #include "base/command_line.h" | 13 #include "base/command_line.h" |
14 #include "base/logging.h" | 14 #include "base/logging.h" |
15 #include "base/memory/scoped_ptr.h" | 15 #include "base/memory/scoped_ptr.h" |
16 #include "base/message_loop.h" | 16 #include "base/message_loop.h" |
17 #include "base/metrics/histogram.h" | 17 #include "base/metrics/histogram.h" |
18 #include "base/shared_memory.h" | 18 #include "base/shared_memory.h" |
19 #include "base/stl_util-inl.h" | 19 #include "base/stl_util-inl.h" |
20 #include "base/time.h" | 20 #include "base/time.h" |
21 #include "chrome/browser/download/download_file_manager.h" | 21 #include "chrome/browser/download/download_file_manager.h" |
22 #include "chrome/browser/download/download_manager.h" | 22 #include "chrome/browser/download/download_manager.h" |
23 #include "chrome/browser/download/download_request_limiter.h" | 23 #include "chrome/browser/download/download_request_limiter.h" |
24 #include "chrome/browser/download/download_util.h" | 24 #include "chrome/browser/download/download_util.h" |
25 #include "chrome/browser/download/save_file_manager.h" | 25 #include "chrome/browser/download/save_file_manager.h" |
26 #include "chrome/browser/external_protocol_handler.h" | 26 #include "chrome/browser/external_protocol_handler.h" |
27 #include "chrome/browser/net/url_request_tracking.h" | |
28 #include "chrome/browser/prerender/prerender_manager.h" | 27 #include "chrome/browser/prerender/prerender_manager.h" |
29 #include "chrome/browser/prerender/prerender_tracker.h" | 28 #include "chrome/browser/prerender/prerender_tracker.h" |
30 #include "chrome/browser/profiles/profile.h" | 29 #include "chrome/browser/profiles/profile.h" |
31 #include "chrome/browser/renderer_host/download_resource_handler.h" | 30 #include "chrome/browser/renderer_host/download_resource_handler.h" |
32 #include "chrome/browser/renderer_host/safe_browsing_resource_handler.h" | 31 #include "chrome/browser/renderer_host/safe_browsing_resource_handler.h" |
33 #include "chrome/browser/renderer_host/save_file_resource_handler.h" | 32 #include "chrome/browser/renderer_host/save_file_resource_handler.h" |
34 #include "chrome/browser/safe_browsing/safe_browsing_service.h" | 33 #include "chrome/browser/safe_browsing/safe_browsing_service.h" |
35 #include "chrome/browser/ssl/ssl_client_auth_handler.h" | 34 #include "chrome/browser/ssl/ssl_client_auth_handler.h" |
36 #include "chrome/browser/ssl/ssl_manager.h" | 35 #include "chrome/browser/ssl/ssl_manager.h" |
37 #include "chrome/browser/ui/login/login_prompt.h" | 36 #include "chrome/browser/ui/login/login_prompt.h" |
(...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
585 new OfflineResourceHandler(handler, child_id, route_id, this, request); | 584 new OfflineResourceHandler(handler, child_id, route_id, this, request); |
586 #endif | 585 #endif |
587 | 586 |
588 // Make extra info and read footer (contains request ID). | 587 // Make extra info and read footer (contains request ID). |
589 ResourceDispatcherHostRequestInfo* extra_info = | 588 ResourceDispatcherHostRequestInfo* extra_info = |
590 new ResourceDispatcherHostRequestInfo( | 589 new ResourceDispatcherHostRequestInfo( |
591 handler, | 590 handler, |
592 process_type, | 591 process_type, |
593 child_id, | 592 child_id, |
594 route_id, | 593 route_id, |
| 594 request_data.origin_pid, |
595 request_id, | 595 request_id, |
596 request_data.resource_type, | 596 request_data.resource_type, |
597 upload_size, | 597 upload_size, |
598 false, // is download | 598 false, // is download |
599 ResourceType::IsFrame(request_data.resource_type), // allow_download | 599 ResourceType::IsFrame(request_data.resource_type), // allow_download |
600 request_data.has_user_gesture, | 600 request_data.has_user_gesture, |
601 &resource_context); | 601 &resource_context); |
602 SetRequestInfo(request, extra_info); // Request takes ownership. | 602 SetRequestInfo(request, extra_info); // Request takes ownership. |
603 chrome_browser_net::SetOriginPIDForRequest( | |
604 request_data.origin_pid, request); | |
605 | 603 |
606 if (request->url().SchemeIs(chrome::kBlobScheme)) { | 604 if (request->url().SchemeIs(chrome::kBlobScheme)) { |
607 // Hang on to a reference to ensure the blob is not released prior | 605 // Hang on to a reference to ensure the blob is not released prior |
608 // to the job being started. | 606 // to the job being started. |
609 webkit_blob::BlobStorageController* controller = | 607 webkit_blob::BlobStorageController* controller = |
610 resource_context.blob_storage_context()->controller(); | 608 resource_context.blob_storage_context()->controller(); |
611 extra_info->set_requested_blob_data( | 609 extra_info->set_requested_blob_data( |
612 controller->GetBlobDataFromUrl(request->url())); | 610 controller->GetBlobDataFromUrl(request->url())); |
613 } | 611 } |
614 | 612 |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
730 ResourceDispatcherHost::CreateRequestInfoForBrowserRequest( | 728 ResourceDispatcherHost::CreateRequestInfoForBrowserRequest( |
731 ResourceHandler* handler, | 729 ResourceHandler* handler, |
732 int child_id, | 730 int child_id, |
733 int route_id, | 731 int route_id, |
734 bool download, | 732 bool download, |
735 const content::ResourceContext& context) { | 733 const content::ResourceContext& context) { |
736 return new ResourceDispatcherHostRequestInfo(handler, | 734 return new ResourceDispatcherHostRequestInfo(handler, |
737 ChildProcessInfo::RENDER_PROCESS, | 735 ChildProcessInfo::RENDER_PROCESS, |
738 child_id, | 736 child_id, |
739 route_id, | 737 route_id, |
| 738 0, |
740 request_id_, | 739 request_id_, |
741 ResourceType::SUB_RESOURCE, | 740 ResourceType::SUB_RESOURCE, |
742 0, // upload_size | 741 0, // upload_size |
743 download, // is_download | 742 download, // is_download |
744 download, // allow_download | 743 download, // allow_download |
745 false, // has_user_gesture | 744 false, // has_user_gesture |
746 &context); | 745 &context); |
747 } | 746 } |
748 | 747 |
749 void ResourceDispatcherHost::OnSwapOutACK( | 748 void ResourceDispatcherHost::OnSwapOutACK( |
(...skipping 1290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2040 return is_prefetch_enabled_; | 2039 return is_prefetch_enabled_; |
2041 } | 2040 } |
2042 | 2041 |
2043 // static | 2042 // static |
2044 void ResourceDispatcherHost::set_is_prefetch_enabled(bool value) { | 2043 void ResourceDispatcherHost::set_is_prefetch_enabled(bool value) { |
2045 is_prefetch_enabled_ = value; | 2044 is_prefetch_enabled_ = value; |
2046 } | 2045 } |
2047 | 2046 |
2048 // static | 2047 // static |
2049 bool ResourceDispatcherHost::is_prefetch_enabled_ = false; | 2048 bool ResourceDispatcherHost::is_prefetch_enabled_ = false; |
OLD | NEW |