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

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

Issue 7664019: Move download UMA functions to their own file in content. Also fire the chrome-only notification ... (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" 10 #include "chrome/browser/download/download_request_limiter.h"
11 #include "chrome/browser/download/download_throttling_resource_handler.h" 11 #include "chrome/browser/download/download_throttling_resource_handler.h"
12 #include "chrome/browser/download/download_util.h" 12 #include "chrome/browser/download/download_util.h"
13 #include "chrome/browser/external_protocol/external_protocol_handler.h" 13 #include "chrome/browser/external_protocol/external_protocol_handler.h"
14 #include "chrome/browser/net/load_timing_observer.h" 14 #include "chrome/browser/net/load_timing_observer.h"
15 #include "chrome/browser/prerender/prerender_manager.h" 15 #include "chrome/browser/prerender/prerender_manager.h"
16 #include "chrome/browser/prerender/prerender_tracker.h" 16 #include "chrome/browser/prerender/prerender_tracker.h"
17 #include "chrome/browser/profiles/profile_io_data.h" 17 #include "chrome/browser/profiles/profile_io_data.h"
18 #include "chrome/browser/renderer_host/safe_browsing_resource_handler.h" 18 #include "chrome/browser/renderer_host/safe_browsing_resource_handler.h"
19 #include "chrome/browser/safe_browsing/safe_browsing_service.h" 19 #include "chrome/browser/safe_browsing/safe_browsing_service.h"
20 #include "chrome/browser/ui/autologin_infobar_delegate.h" 20 #include "chrome/browser/ui/autologin_infobar_delegate.h"
21 #include "chrome/browser/ui/login/login_prompt.h" 21 #include "chrome/browser/ui/login/login_prompt.h"
22 #include "chrome/common/chrome_notification_types.h"
22 #include "chrome/common/extensions/user_script.h" 23 #include "chrome/common/extensions/user_script.h"
23 #include "chrome/common/render_messages.h" 24 #include "chrome/common/render_messages.h"
24 #include "content/browser/browser_thread.h" 25 #include "content/browser/browser_thread.h"
25 #include "content/browser/resource_context.h" 26 #include "content/browser/resource_context.h"
27 #include "content/browser/renderer_host/render_view_host.h"
26 #include "content/browser/renderer_host/resource_dispatcher_host.h" 28 #include "content/browser/renderer_host/resource_dispatcher_host.h"
27 #include "content/browser/renderer_host/resource_dispatcher_host_request_info.h" 29 #include "content/browser/renderer_host/resource_dispatcher_host_request_info.h"
28 #include "content/browser/renderer_host/resource_message_filter.h" 30 #include "content/browser/renderer_host/resource_message_filter.h"
31 #include "content/common/notification_service.h"
29 #include "content/common/resource_messages.h" 32 #include "content/common/resource_messages.h"
30 #include "net/base/load_flags.h" 33 #include "net/base/load_flags.h"
31 34
32 // TODO(oshima): Enable this for other platforms. 35 // TODO(oshima): Enable this for other platforms.
33 #if defined(OS_CHROMEOS) 36 #if defined(OS_CHROMEOS)
34 #include "chrome/browser/renderer_host/offline_resource_handler.h" 37 #include "chrome/browser/renderer_host/offline_resource_handler.h"
35 #endif 38 #endif
36 39
37 namespace { 40 namespace {
38 41
39 void AddPrerenderOnUI( 42 void AddPrerenderOnUI(
40 const base::Callback<prerender::PrerenderManager*(void)>& 43 const base::Callback<prerender::PrerenderManager*(void)>&
41 prerender_manager_getter, 44 prerender_manager_getter,
42 int render_process_id, int render_view_id, 45 int render_process_id, int render_view_id,
43 const GURL& url, const GURL& referrer) { 46 const GURL& url, const GURL& referrer) {
44 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 47 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
45 prerender::PrerenderManager* prerender_manager = 48 prerender::PrerenderManager* prerender_manager =
46 prerender_manager_getter.Run(); 49 prerender_manager_getter.Run();
47 if (!prerender_manager || !prerender_manager->is_enabled()) 50 if (!prerender_manager || !prerender_manager->is_enabled())
48 return; 51 return;
49 52
50 prerender_manager->AddPrerenderFromLinkRelPrerender(render_process_id, 53 prerender_manager->AddPrerenderFromLinkRelPrerender(render_process_id,
51 render_view_id, 54 render_view_id,
52 url, 55 url,
53 referrer); 56 referrer);
54 } 57 }
55 58
59 void NotifyDownloadInitiatedOnUI(int render_process_id, int render_view_id) {
60 RenderViewHost* rvh = RenderViewHost::FromID(render_process_id,
61 render_view_id);
62 if (!rvh)
63 return;
64
65 NotificationService::current()->Notify(
66 chrome::NOTIFICATION_DOWNLOAD_INITIATED, Source<RenderViewHost>(rvh),
67 NotificationService::NoDetails());
68 }
69
56 } // end namespace 70 } // end namespace
57 71
58 ChromeResourceDispatcherHostDelegate::ChromeResourceDispatcherHostDelegate( 72 ChromeResourceDispatcherHostDelegate::ChromeResourceDispatcherHostDelegate(
59 ResourceDispatcherHost* resource_dispatcher_host, 73 ResourceDispatcherHost* resource_dispatcher_host,
60 prerender::PrerenderTracker* prerender_tracker) 74 prerender::PrerenderTracker* prerender_tracker)
61 : resource_dispatcher_host_(resource_dispatcher_host), 75 : resource_dispatcher_host_(resource_dispatcher_host),
62 download_request_limiter_(g_browser_process->download_request_limiter()), 76 download_request_limiter_(g_browser_process->download_request_limiter()),
63 safe_browsing_(g_browser_process->safe_browsing_service()), 77 safe_browsing_(g_browser_process->safe_browsing_service()),
64 prerender_tracker_(prerender_tracker) { 78 prerender_tracker_(prerender_tracker) {
65 } 79 }
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 ResourceHandler* ChromeResourceDispatcherHostDelegate::DownloadStarting( 162 ResourceHandler* ChromeResourceDispatcherHostDelegate::DownloadStarting(
149 ResourceHandler* handler, 163 ResourceHandler* handler,
150 const content::ResourceContext& resource_context, 164 const content::ResourceContext& resource_context,
151 net::URLRequest* request, 165 net::URLRequest* request,
152 int child_id, 166 int child_id,
153 int route_id, 167 int route_id,
154 int request_id, 168 int request_id,
155 bool is_new_request, 169 bool is_new_request,
156 bool in_complete) { 170 bool in_complete) {
157 171
172 BrowserThread::PostTask(
173 BrowserThread::UI, FROM_HERE,
174 NewRunnableFunction(&NotifyDownloadInitiatedOnUI, child_id, route_id));
175
158 // If this isn't a new request, we've seen this before and added the safe 176 // 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 177 // 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 178 // path is only hit for requests initiated through the browser, and not the
161 // web, so no need to add the throttling handler. 179 // web, so no need to add the throttling handler.
162 if (is_new_request) { 180 if (is_new_request) {
163 #if defined(ENABLE_SAFE_BROWSING) 181 #if defined(ENABLE_SAFE_BROWSING)
164 ProfileIOData* io_data = reinterpret_cast<ProfileIOData*>( 182 ProfileIOData* io_data = reinterpret_cast<ProfileIOData*>(
165 resource_context.GetUserData(NULL)); 183 resource_context.GetUserData(NULL));
166 if (!io_data->safe_browsing_enabled()->GetValue()) 184 if (!io_data->safe_browsing_enabled()->GetValue())
167 return handler; 185 return handler;
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 AutoLoginInfoBarDelegate::ShowIfAutoLoginRequested(request, info->child_id(), 303 AutoLoginInfoBarDelegate::ShowIfAutoLoginRequested(request, info->child_id(),
286 info->route_id()); 304 info->route_id());
287 } 305 }
288 306
289 void ChromeResourceDispatcherHostDelegate::OnRequestRedirected( 307 void ChromeResourceDispatcherHostDelegate::OnRequestRedirected(
290 net::URLRequest* request, 308 net::URLRequest* request,
291 ResourceResponse* response, 309 ResourceResponse* response,
292 ResourceMessageFilter* filter) { 310 ResourceMessageFilter* filter) {
293 LoadTimingObserver::PopulateTimingInfo(request, response); 311 LoadTimingObserver::PopulateTimingInfo(request, response);
294 } 312 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698