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 |