summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-12 01:06:19 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-12 01:06:19 +0000
commit16095bf0140c955960f2a4a99cc344d2b519b064 (patch)
tree2f78023b02e97174b4d05895c6256212e160ed57 /chrome/renderer
parentf0b739902f5235c47637c3ef3a0554189c7e7fbc (diff)
downloadchromium_src-16095bf0140c955960f2a4a99cc344d2b519b064.zip
chromium_src-16095bf0140c955960f2a4a99cc344d2b519b064.tar.gz
chromium_src-16095bf0140c955960f2a4a99cc344d2b519b064.tar.bz2
Revert "Re-land r84928: Move ExtensionFunctionDispatcher to"
Breaks installation on webstore. This reverts commit 73ad030f2c57a444b81351b2a1cd8546a6dbddc8. TBR=mpcomplete@chromium.org git-svn-id: svn://svn.chromium.org/chrome/trunk/src@85084 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/extensions/extension_dispatcher.cc29
-rw-r--r--chrome/renderer/extensions/extension_dispatcher.h8
2 files changed, 12 insertions, 25 deletions
diff --git a/chrome/renderer/extensions/extension_dispatcher.cc b/chrome/renderer/extensions/extension_dispatcher.cc
index 13339c3..a2bb8c0 100644
--- a/chrome/renderer/extensions/extension_dispatcher.cc
+++ b/chrome/renderer/extensions/extension_dispatcher.cc
@@ -35,8 +35,7 @@ using WebKit::WebFrame;
using WebKit::WebSecurityPolicy;
using WebKit::WebString;
-ExtensionDispatcher::ExtensionDispatcher()
- : is_webkit_initialized_(false) {
+ExtensionDispatcher::ExtensionDispatcher() {
std::string type_str = CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
switches::kProcessType);
is_extension_process_ = type_str == switches::kExtensionProcess ||
@@ -89,17 +88,6 @@ void ExtensionDispatcher::WebKitInitialized() {
RegisterExtension(EventBindings::Get(this), true);
RegisterExtension(RendererExtensionBindings::Get(this), true);
RegisterExtension(ExtensionApiTestV8Extension::Get(), true);
-
- // Initialize host permissions for any extensions that were activated before
- // WebKit was initialized.
- for (std::set<std::string>::iterator iter = active_extension_ids_.begin();
- iter != active_extension_ids_.end(); ++iter) {
- const Extension* extension = extensions_.GetByID(*iter);
- if (extension)
- InitHostPermissions(extension);
- }
-
- is_webkit_initialized_ = true;
}
void ExtensionDispatcher::IdleNotification() {
@@ -214,11 +202,6 @@ void ExtensionDispatcher::OnActivateExtension(
if (!extension)
return;
- if (is_webkit_initialized_)
- InitHostPermissions(extension);
-}
-
-void ExtensionDispatcher::InitHostPermissions(const Extension* extension) {
if (extension->HasApiPermission(Extension::kManagementPermission)) {
WebSecurityPolicy::addOriginAccessWhitelistEntry(
extension->url(),
@@ -227,7 +210,13 @@ void ExtensionDispatcher::InitHostPermissions(const Extension* extension) {
false);
}
- const URLPatternList& permissions = extension->host_permissions();
+ SetHostPermissions(extension->url(),
+ extension->host_permissions());
+}
+
+void ExtensionDispatcher::SetHostPermissions(
+ const GURL& extension_url,
+ const std::vector<URLPattern>& permissions) {
for (size_t i = 0; i < permissions.size(); ++i) {
const char* schemes[] = {
chrome::kHttpScheme,
@@ -238,7 +227,7 @@ void ExtensionDispatcher::InitHostPermissions(const Extension* extension) {
for (size_t j = 0; j < arraysize(schemes); ++j) {
if (permissions[i].MatchesScheme(schemes[j])) {
WebSecurityPolicy::addOriginAccessWhitelistEntry(
- extension->url(),
+ extension_url,
WebString::fromUTF8(schemes[j]),
WebString::fromUTF8(permissions[i].host()),
permissions[i].match_subdomains());
diff --git a/chrome/renderer/extensions/extension_dispatcher.h b/chrome/renderer/extensions/extension_dispatcher.h
index bce3c0f..c966d37 100644
--- a/chrome/renderer/extensions/extension_dispatcher.h
+++ b/chrome/renderer/extensions/extension_dispatcher.h
@@ -81,8 +81,9 @@ class ExtensionDispatcher : public RenderProcessObserver {
// extension is for Chrome Extensions only.
void RegisterExtension(v8::Extension* extension, bool restrict_to_extensions);
- // Sets up the host permissions for |extension|.
- void InitHostPermissions(const Extension* extension);
+ // Sets the host permissions for a particular extension.
+ void SetHostPermissions(const GURL& extension_url,
+ const std::vector<URLPattern>& permissions);
// True if this renderer is running extensions.
bool is_extension_process_;
@@ -107,9 +108,6 @@ class ExtensionDispatcher : public RenderProcessObserver {
// The extensions that are active in this process.
std::set<std::string> active_extension_ids_;
- // True once WebKit has been initialized (and it is therefore safe to poke).
- bool is_webkit_initialized_;
-
DISALLOW_COPY_AND_ASSIGN(ExtensionDispatcher);
};