OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <stdint.h> | 7 #include <stdint.h> |
8 #include <string> | 8 #include <string> |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 #endif | 125 #endif |
126 | 126 |
127 #if defined(OS_ANDROID) | 127 #if defined(OS_ANDROID) |
128 using navigation_interception::InterceptNavigationDelegate; | 128 using navigation_interception::InterceptNavigationDelegate; |
129 #endif | 129 #endif |
130 | 130 |
131 namespace { | 131 namespace { |
132 | 132 |
133 ExternalProtocolHandler::Delegate* g_external_protocol_handler_delegate = NULL; | 133 ExternalProtocolHandler::Delegate* g_external_protocol_handler_delegate = NULL; |
134 | 134 |
135 void NotifyDownloadInitiatedOnUI(int render_process_id, int render_view_id) { | 135 void NotifyDownloadInitiatedOnUI( |
136 RenderViewHost* rvh = RenderViewHost::FromID(render_process_id, | 136 const content::ResourceRequestInfo::WebContentsGetter& wc_getter) { |
137 render_view_id); | 137 content::WebContents* web_contents = wc_getter.Run(); |
138 if (!rvh) | 138 if (!web_contents) |
139 return; | 139 return; |
140 | 140 |
141 content::NotificationService::current()->Notify( | 141 content::NotificationService::current()->Notify( |
142 chrome::NOTIFICATION_DOWNLOAD_INITIATED, | 142 chrome::NOTIFICATION_DOWNLOAD_INITIATED, |
143 content::Source<RenderViewHost>(rvh), | 143 content::Source<content::WebContents>(web_contents), |
144 content::NotificationService::NoDetails()); | 144 content::NotificationService::NoDetails()); |
145 } | 145 } |
146 | 146 |
147 prerender::PrerenderManager* GetPrerenderManager( | 147 prerender::PrerenderManager* GetPrerenderManager( |
148 content::WebContents* web_contents) { | 148 content::WebContents* web_contents) { |
149 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 149 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
150 if (!web_contents) | 150 if (!web_contents) |
151 return NULL; | 151 return NULL; |
152 | 152 |
153 content::BrowserContext* browser_context = web_contents->GetBrowserContext(); | 153 content::BrowserContext* browser_context = web_contents->GetBrowserContext(); |
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
491 | 491 |
492 if (io_data->resource_prefetch_predictor_observer()) { | 492 if (io_data->resource_prefetch_predictor_observer()) { |
493 io_data->resource_prefetch_predictor_observer()->OnRequestStarted( | 493 io_data->resource_prefetch_predictor_observer()->OnRequestStarted( |
494 request, resource_type, info->GetChildID(), info->GetRenderFrameID()); | 494 request, resource_type, info->GetChildID(), info->GetRenderFrameID()); |
495 } | 495 } |
496 } | 496 } |
497 | 497 |
498 void ChromeResourceDispatcherHostDelegate::DownloadStarting( | 498 void ChromeResourceDispatcherHostDelegate::DownloadStarting( |
499 net::URLRequest* request, | 499 net::URLRequest* request, |
500 content::ResourceContext* resource_context, | 500 content::ResourceContext* resource_context, |
501 int child_id, | |
502 int route_id, | |
503 bool is_content_initiated, | 501 bool is_content_initiated, |
504 bool must_download, | 502 bool must_download, |
505 ScopedVector<content::ResourceThrottle>* throttles) { | 503 ScopedVector<content::ResourceThrottle>* throttles) { |
| 504 const content::ResourceRequestInfo* info = |
| 505 content::ResourceRequestInfo::ForRequest(request); |
506 BrowserThread::PostTask( | 506 BrowserThread::PostTask( |
507 BrowserThread::UI, FROM_HERE, | 507 BrowserThread::UI, FROM_HERE, |
508 base::Bind(&NotifyDownloadInitiatedOnUI, child_id, route_id)); | 508 base::Bind(&NotifyDownloadInitiatedOnUI, |
| 509 info->GetWebContentsGetterForRequest())); |
509 | 510 |
510 // If it's from the web, we don't trust it, so we push the throttle on. | 511 // If it's from the web, we don't trust it, so we push the throttle on. |
511 if (is_content_initiated) { | 512 if (is_content_initiated) { |
512 const content::ResourceRequestInfo* info = | |
513 content::ResourceRequestInfo::ForRequest(request); | |
514 throttles->push_back(new DownloadResourceThrottle( | 513 throttles->push_back(new DownloadResourceThrottle( |
515 download_request_limiter_, info->GetWebContentsGetterForRequest(), | 514 download_request_limiter_, info->GetWebContentsGetterForRequest(), |
516 request->url(), request->method())); | 515 request->url(), request->method())); |
517 #if BUILDFLAG(ANDROID_JAVA_UI) | 516 #if BUILDFLAG(ANDROID_JAVA_UI) |
518 throttles->push_back( | 517 throttles->push_back( |
519 new chrome::InterceptDownloadResourceThrottle( | 518 new chrome::InterceptDownloadResourceThrottle( |
520 request, child_id, route_id, must_download)); | 519 request, info->GetWebContentsGetterForRequest(), must_download)); |
521 #endif | 520 #endif |
522 } | 521 } |
523 | 522 |
524 // If this isn't a new request, we've seen this before and added the standard | 523 // If this isn't a new request, we've seen this before and added the standard |
525 // resource throttles already so no need to add it again. | 524 // resource throttles already so no need to add it again. |
526 if (!request->is_pending()) { | 525 if (!request->is_pending()) { |
527 AppendStandardResourceThrottles(request, | 526 AppendStandardResourceThrottles(request, |
528 resource_context, | 527 resource_context, |
529 content::RESOURCE_TYPE_MAIN_FRAME, | 528 content::RESOURCE_TYPE_MAIN_FRAME, |
530 throttles); | 529 throttles); |
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
879 base::Bind(&ChromeResourceDispatcherHostDelegate::OnAbortedFrameLoad, | 878 base::Bind(&ChromeResourceDispatcherHostDelegate::OnAbortedFrameLoad, |
880 base::Unretained(this), url, request_loading_time)); | 879 base::Unretained(this), url, request_loading_time)); |
881 return; | 880 return; |
882 } | 881 } |
883 | 882 |
884 std::string metric_name = (request_loading_time.InMilliseconds() < 100 ? | 883 std::string metric_name = (request_loading_time.InMilliseconds() < 100 ? |
885 "Net.ErrAborted.Fast" : "Net.ErrAborted.Slow"); | 884 "Net.ErrAborted.Fast" : "Net.ErrAborted.Slow"); |
886 rappor::SampleDomainAndRegistryFromGURL( | 885 rappor::SampleDomainAndRegistryFromGURL( |
887 g_browser_process->rappor_service(), metric_name, url); | 886 g_browser_process->rappor_service(), metric_name, url); |
888 } | 887 } |
OLD | NEW |