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

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: Make some test flaky for OSX Created 8 years, 7 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 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 224
225 // chrome:, and chrome-extension: resources shouldn't trigger insecure 225 // chrome:, and chrome-extension: resources shouldn't trigger insecure
226 // content warnings. 226 // content warnings.
227 WebSecurityPolicy::registerURLSchemeAsSecure(chrome_ui_scheme); 227 WebSecurityPolicy::registerURLSchemeAsSecure(chrome_ui_scheme);
228 228
229 WebString extension_scheme(ASCIIToUTF16(chrome::kExtensionScheme)); 229 WebString extension_scheme(ASCIIToUTF16(chrome::kExtensionScheme));
230 WebSecurityPolicy::registerURLSchemeAsSecure(extension_scheme); 230 WebSecurityPolicy::registerURLSchemeAsSecure(extension_scheme);
231 231
232 // chrome-extension: resources should be allowed to receive CORS requests. 232 // chrome-extension: resources should be allowed to receive CORS requests.
233 WebSecurityPolicy::registerURLSchemeAsCORSEnabled(extension_scheme); 233 WebSecurityPolicy::registerURLSchemeAsCORSEnabled(extension_scheme);
234
235 WebString extension_resource_scheme(
236 ASCIIToUTF16(chrome::kExtensionResourceScheme));
237 WebSecurityPolicy::registerURLSchemeAsSecure(extension_resource_scheme);
238
239 // chrome-extension-resource: resources should be allowed to receive CORS
240 // requests.
241 WebSecurityPolicy::registerURLSchemeAsCORSEnabled(extension_resource_scheme);
234 } 242 }
235 243
236 void ChromeContentRendererClient::RenderViewCreated( 244 void ChromeContentRendererClient::RenderViewCreated(
237 content::RenderView* render_view) { 245 content::RenderView* render_view) {
238 ContentSettingsObserver* content_settings = 246 ContentSettingsObserver* content_settings =
239 new ContentSettingsObserver(render_view); 247 new ContentSettingsObserver(render_view);
240 if (chrome_observer_.get()) { 248 if (chrome_observer_.get()) {
241 content_settings->SetContentSettingRules( 249 content_settings->SetContentSettingRules(
242 chrome_observer_->content_setting_rules()); 250 chrome_observer_->content_setting_rules());
243 } 251 }
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after
737 if (is_extension_url != extension_dispatcher_->is_extension_process()) 745 if (is_extension_url != extension_dispatcher_->is_extension_process())
738 return true; 746 return true;
739 } 747 }
740 748
741 return false; 749 return false;
742 } 750 }
743 751
744 bool ChromeContentRendererClient::WillSendRequest(WebKit::WebFrame* frame, 752 bool ChromeContentRendererClient::WillSendRequest(WebKit::WebFrame* frame,
745 const GURL& url, 753 const GURL& url,
746 GURL* new_url) { 754 GURL* new_url) {
747 // If the request is for an extension resource, check whether it should be 755 // Check whether the request should be allowed. If not allowed, we reset the
748 // allowed. If not allowed, we reset the URL to something invalid to prevent 756 // URL to something invalid to prevent the request and cause an error.
749 // the request and cause an error.
750 if (url.SchemeIs(chrome::kExtensionScheme) && 757 if (url.SchemeIs(chrome::kExtensionScheme) &&
751 !ExtensionResourceRequestPolicy::CanRequestResource( 758 !ExtensionResourceRequestPolicy::CanRequestResource(
752 url, 759 url,
753 frame, 760 frame,
754 extension_dispatcher_->extensions())) { 761 extension_dispatcher_->extensions())) {
755 *new_url = GURL("chrome-extension://invalid/"); 762 *new_url = GURL("chrome-extension://invalid/");
756 return true; 763 return true;
764
765 }
766
767 if (url.SchemeIs(chrome::kExtensionResourceScheme) &&
768 !ExtensionResourceRequestPolicy::CanRequestExtensionResourceScheme(
769 url,
770 frame)) {
771 *new_url = GURL("chrome-extension-resource://invalid/");
772 return true;
757 } 773 }
758 774
759 return false; 775 return false;
760 } 776 }
761 777
762 bool ChromeContentRendererClient::ShouldPumpEventsDuringCookieMessage() { 778 bool ChromeContentRendererClient::ShouldPumpEventsDuringCookieMessage() {
763 // We no longer pump messages, even under Chrome Frame. We rely on cookie 779 // We no longer pump messages, even under Chrome Frame. We rely on cookie
764 // read requests handled by CF not putting up UI or causing other actions 780 // read requests handled by CF not putting up UI or causing other actions
765 // that would require us to pump messages. This fixes http://crbug.com/110090. 781 // that would require us to pump messages. This fixes http://crbug.com/110090.
766 return false; 782 return false;
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
900 bool ChromeContentRendererClient::IsOtherExtensionWithWebRequestInstalled() { 916 bool ChromeContentRendererClient::IsOtherExtensionWithWebRequestInstalled() {
901 return extension_dispatcher_->IsOtherExtensionWithWebRequestInstalled(); 917 return extension_dispatcher_->IsOtherExtensionWithWebRequestInstalled();
902 } 918 }
903 919
904 void ChromeContentRendererClient::RegisterPPAPIInterfaceFactories( 920 void ChromeContentRendererClient::RegisterPPAPIInterfaceFactories(
905 webkit::ppapi::PpapiInterfaceFactoryManager* factory_manager) { 921 webkit::ppapi::PpapiInterfaceFactoryManager* factory_manager) {
906 factory_manager->RegisterFactory(ChromePPAPIInterfaceFactory); 922 factory_manager->RegisterFactory(ChromePPAPIInterfaceFactory);
907 } 923 }
908 924
909 } // namespace chrome 925 } // namespace chrome
OLDNEW
« no previous file with comments | « chrome/common/url_constants.cc ('k') | chrome/renderer/extensions/extension_resource_request_policy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698