summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authormpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-12 23:19:46 +0000
committermpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-12 23:19:46 +0000
commitc74e80bdba0edd3e4f30b2316579cfb88d17ad9f (patch)
tree7b13a35d5857851b90c4da0587713c6d5df2646b /chrome/renderer
parent13add42e40146f296ce11b56fa20d9aee8cb54a2 (diff)
downloadchromium_src-c74e80bdba0edd3e4f30b2316579cfb88d17ad9f.zip
chromium_src-c74e80bdba0edd3e4f30b2316579cfb88d17ad9f.tar.gz
chromium_src-c74e80bdba0edd3e4f30b2316579cfb88d17ad9f.tar.bz2
Allow extensions to use APIs that they didn't ask permission to use.
BUG=no TEST=no Review URL: http://codereview.chromium.org/165408 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23245 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/extensions/event_bindings.cc7
-rw-r--r--chrome/renderer/extensions/extension_process_bindings.cc7
2 files changed, 12 insertions, 2 deletions
diff --git a/chrome/renderer/extensions/event_bindings.cc b/chrome/renderer/extensions/event_bindings.cc
index fcc0bcf..5003b82 100644
--- a/chrome/renderer/extensions/event_bindings.cc
+++ b/chrome/renderer/extensions/event_bindings.cc
@@ -79,10 +79,15 @@ class ExtensionImpl : public ExtensionBase {
std::string event_name(*v8::String::AsciiValue(args[0]));
bool has_permission =
ExtensionProcessBindings::CurrentContextHasPermission(event_name);
+#if EXTENSION_TIME_TO_BREAK_API
+ bool allow_api = has_permission;
+#else
+ bool allow_api = true;
+#endif
// Increment the count even if the caller doesn't have permission, so that
// refcounts stay balanced.
- if (EventIncrementListenerCount(event_name) == 1 && has_permission) {
+ if (EventIncrementListenerCount(event_name) == 1 && allow_api) {
EventBindings::GetRenderThread()->Send(
new ViewHostMsg_ExtensionAddListener(event_name));
}
diff --git a/chrome/renderer/extensions/extension_process_bindings.cc b/chrome/renderer/extensions/extension_process_bindings.cc
index 78afca5..cf0f344 100644
--- a/chrome/renderer/extensions/extension_process_bindings.cc
+++ b/chrome/renderer/extensions/extension_process_bindings.cc
@@ -202,8 +202,13 @@ class ExtensionImpl : public ExtensionBase {
return v8::Undefined();
}
- if (!ExtensionProcessBindings::CurrentContextHasPermission(name))
+ if (!ExtensionProcessBindings::CurrentContextHasPermission(name)) {
+#if EXTENSION_TIME_TO_BREAK_API
return ExtensionProcessBindings::ThrowPermissionDeniedException(name);
+#else
+ ExtensionProcessBindings::ThrowPermissionDeniedException(name);
+#endif
+ }
std::string json_args = *v8::String::Utf8Value(args[1]);
int request_id = args[2]->Int32Value();