Index: chrome/renderer/user_script_slave.cc |
diff --git a/chrome/renderer/user_script_slave.cc b/chrome/renderer/user_script_slave.cc |
index 73f25378b210ac9a080d7701cbaeadfdccd55e85..68dec433471cfaedb7ea8e87babf001dbc009167 100644 |
--- a/chrome/renderer/user_script_slave.cc |
+++ b/chrome/renderer/user_script_slave.cc |
@@ -5,12 +5,15 @@ |
#include "chrome/renderer/user_script_slave.h" |
#include "app/resource_bundle.h" |
+#include "base/command_line.h" |
#include "base/histogram.h" |
#include "base/logging.h" |
#include "base/perftimer.h" |
#include "base/pickle.h" |
#include "base/shared_memory.h" |
#include "base/string_util.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_constants.h" |
#include "chrome/renderer/extension_groups.h" |
@@ -111,6 +114,24 @@ bool UserScriptSlave::UpdateScripts(base::SharedMemoryHandle shared_memory) { |
} |
} |
+ // Update the crash reporter with all loaded extensions. In single process, |
+ // this has already been done in the browser code. |
+ if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kSingleProcess)) { |
+ std::vector<std::string> extension_ids; |
+ for (size_t i = 0; i < num_scripts; ++i) { |
+ DCHECK(!scripts_[i]->extension_id().empty()); |
+ |
+ // We must check this because there can be multiple scripts from a single |
+ // extension. n^2, but meh, it's a small list. |
+ if (std::find(extension_ids.begin(), extension_ids.end(), |
+ scripts_[i]->extension_id()) == extension_ids.end()) { |
+ extension_ids.push_back(scripts_[i]->extension_id()); |
+ } |
+ } |
+ |
+ child_process_logging::SetActiveExtensions(extension_ids); |
+ } |
+ |
return true; |
} |