| 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 |