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" | 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 Loading... |
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 Loading... |
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 } |
OLD | NEW |