Chromium Code Reviews| Index: chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc |
| =================================================================== |
| --- chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc (revision 231370) |
| +++ chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc (working copy) |
| @@ -9,8 +9,10 @@ |
| #include "base/base64.h" |
| #include "base/logging.h" |
| #include "base/metrics/histogram.h" |
| +#include "base/strings/string_util.h" |
|
jvoung (off chromium)
2013/10/31 22:45:17
Just checking, what is string_util.h used for? (in
cpu_(ooo_6.6-7.5)
2013/11/01 18:33:37
Not needed. removed.
|
| #include "chrome/browser/browser_process.h" |
| #include "chrome/browser/chrome_notification_types.h" |
| +#include "chrome/browser/component_updater/component_updater_service.h" |
| #include "chrome/browser/content_settings/host_content_settings_map.h" |
| #include "chrome/browser/download/download_request_limiter.h" |
| #include "chrome/browser/download/download_resource_throttle.h" |
| @@ -193,6 +195,30 @@ |
| } |
| } |
| +void AppendComponentUpdaterThrottles( |
| + net::URLRequest* request, |
| + content::ResourceContext* resource_context, |
| + ResourceType::Type resource_type, |
| + ScopedVector<content::ResourceThrottle>* throttles) { |
| + char* crx_id = NULL; |
| + // Check for PNaCL nexe request. |
| + if (resource_type == ResourceType::OBJECT) { |
| + const net::HttpRequestHeaders& headers = request->extra_request_headers(); |
| + std::string accept_headers; |
| + if (headers.GetHeader("Accept", &accept_headers)) { |
| + if (accept_headers.find("application/x-pnacl") != std::string::npos) |
| + crx_id = "hnimpnehoodheedghdeeijklkeaacbdc"; |
|
jvoung (off chromium)
2013/10/31 22:45:17
FYI: with GCC I got the following error:
../../ch
cpu_(ooo_6.6-7.5)
2013/11/01 18:33:37
Done.
|
| + } |
| + } |
| + |
| + if (crx_id) { |
| + // We got a component we need to install, so throttle the resource |
| + // until the component is installed. |
| + ComponentUpdateService* cus = g_browser_process->component_updater(); |
| + throttles->push_back(cus->GetOnDemandResourceThrottle(request, crx_id)); |
| + } |
| +} |
| + |
| } // end namespace |
| ChromeResourceDispatcherHostDelegate::ChromeResourceDispatcherHostDelegate( |
| @@ -319,6 +345,12 @@ |
| resource_context, |
| resource_type, |
| throttles); |
| + if (!is_prerendering) { |
| + AppendComponentUpdaterThrottles(request, |
| + resource_context, |
| + resource_type, |
| + throttles); |
| + } |
| if (io_data->resource_prefetch_predictor_observer()) { |
| io_data->resource_prefetch_predictor_observer()->OnRequestStarted( |