| Index: chrome/renderer/render_view.cc
|
| ===================================================================
|
| --- chrome/renderer/render_view.cc (revision 74048)
|
| +++ chrome/renderer/render_view.cc (working copy)
|
| @@ -57,6 +57,7 @@
|
| #include "chrome/renderer/extensions/event_bindings.h"
|
| #include "chrome/renderer/extensions/extension_process_bindings.h"
|
| #include "chrome/renderer/extensions/extension_renderer_info.h"
|
| +#include "chrome/renderer/extensions/extension_resource_request_policy.h"
|
| #include "chrome/renderer/extensions/renderer_extension_bindings.h"
|
| #include "chrome/renderer/external_host_bindings.h"
|
| #include "chrome/renderer/external_popup_menu.h"
|
| @@ -3571,6 +3572,19 @@
|
| WebDataSource* top_data_source = top_frame->dataSource();
|
| WebDataSource* data_source =
|
| provisional_data_source ? provisional_data_source : top_data_source;
|
| +
|
| + // If the request is for an extension resource, check whether it should be
|
| + // allowed. If not allowed, we reset the URL to something invalid to prevent
|
| + // the request and cause an error.
|
| + GURL request_url(request.url());
|
| + if (request_url.SchemeIs(chrome::kExtensionScheme) &&
|
| + !ExtensionResourceRequestPolicy::CanRequestResource(
|
| + request_url,
|
| + GURL(frame->url()),
|
| + render_thread_->GetExtensions())) {
|
| + request.setURL(WebURL(GURL("chrome-extension://invalid/")));
|
| + }
|
| +
|
| if (data_source) {
|
| NavigationState* state = NavigationState::FromDataSource(data_source);
|
| if (state && state->is_cache_policy_override_set())
|
|
|