Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(145)

Side by Side Diff: chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc

Issue 7660007: Factor out dependncy on download throttling from core download code. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698