summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/extensions
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-30 01:39:02 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-30 01:39:02 +0000
commit1e4c4560f20ac0802cfa71a25dd040eae801c8da (patch)
tree1aa59f089163cff17e0316e72bbcef1dca85e9e8 /chrome/renderer/extensions
parent036e91c7ed0104d4d147a2937814694d03e4a74b (diff)
downloadchromium_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.cc22
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