Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6351)

Unified Diff: chrome/renderer/extensions/resource_request_policy.cc

Issue 1312653003: Fix for WebView accessible resources. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Small fix. Rebased. Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/extensions/resource_request_policy.cc
diff --git a/chrome/renderer/extensions/resource_request_policy.cc b/chrome/renderer/extensions/resource_request_policy.cc
index 339acfadf295adfc0855cdce1088d8beb8abefde..85a74232cf96fdd89b2de5f0745f9ac958b91e09 100644
--- a/chrome/renderer/extensions/resource_request_policy.cc
+++ b/chrome/renderer/extensions/resource_request_policy.cc
@@ -10,8 +10,11 @@
#include "chrome/common/url_constants.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
+#include "extensions/common/manifest_constants.h"
#include "extensions/common/manifest_handlers/icons_handler.h"
#include "extensions/common/manifest_handlers/web_accessible_resources_info.h"
+#include "extensions/common/manifest_handlers/webview_info.h"
+#include "extensions/renderer/dispatcher.h"
#include "extensions/renderer/renderer_extension_registry.h"
#include "third_party/WebKit/public/platform/WebString.h"
#include "third_party/WebKit/public/web/WebConsoleMessage.h"
@@ -22,18 +25,19 @@
namespace extensions {
+ResourceRequestPolicy::ResourceRequestPolicy(Dispatcher* dispatcher)
+ : dispatcher_(dispatcher) {}
+
// This method does a security check whether chrome-extension:// URLs can be
// requested by the renderer. Since this is in an untrusted process, the browser
// has a similar check to enforce the policy, in case this process is exploited.
// If you are changing this function, ensure equivalent checks are added to
// extension_protocols.cc's AllowExtensionResourceLoad.
-
-// static
bool ResourceRequestPolicy::CanRequestResource(
const GURL& resource_url,
blink::WebFrame* frame,
ui::PageTransition transition_type) {
- CHECK(resource_url.SchemeIs(extensions::kExtensionScheme));
+ CHECK(resource_url.SchemeIs(kExtensionScheme));
const Extension* extension =
RendererExtensionRegistry::Get()->GetExtensionOrAppByURL(resource_url);
@@ -49,7 +53,7 @@ bool ResourceRequestPolicy::CanRequestResource(
// launchers.
std::string resource_root_relative_path =
resource_url.path().empty() ? std::string()
- : resource_url.path().substr(1);
+ : resource_url.path().substr(1);
if (extension->is_hosted_app() &&
!IconsInfo::GetIcons(extension)
.ContainsPath(resource_root_relative_path)) {
@@ -59,9 +63,12 @@ bool ResourceRequestPolicy::CanRequestResource(
}
// Disallow loading of extension resources which are not explicitly listed
- // as web accessible if the manifest version is 2 or greater.
+ // as web or WebView accessible if the manifest version is 2 or greater.
if (!WebAccessibleResourcesInfo::IsResourceWebAccessible(
- extension, resource_url.path())) {
+ extension, resource_url.path()) &&
+ !WebviewInfo::IsResourceWebviewAccessible(
+ extension, dispatcher_->webview_partition_id(),
+ resource_url.path())) {
GURL frame_url = frame->document().url();
// The page_origin may be GURL("null") for unique origins like data URLs,
@@ -104,15 +111,13 @@ bool ResourceRequestPolicy::CanRequestResource(
return true;
}
-// static
bool ResourceRequestPolicy::CanRequestExtensionResourceScheme(
const GURL& resource_url,
blink::WebFrame* frame) {
- CHECK(resource_url.SchemeIs(extensions::kExtensionResourceScheme));
+ CHECK(resource_url.SchemeIs(kExtensionResourceScheme));
GURL frame_url = frame->document().url();
- if (!frame_url.is_empty() &&
- !frame_url.SchemeIs(extensions::kExtensionScheme)) {
+ if (!frame_url.is_empty() && !frame_url.SchemeIs(kExtensionScheme)) {
std::string message = base::StringPrintf(
"Denying load of %s. chrome-extension-resources:// can only be "
"loaded from extensions.",
@@ -126,7 +131,4 @@ bool ResourceRequestPolicy::CanRequestExtensionResourceScheme(
return true;
}
-ResourceRequestPolicy::ResourceRequestPolicy() {
-}
-
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698