| 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 <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/base64.h" | 9 #include "base/base64.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 #include "chrome/common/extensions/mime_types_handler.h" | 41 #include "chrome/common/extensions/mime_types_handler.h" |
| 42 #include "chrome/common/render_messages.h" | 42 #include "chrome/common/render_messages.h" |
| 43 #include "content/public/browser/browser_thread.h" | 43 #include "content/public/browser/browser_thread.h" |
| 44 #include "content/public/browser/notification_service.h" | 44 #include "content/public/browser/notification_service.h" |
| 45 #include "content/public/browser/render_process_host.h" | 45 #include "content/public/browser/render_process_host.h" |
| 46 #include "content/public/browser/render_view_host.h" | 46 #include "content/public/browser/render_view_host.h" |
| 47 #include "content/public/browser/resource_context.h" | 47 #include "content/public/browser/resource_context.h" |
| 48 #include "content/public/browser/resource_dispatcher_host.h" | 48 #include "content/public/browser/resource_dispatcher_host.h" |
| 49 #include "content/public/browser/resource_request_info.h" | 49 #include "content/public/browser/resource_request_info.h" |
| 50 #include "content/public/browser/stream_handle.h" | 50 #include "content/public/browser/stream_handle.h" |
| 51 #include "content/public/browser/web_contents.h" |
| 51 #include "content/public/common/resource_response.h" | 52 #include "content/public/common/resource_response.h" |
| 52 #include "extensions/browser/info_map.h" | 53 #include "extensions/browser/info_map.h" |
| 53 #include "extensions/common/constants.h" | 54 #include "extensions/common/constants.h" |
| 54 #include "extensions/common/user_script.h" | 55 #include "extensions/common/user_script.h" |
| 55 #include "net/base/load_flags.h" | 56 #include "net/base/load_flags.h" |
| 56 #include "net/base/load_timing_info.h" | 57 #include "net/base/load_timing_info.h" |
| 57 #include "net/base/request_priority.h" | 58 #include "net/base/request_priority.h" |
| 58 #include "net/http/http_response_headers.h" | 59 #include "net/http/http_response_headers.h" |
| 59 #include "net/url_request/url_request.h" | 60 #include "net/url_request/url_request.h" |
| 60 | 61 |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 Profile* profile = Profile::FromBrowserContext(browser_context); | 149 Profile* profile = Profile::FromBrowserContext(browser_context); |
| 149 if (!profile) | 150 if (!profile) |
| 150 return; | 151 return; |
| 151 | 152 |
| 152 StreamsPrivateAPI* streams_private = StreamsPrivateAPI::Get(profile); | 153 StreamsPrivateAPI* streams_private = StreamsPrivateAPI::Get(profile); |
| 153 if (!streams_private) | 154 if (!streams_private) |
| 154 return; | 155 return; |
| 155 streams_private->ExecuteMimeTypeHandler( | 156 streams_private->ExecuteMimeTypeHandler( |
| 156 extension_id, web_contents, stream.Pass(), expected_content_size); | 157 extension_id, web_contents, stream.Pass(), expected_content_size); |
| 157 } | 158 } |
| 159 |
| 160 void LaunchURL(const GURL& url, int render_process_id, int render_view_id) { |
| 161 content::RenderViewHost* rvh = content::RenderViewHost::FromID( |
| 162 render_process_id, render_view_id); |
| 163 if (rvh) { |
| 164 content::WebContents* web_contents = |
| 165 content::WebContents::FromRenderViewHost(rvh); |
| 166 prerender::PrerenderContents* prerender_contents = |
| 167 prerender::PrerenderContents::FromWebContents(web_contents); |
| 168 if (prerender_contents) { |
| 169 prerender_contents->Destroy(prerender::FINAL_STATUS_UNSUPPORTED_SCHEME); |
| 170 prerender::ReportPrerenderExternalURL(); |
| 171 return; |
| 172 } |
| 173 } |
| 174 |
| 175 ExternalProtocolHandler::LaunchUrl(url, render_process_id, render_view_id); |
| 176 } |
| 158 #endif // !defined(OS_ANDROID) | 177 #endif // !defined(OS_ANDROID) |
| 159 | 178 |
| 160 void AppendComponentUpdaterThrottles( | 179 void AppendComponentUpdaterThrottles( |
| 161 net::URLRequest* request, | 180 net::URLRequest* request, |
| 162 content::ResourceContext* resource_context, | 181 content::ResourceContext* resource_context, |
| 163 ResourceType::Type resource_type, | 182 ResourceType::Type resource_type, |
| 164 ScopedVector<content::ResourceThrottle>* throttles) { | 183 ScopedVector<content::ResourceThrottle>* throttles) { |
| 165 const char* crx_id = NULL; | 184 const char* crx_id = NULL; |
| 166 ComponentUpdateService* cus = g_browser_process->component_updater(); | 185 ComponentUpdateService* cus = g_browser_process->component_updater(); |
| 167 if (!cus) | 186 if (!cus) |
| (...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 432 } | 451 } |
| 433 | 452 |
| 434 bool ChromeResourceDispatcherHostDelegate::HandleExternalProtocol( | 453 bool ChromeResourceDispatcherHostDelegate::HandleExternalProtocol( |
| 435 const GURL& url, int child_id, int route_id) { | 454 const GURL& url, int child_id, int route_id) { |
| 436 #if defined(OS_ANDROID) | 455 #if defined(OS_ANDROID) |
| 437 // Android use a resource throttle to handle external as well as internal | 456 // Android use a resource throttle to handle external as well as internal |
| 438 // protocols. | 457 // protocols. |
| 439 return false; | 458 return false; |
| 440 #else | 459 #else |
| 441 | 460 |
| 442 if (prerender_tracker_->IsPrerenderingOnIOThread(child_id, route_id) && | |
| 443 prerender_tracker_->TryCancel( | |
| 444 child_id, route_id, prerender::FINAL_STATUS_UNSUPPORTED_SCHEME)) { | |
| 445 prerender::ReportPrerenderExternalURL(); | |
| 446 return false; | |
| 447 } | |
| 448 | |
| 449 ExtensionRendererState::WebViewInfo info; | 461 ExtensionRendererState::WebViewInfo info; |
| 450 if (ExtensionRendererState::GetInstance()->GetWebViewInfo(child_id, | 462 if (ExtensionRendererState::GetInstance()->GetWebViewInfo(child_id, |
| 451 route_id, | 463 route_id, |
| 452 &info)) { | 464 &info)) { |
| 453 return false; | 465 return false; |
| 454 } | 466 } |
| 455 | 467 |
| 456 BrowserThread::PostTask( | 468 BrowserThread::PostTask( |
| 457 BrowserThread::UI, FROM_HERE, | 469 BrowserThread::UI, FROM_HERE, |
| 458 base::Bind(&ExternalProtocolHandler::LaunchUrl, url, child_id, route_id)); | 470 base::Bind(&LaunchURL, url, child_id, route_id)); |
| 459 return true; | 471 return true; |
| 460 #endif | 472 #endif |
| 461 } | 473 } |
| 462 | 474 |
| 463 void ChromeResourceDispatcherHostDelegate::AppendStandardResourceThrottles( | 475 void ChromeResourceDispatcherHostDelegate::AppendStandardResourceThrottles( |
| 464 net::URLRequest* request, | 476 net::URLRequest* request, |
| 465 content::ResourceContext* resource_context, | 477 content::ResourceContext* resource_context, |
| 466 ResourceType::Type resource_type, | 478 ResourceType::Type resource_type, |
| 467 ScopedVector<content::ResourceThrottle>* throttles) { | 479 ScopedVector<content::ResourceThrottle>* throttles) { |
| 468 ProfileIOData* io_data = ProfileIOData::FromResourceContext(resource_context); | 480 ProfileIOData* io_data = ProfileIOData::FromResourceContext(resource_context); |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 659 // exception is requests from gaia webview, since the native profile | 671 // exception is requests from gaia webview, since the native profile |
| 660 // management UI is built on top of it. | 672 // management UI is built on top of it. |
| 661 signin::AppendMirrorRequestHeaderIfPossible(request, redirect_url, io_data, | 673 signin::AppendMirrorRequestHeaderIfPossible(request, redirect_url, io_data, |
| 662 info->GetChildID(), info->GetRouteID()); | 674 info->GetChildID(), info->GetRouteID()); |
| 663 | 675 |
| 664 if (io_data->resource_prefetch_predictor_observer()) { | 676 if (io_data->resource_prefetch_predictor_observer()) { |
| 665 io_data->resource_prefetch_predictor_observer()->OnRequestRedirected( | 677 io_data->resource_prefetch_predictor_observer()->OnRequestRedirected( |
| 666 redirect_url, request); | 678 redirect_url, request); |
| 667 } | 679 } |
| 668 } | 680 } |
| OLD | NEW |