| 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 #include "chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.
h" | 5 #include "chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.
h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "chrome/browser/browser_process.h" | 8 #include "chrome/browser/browser_process.h" |
| 9 #include "chrome/browser/content_settings/host_content_settings_map.h" | 9 #include "chrome/browser/content_settings/host_content_settings_map.h" |
| 10 #include "chrome/browser/download/download_request_limiter.h" |
| 11 #include "chrome/browser/download/download_throttling_resource_handler.h" |
| 12 #include "chrome/browser/download/download_util.h" |
| 10 #include "chrome/browser/external_protocol/external_protocol_handler.h" | 13 #include "chrome/browser/external_protocol/external_protocol_handler.h" |
| 11 #include "chrome/browser/net/load_timing_observer.h" | 14 #include "chrome/browser/net/load_timing_observer.h" |
| 12 #include "chrome/browser/prerender/prerender_manager.h" | 15 #include "chrome/browser/prerender/prerender_manager.h" |
| 13 #include "chrome/browser/prerender/prerender_tracker.h" | 16 #include "chrome/browser/prerender/prerender_tracker.h" |
| 14 #include "chrome/browser/profiles/profile_io_data.h" | 17 #include "chrome/browser/profiles/profile_io_data.h" |
| 15 #include "chrome/browser/renderer_host/safe_browsing_resource_handler.h" | 18 #include "chrome/browser/renderer_host/safe_browsing_resource_handler.h" |
| 16 #include "chrome/browser/safe_browsing/safe_browsing_service.h" | 19 #include "chrome/browser/safe_browsing/safe_browsing_service.h" |
| 17 #include "chrome/browser/ui/autologin_infobar_delegate.h" | 20 #include "chrome/browser/ui/autologin_infobar_delegate.h" |
| 18 #include "chrome/browser/ui/login/login_prompt.h" | 21 #include "chrome/browser/ui/login/login_prompt.h" |
| 19 #include "chrome/common/extensions/user_script.h" | 22 #include "chrome/common/extensions/user_script.h" |
| (...skipping 29 matching lines...) Expand all Loading... |
| 49 url, | 52 url, |
| 50 referrer); | 53 referrer); |
| 51 } | 54 } |
| 52 | 55 |
| 53 } // end namespace | 56 } // end namespace |
| 54 | 57 |
| 55 ChromeResourceDispatcherHostDelegate::ChromeResourceDispatcherHostDelegate( | 58 ChromeResourceDispatcherHostDelegate::ChromeResourceDispatcherHostDelegate( |
| 56 ResourceDispatcherHost* resource_dispatcher_host, | 59 ResourceDispatcherHost* resource_dispatcher_host, |
| 57 prerender::PrerenderTracker* prerender_tracker) | 60 prerender::PrerenderTracker* prerender_tracker) |
| 58 : resource_dispatcher_host_(resource_dispatcher_host), | 61 : resource_dispatcher_host_(resource_dispatcher_host), |
| 62 download_request_limiter_(g_browser_process->download_request_limiter()), |
| 59 safe_browsing_(g_browser_process->safe_browsing_service()), | 63 safe_browsing_(g_browser_process->safe_browsing_service()), |
| 60 prerender_tracker_(prerender_tracker) { | 64 prerender_tracker_(prerender_tracker) { |
| 61 } | 65 } |
| 62 | 66 |
| 63 ChromeResourceDispatcherHostDelegate::~ChromeResourceDispatcherHostDelegate() { | 67 ChromeResourceDispatcherHostDelegate::~ChromeResourceDispatcherHostDelegate() { |
| 64 } | 68 } |
| 65 | 69 |
| 66 bool ChromeResourceDispatcherHostDelegate::ShouldBeginRequest( | 70 bool ChromeResourceDispatcherHostDelegate::ShouldBeginRequest( |
| 67 int child_id, int route_id, | 71 int child_id, int route_id, |
| 68 const ResourceHostMsg_Request& request_data, | 72 const ResourceHostMsg_Request& request_data, |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 135 // We check offline first, then check safe browsing so that we still can block | 139 // We check offline first, then check safe browsing so that we still can block |
| 136 // unsafe site after we remove offline page. | 140 // unsafe site after we remove offline page. |
| 137 handler = new OfflineResourceHandler( | 141 handler = new OfflineResourceHandler( |
| 138 handler, child_id, route_id, resource_dispatcher_host_, request, | 142 handler, child_id, route_id, resource_dispatcher_host_, request, |
| 139 resource_context.appcache_service()); | 143 resource_context.appcache_service()); |
| 140 #endif | 144 #endif |
| 141 return handler; | 145 return handler; |
| 142 } | 146 } |
| 143 | 147 |
| 144 ResourceHandler* ChromeResourceDispatcherHostDelegate::DownloadStarting( | 148 ResourceHandler* ChromeResourceDispatcherHostDelegate::DownloadStarting( |
| 145 ResourceHandler* handler, | 149 ResourceHandler* handler, |
| 146 const content::ResourceContext& resource_context, | 150 const content::ResourceContext& resource_context, |
| 147 int child_id, | 151 net::URLRequest* request, |
| 148 int route_id) { | 152 int child_id, |
| 153 int route_id, |
| 154 int request_id, |
| 155 bool is_new_request, |
| 156 bool in_complete) { |
| 157 |
| 158 // If this isn't a new request, we've seen this before and added the safe |
| 159 // browsing resource handler already so no need to add it again. This code |
| 160 // path is only hit for requests initiated through the browser, and not the |
| 161 // web, so no need to add the throttling handler. |
| 162 if (is_new_request) { |
| 149 #if defined(ENABLE_SAFE_BROWSING) | 163 #if defined(ENABLE_SAFE_BROWSING) |
| 150 ProfileIOData* io_data = reinterpret_cast<ProfileIOData*>( | 164 ProfileIOData* io_data = reinterpret_cast<ProfileIOData*>( |
| 151 resource_context.GetUserData(NULL)); | 165 resource_context.GetUserData(NULL)); |
| 152 if (!io_data->safe_browsing_enabled()->GetValue()) | 166 if (!io_data->safe_browsing_enabled()->GetValue()) |
| 167 return handler; |
| 168 |
| 169 return CreateSafeBrowsingResourceHandler( |
| 170 handler, child_id, route_id, false); |
| 171 #else |
| 153 return handler; | 172 return handler; |
| 173 #endif |
| 174 } |
| 154 | 175 |
| 155 return CreateSafeBrowsingResourceHandler(handler, child_id, route_id, false); | 176 return new DownloadThrottlingResourceHandler( |
| 156 #else | 177 handler, resource_dispatcher_host_, download_request_limiter_, request, |
| 157 return handler; | 178 request->url(), child_id, route_id, request_id, in_complete); |
| 158 #endif | |
| 159 } | 179 } |
| 160 | 180 |
| 161 bool ChromeResourceDispatcherHostDelegate::ShouldDeferStart( | 181 bool ChromeResourceDispatcherHostDelegate::ShouldDeferStart( |
| 162 net::URLRequest* request, | 182 net::URLRequest* request, |
| 163 const content::ResourceContext& resource_context) { | 183 const content::ResourceContext& resource_context) { |
| 164 ResourceDispatcherHostRequestInfo* info = | 184 ResourceDispatcherHostRequestInfo* info = |
| 165 resource_dispatcher_host_->InfoForRequest(request); | 185 resource_dispatcher_host_->InfoForRequest(request); |
| 166 return prerender_tracker_->PotentiallyDelayRequestOnIOThread( | 186 return prerender_tracker_->PotentiallyDelayRequestOnIOThread( |
| 167 request->url(), resource_context.prerender_manager_getter(), | 187 request->url(), resource_context.prerender_manager_getter(), |
| 168 info->child_id(), info->route_id(), info->request_id()); | 188 info->child_id(), info->route_id(), info->request_id()); |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 265 AutoLoginInfoBarDelegate::ShowIfAutoLoginRequested(request, info->child_id(), | 285 AutoLoginInfoBarDelegate::ShowIfAutoLoginRequested(request, info->child_id(), |
| 266 info->route_id()); | 286 info->route_id()); |
| 267 } | 287 } |
| 268 | 288 |
| 269 void ChromeResourceDispatcherHostDelegate::OnRequestRedirected( | 289 void ChromeResourceDispatcherHostDelegate::OnRequestRedirected( |
| 270 net::URLRequest* request, | 290 net::URLRequest* request, |
| 271 ResourceResponse* response, | 291 ResourceResponse* response, |
| 272 ResourceMessageFilter* filter) { | 292 ResourceMessageFilter* filter) { |
| 273 LoadTimingObserver::PopulateTimingInfo(request, response); | 293 LoadTimingObserver::PopulateTimingInfo(request, response); |
| 274 } | 294 } |
| OLD | NEW |