diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-30 01:39:02 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-30 01:39:02 +0000 |
commit | 1e4c4560f20ac0802cfa71a25dd040eae801c8da (patch) | |
tree | 1aa59f089163cff17e0316e72bbcef1dca85e9e8 /chrome/renderer/extensions | |
parent | 036e91c7ed0104d4d147a2937814694d03e4a74b (diff) | |
download | chromium_src-1e4c4560f20ac0802cfa71a25dd040eae801c8da.zip chromium_src-1e4c4560f20ac0802cfa71a25dd040eae801c8da.tar.gz chromium_src-1e4c4560f20ac0802cfa71a25dd040eae801c8da.tar.bz2 |
Report active extensions in crash reports. This only implements Windows right now. Mac and linux will be separate CLs.
"Active" is overloaded to mean different things depending on
the process type:
- browser: all enabled extensions
- renderer: unique set of extensions from all user scripts
- extension: extensions running in the process
BUG=27169
Review URL: http://codereview.chromium.org/437078
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33255 0039d316-1c4b-4281-b951-d872f2087c98
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 |