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

Side by Side 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 unified diff | Download patch
OLDNEW
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/renderer/chrome_content_renderer_client.h" 5 #include "chrome/renderer/chrome_content_renderer_client.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 207
208 // chrome:, and chrome-extension: resources shouldn't trigger insecure 208 // chrome:, and chrome-extension: resources shouldn't trigger insecure
209 // content warnings. 209 // content warnings.
210 WebSecurityPolicy::registerURLSchemeAsSecure(chrome_ui_scheme); 210 WebSecurityPolicy::registerURLSchemeAsSecure(chrome_ui_scheme);
211 211
212 WebString extension_scheme(ASCIIToUTF16(chrome::kExtensionScheme)); 212 WebString extension_scheme(ASCIIToUTF16(chrome::kExtensionScheme));
213 WebSecurityPolicy::registerURLSchemeAsSecure(extension_scheme); 213 WebSecurityPolicy::registerURLSchemeAsSecure(extension_scheme);
214 214
215 // chrome-extension: resources should be allowed to receive CORS requests. 215 // chrome-extension: resources should be allowed to receive CORS requests.
216 WebSecurityPolicy::registerURLSchemeAsCORSEnabled(extension_scheme); 216 WebSecurityPolicy::registerURLSchemeAsCORSEnabled(extension_scheme);
217
218 WebString extension_resource_scheme(
219 ASCIIToUTF16(chrome::kExtensionResourceScheme));
220 WebSecurityPolicy::registerURLSchemeAsSecure(extension_resource_scheme);
221
222 // chrome-extension-resource: resources should be allowed to receive CORS
223 // requests.
224 WebSecurityPolicy::registerURLSchemeAsCORSEnabled(extension_resource_scheme);
217 } 225 }
218 226
219 void ChromeContentRendererClient::RenderViewCreated( 227 void ChromeContentRendererClient::RenderViewCreated(
220 content::RenderView* render_view) { 228 content::RenderView* render_view) {
221 ContentSettingsObserver* content_settings = 229 ContentSettingsObserver* content_settings =
222 new ContentSettingsObserver(render_view); 230 new ContentSettingsObserver(render_view);
223 if (chrome_observer_.get()) { 231 if (chrome_observer_.get()) {
224 content_settings->SetContentSettingRules( 232 content_settings->SetContentSettingRules(
225 chrome_observer_->content_setting_rules()); 233 chrome_observer_->content_setting_rules());
226 } 234 }
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 if (is_extension_url != extension_dispatcher_->is_extension_process()) 704 if (is_extension_url != extension_dispatcher_->is_extension_process())
697 return true; 705 return true;
698 } 706 }
699 707
700 return false; 708 return false;
701 } 709 }
702 710
703 bool ChromeContentRendererClient::WillSendRequest(WebKit::WebFrame* frame, 711 bool ChromeContentRendererClient::WillSendRequest(WebKit::WebFrame* frame,
704 const GURL& url, 712 const GURL& url,
705 GURL* new_url) { 713 GURL* new_url) {
706 // If the request is for an extension resource, check whether it should be 714 // Check whether the request should be allowed. If not allowed, we reset the
707 // allowed. If not allowed, we reset the URL to something invalid to prevent 715 // URL to something invalid to prevent the request and cause an error.
708 // the request and cause an error. 716 if ((url.SchemeIs(chrome::kExtensionScheme) &&
709 if (url.SchemeIs(chrome::kExtensionScheme) &&
710 !ExtensionResourceRequestPolicy::CanRequestResource( 717 !ExtensionResourceRequestPolicy::CanRequestResource(
711 url, 718 url,
712 frame, 719 frame,
713 extension_dispatcher_->extensions())) { 720 extension_dispatcher_->extensions())) ||
721 (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
722 !ExtensionResourceRequestPolicy::CanRequestExtensionResourceScheme(
723 url,
724 frame,
725 extension_dispatcher_->extensions()))) {
714 *new_url = GURL("chrome-extension://invalid/"); 726 *new_url = GURL("chrome-extension://invalid/");
715 return true; 727 return true;
716 } 728 }
717 729
718 return false; 730 return false;
719 } 731 }
720 732
721 bool ChromeContentRendererClient::ShouldPumpEventsDuringCookieMessage() { 733 bool ChromeContentRendererClient::ShouldPumpEventsDuringCookieMessage() {
722 // We no longer pump messages, even under Chrome Frame. We rely on cookie 734 // We no longer pump messages, even under Chrome Frame. We rely on cookie
723 // read requests handled by CF not putting up UI or causing other actions 735 // read requests handled by CF not putting up UI or causing other actions
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
859 bool ChromeContentRendererClient::IsOtherExtensionWithWebRequestInstalled() { 871 bool ChromeContentRendererClient::IsOtherExtensionWithWebRequestInstalled() {
860 return extension_dispatcher_->IsOtherExtensionWithWebRequestInstalled(); 872 return extension_dispatcher_->IsOtherExtensionWithWebRequestInstalled();
861 } 873 }
862 874
863 void ChromeContentRendererClient::RegisterPPAPIInterfaceFactories( 875 void ChromeContentRendererClient::RegisterPPAPIInterfaceFactories(
864 webkit::ppapi::PpapiInterfaceFactoryManager* factory_manager) { 876 webkit::ppapi::PpapiInterfaceFactoryManager* factory_manager) {
865 factory_manager->RegisterFactory(ChromePPAPIInterfaceFactory); 877 factory_manager->RegisterFactory(ChromePPAPIInterfaceFactory);
866 } 878 }
867 879
868 } // namespace chrome 880 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698