OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |