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

Unified Diff: chrome/renderer/chrome_render_view_observer.cc

Issue 10870013: Disable DOM MutationEvents for platform apps (Closed) Base URL: http://git.chromium.org/chromium/src.git@git-svn
Patch Set: Added test Created 8 years, 4 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_render_view_observer.cc
diff --git a/chrome/renderer/chrome_render_view_observer.cc b/chrome/renderer/chrome_render_view_observer.cc
index 8277af961d5fd879d491ed20d543e233a0faf6fb..0522b2892ba61ffbeb4f8d08b71f12cc2d11891e 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,12 +519,14 @@ 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;
}
@@ -537,7 +534,17 @@ bool ChromeRenderViewObserver::allowWebComponents(const WebDocument& document,
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);
+}
+
+bool ChromeRenderViewObserver::allowMutationEvents(const WebDocument& document,
+ bool default_value) {
+ WebSecurityOrigin origin = document.securityOrigin();
+ const extensions::Extension* extension = GetExtension(origin);
+ if (extension && extension->is_platform_app())
+ return false;
+ return default_value;
}
static void SendInsecureContentSignal(int signal) {
« no previous file with comments | « chrome/renderer/chrome_render_view_observer.h ('k') | chrome/test/data/extensions/platform_apps/mutation_events/main.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698