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

Unified Diff: chrome/renderer/chrome_content_renderer_client.cc

Issue 9909019: Add schema chrome-extension-resource:// for extension resources (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Update Created 8 years, 8 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/chrome_content_renderer_client.cc
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
index 5f902a2065b2d5cdf99e1b3b61b50ee9b0a920a8..c741c57d769ac8d1f1b47df507836c4bd9e80c28 100644
--- a/chrome/renderer/chrome_content_renderer_client.cc
+++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -214,6 +214,14 @@ void ChromeContentRendererClient::RenderThreadStarted() {
// chrome-extension: resources should be allowed to receive CORS requests.
WebSecurityPolicy::registerURLSchemeAsCORSEnabled(extension_scheme);
+
+ WebString extension_resource_scheme(
+ ASCIIToUTF16(chrome::kExtensionResourceScheme));
+ WebSecurityPolicy::registerURLSchemeAsSecure(extension_resource_scheme);
+
+ // chrome-extension-resource: resources should be allowed to receive CORS
+ // requests.
+ WebSecurityPolicy::registerURLSchemeAsCORSEnabled(extension_resource_scheme);
}
void ChromeContentRendererClient::RenderViewCreated(
@@ -703,14 +711,18 @@ bool ChromeContentRendererClient::ShouldFork(WebFrame* frame,
bool ChromeContentRendererClient::WillSendRequest(WebKit::WebFrame* frame,
const GURL& url,
GURL* new_url) {
- // 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.
- if (url.SchemeIs(chrome::kExtensionScheme) &&
+ // Check whether the request should be allowed. If not allowed, we reset the
+ // URL to something invalid to prevent the request and cause an error.
+ if ((url.SchemeIs(chrome::kExtensionScheme) &&
!ExtensionResourceRequestPolicy::CanRequestResource(
url,
frame,
- extension_dispatcher_->extensions())) {
+ extension_dispatcher_->extensions())) ||
+ (url.SchemeIs(chrome::kExtensionResourceScheme) &&
Tom Sepez 2012/04/18 18:03:01 Worry about promoting a c-e-r:// scheme to a c-e:/
Aaron Boodman 2012/04/18 18:06:21 Theoretically, this URL should have no privileges,
Tom Sepez 2012/04/18 18:24:38 Maybe you invent c-e-r://null and check for that i
Peng 2012/04/18 18:29:16 Tom, Aaron, Any suggestion? I don't know any other
Peng 2012/04/18 18:35:12 Only requesting from web page will be redirected t
Peng 2012/04/18 18:47:32 Done.
Aaron Boodman 2012/04/18 18:51:01 How is that different from what we do now? Can we
Aaron Boodman 2012/04/18 19:13:49 I discussed with peng offline. We are going to use
+ !ExtensionResourceRequestPolicy::CanRequestExtensionResourceScheme(
+ url,
+ frame,
+ extension_dispatcher_->extensions()))) {
*new_url = GURL("chrome-extension://invalid/");
return true;
}

Powered by Google App Engine
This is Rietveld 408576698