Chromium Code Reviews| Index: chrome/renderer/chrome_render_view_observer.cc |
| diff --git a/chrome/renderer/chrome_render_view_observer.cc b/chrome/renderer/chrome_render_view_observer.cc |
| index 8277af961d5fd879d491ed20d543e233a0faf6fb..720a03f2a92f272d57bbdae015b9118bddb02028 100644 |
| --- a/chrome/renderer/chrome_render_view_observer.cc |
| +++ b/chrome/renderer/chrome_render_view_observer.cc |
| @@ -498,21 +498,16 @@ bool ChromeRenderViewObserver::allowWriteToClipboard(WebFrame* frame, |
| return allowed; |
| } |
| -bool ChromeRenderViewObserver::HasExtensionPermission( |
| - const WebSecurityOrigin& origin, APIPermission::ID permission) const { |
| +const extensions::Extension* ChromeRenderViewObserver::GetExtension( |
| + const WebSecurityOrigin& origin) const { |
| if (!EqualsASCII(origin.protocol(), chrome::kExtensionScheme)) |
| - return false; |
| + return NULL; |
| const std::string extension_id = origin.host().utf8().data(); |
| if (!extension_dispatcher_->IsExtensionActive(extension_id)) |
| - return false; |
| - |
| - const extensions::Extension* extension = |
| - extension_dispatcher_->extensions()->GetByID(extension_id); |
| - if (!extension) |
| - return false; |
| + return NULL; |
| - return extension->HasAPIPermission(permission); |
| + return extension_dispatcher_->extensions()->GetByID(extension_id); |
| } |
| bool ChromeRenderViewObserver::allowWebComponents(const WebDocument& document, |
| @@ -524,20 +519,38 @@ bool ChromeRenderViewObserver::allowWebComponents(const WebDocument& document, |
| if (EqualsASCII(origin.protocol(), chrome::kChromeUIScheme)) |
| return true; |
| - // The <browser> tag is implemented via Shadow DOM. |
| - if (HasExtensionPermission(origin, APIPermission::kBrowserTag)) |
| - return true; |
| + if (const extensions::Extension* extension = GetExtension(origin)) { |
| + // The <browser> tag is implemented via Shadow DOM. |
| + if (extension->HasAPIPermission(APIPermission::kBrowserTag)) |
| + return true; |
| - if (HasExtensionPermission(origin, APIPermission::kExperimental)) |
| - return true; |
| + if (extension->HasAPIPermission(APIPermission::kExperimental)) |
| + return true; |
| + } |
| return false; |
| } |
| +bool ChromeRenderViewObserver::allowMutationEvents( |
| + const WebDocument& document, |
| + bool default_value) { |
| + WebSecurityOrigin origin = document.securityOrigin(); |
| + if (!EqualsASCII(origin.protocol(), chrome::kExtensionScheme)) |
|
Mihai Parparita -not on Chrome
2012/08/22 20:04:05
I don't think you need this check, GetExtension al
adamk
2012/08/22 21:39:53
Thanks, this was left over from a previous version
|
| + return default_value; |
| + |
| + if (const extensions::Extension* extension = GetExtension(origin)) { |
| + if (extension->is_platform_app()) |
| + return false; |
| + } |
| + |
| + return default_value; |
| +} |
| + |
| bool ChromeRenderViewObserver::allowHTMLNotifications( |
| const WebDocument& document) { |
| WebSecurityOrigin origin = document.securityOrigin(); |
| - return HasExtensionPermission(origin, APIPermission::kNotification); |
| + const extensions::Extension* extension = GetExtension(origin); |
| + return extension && extension->HasAPIPermission(APIPermission::kNotification); |
| } |
| static void SendInsecureContentSignal(int signal) { |