Index: chrome/renderer/extensions/extension_process_bindings.cc |
diff --git a/chrome/renderer/extensions/extension_process_bindings.cc b/chrome/renderer/extensions/extension_process_bindings.cc |
index 98b45f1bdba276f4b3162d1da45cef27775082fd..87efbc4969bf236aed60687ec0eafd9505c50865 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 |