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/common/child_process_logging_win.cc | |
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/common/child_process_logging_win.cc')
-rw-r--r-- | chrome/common/child_process_logging_win.cc | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/chrome/common/child_process_logging_win.cc b/chrome/common/child_process_logging_win.cc index 94b77d8..9a11e8f 100644 --- a/chrome/common/child_process_logging_win.cc +++ b/chrome/common/child_process_logging_win.cc @@ -7,6 +7,7 @@ #include <windows.h> #include "base/string_util.h" +#include "chrome/app/breakpad_win.h" #include "chrome/common/chrome_constants.h" #include "chrome/installer/util/google_update_settings.h" #include "googleurl/src/gurl.h" @@ -18,6 +19,10 @@ typedef void (__cdecl *MainSetActiveURL)(const wchar_t*); // exported in breakpad_win.cc: void __declspec(dllexport) __cdecl SetClientId. typedef void (__cdecl *MainSetClientId)(const wchar_t*); +// exported in breakpad_win.cc: +// void __declspec(dllexport) __cdecl SetExtensionID. +typedef void (__cdecl *MainSetExtensionID)(size_t, const wchar_t*); + void SetActiveURL(const GURL& url) { static MainSetActiveURL set_active_url = NULL; // note: benign race condition on set_active_url. @@ -61,4 +66,24 @@ void SetClientId(const std::string& client_id) { (set_client_id)(wstr.c_str()); } +void SetActiveExtensions(const std::vector<std::string>& extension_ids) { + static MainSetExtensionID set_extension_id = NULL; + if (!set_extension_id) { + HMODULE exe_module = GetModuleHandle(chrome::kBrowserProcessExecutableName); + if (!exe_module) + return; + set_extension_id = reinterpret_cast<MainSetExtensionID>( + GetProcAddress(exe_module, "SetExtensionID")); + if (!set_extension_id) + return; + } + + for (size_t i = 0; i < kMaxReportedActiveExtensions; ++i) { + if (i < extension_ids.size()) + (set_extension_id)(i, ASCIIToWide(extension_ids[i].c_str()).c_str()); + else + (set_extension_id)(i, L""); + } +} + } // namespace child_process_logging |