diff options
Diffstat (limited to 'chrome/renderer/extensions')
-rw-r--r-- | chrome/renderer/extensions/extension_process_bindings.cc | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/chrome/renderer/extensions/extension_process_bindings.cc b/chrome/renderer/extensions/extension_process_bindings.cc index 98b45f1..87efbc4 100644 --- a/chrome/renderer/extensions/extension_process_bindings.cc +++ b/chrome/renderer/extensions/extension_process_bindings.cc @@ -9,8 +9,11 @@ #include <string> #include <vector> +#include "base/command_line.h" #include "base/json/json_reader.h" #include "base/singleton.h" +#include "chrome/common/child_process_logging.h" +#include "chrome/common/chrome_switches.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_message_bundle.h" #include "chrome/common/extensions/url_pattern.h" @@ -102,6 +105,19 @@ static L10nMessagesMap* GetL10nMessagesMap(const std::string extension_id) { } } +static std::vector<std::string> GetActiveExtensionIDs() { + std::vector<std::string> extension_ids; + ExtensionPermissionsMap& permissions = + Singleton<SingletonData>()->permissions_; + + for (ExtensionPermissionsMap::iterator iter = permissions.begin(); + iter != permissions.end(); ++iter) { + extension_ids.push_back(iter->first); + } + + return extension_ids; +} + // A RenderViewVisitor class that iterates through the set of available // views, looking for a view of the given type, in the given browser window // and within the given extension. @@ -626,6 +642,12 @@ void ExtensionProcessBindings::SetAPIPermissions( permissions_map[Extension::kPermissionNames[i]] = false; for (size_t i = 0; i < permissions.size(); ++i) permissions_map[permissions[i]] = true; + + // Ugly hack. We also update our list of active extensions here. This always + // gets called, even if the extension has no api permissions. In single + // process, this has already been done in the browser code. + if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kSingleProcess)) + child_process_logging::SetActiveExtensions(GetActiveExtensionIDs()); } // static |