Index: chrome/browser/conflicts/module_database_win.h |
diff --git a/chrome/browser/conflicts/module_database_win.h b/chrome/browser/conflicts/module_database_win.h |
index ef7f4e3348cc72e5faef64b53e411b20472fdde3..26f9e035232e1284b30ca7833d1b58a0c753e53e 100644 |
--- a/chrome/browser/conflicts/module_database_win.h |
+++ b/chrome/browser/conflicts/module_database_win.h |
@@ -15,6 +15,7 @@ |
#include "base/memory/weak_ptr.h" |
#include "base/sequenced_task_runner.h" |
#include "chrome/browser/conflicts/module_info_win.h" |
+#include "chrome/browser/conflicts/module_inspector_win.h" |
#include "content/public/common/process_type.h" |
// A class that keeps track of all modules loaded across Chrome processes. |
@@ -23,7 +24,7 @@ |
// This is effectively a singleton, but doesn't use base::Singleton. The intent |
// is for the object to be created when Chrome is single-threaded, and for it |
// be set as the process-wide singleton via SetInstance. |
-class ModuleDatabase { |
+class ModuleDatabase : public ModuleInspector::Delegate { |
chrisha
2017/03/01 16:03:38
Is delegate the right pattern here? A delegate doe
Patrick Monette
2017/03/03 22:16:29
Using a callback sgtm. Done.
|
public: |
// Structures for maintaining information about modules. |
using ModuleMap = std::map<ModuleInfoKey, ModuleInfoData>; |
@@ -142,12 +143,19 @@ class ModuleDatabase { |
// Deletes a process info entry. |
void DeleteProcessInfo(uint32_t process_id, uint64_t creation_time); |
+ // ModuleInspector::Delegate: |
+ void OnModuleInspected(const ModuleInfoKey& module_key, |
+ const ModuleInfoData& module_data) override; |
+ |
// The task runner to which this object is bound. |
scoped_refptr<base::SequencedTaskRunner> task_runner_; |
// A map of all known modules. |
ModuleMap modules_; |
+ // Inspects new modules on a blocking task runner. |
+ ModuleInspector module_inspector_; |
+ |
// A map of all known running processes, and modules loaded/unloaded in |
// them. |
ProcessMap processes_; |