Index: base/trace_event/memory_dump_manager.h |
diff --git a/base/trace_event/memory_dump_manager.h b/base/trace_event/memory_dump_manager.h |
index d359a8c3e9722f8441c907d06a2ae3b91cc8b7c8..1583c9ee6c7b5d37e104f1763015bce07454ec64 100644 |
--- a/base/trace_event/memory_dump_manager.h |
+++ b/base/trace_event/memory_dump_manager.h |
@@ -39,6 +39,7 @@ class Thread; |
namespace trace_event { |
+class MemoryTracingObserver; |
class MemoryDumpManagerDelegate; |
class MemoryDumpProvider; |
class MemoryDumpSessionState; |
@@ -46,7 +47,7 @@ class MemoryDumpSessionState; |
// This is the interface exposed to the rest of the codebase to deal with |
// memory tracing. The main entry point for clients is represented by |
// RequestDumpPoint(). The extension by Un(RegisterDumpProvider). |
-class BASE_EXPORT MemoryDumpManager : public TraceLog::EnabledStateObserver { |
+class BASE_EXPORT MemoryDumpManager { |
public: |
static const char* const kTraceCategory; |
static const char* const kLogPrefix; |
@@ -119,9 +120,15 @@ class BASE_EXPORT MemoryDumpManager : public TraceLog::EnabledStateObserver { |
void RequestGlobalDump(MemoryDumpType dump_type, |
MemoryDumpLevelOfDetail level_of_detail); |
- // TraceLog::EnabledStateObserver implementation. |
- void OnTraceLogEnabled() override; |
- void OnTraceLogDisabled() override; |
+ // Prepare MemoryDumpManager for RequestGlobalMemoryDump calls. |
+ // Starts the MemoryDumpManager thread. |
+ // Also uses the given config to initialize the peak detector, |
+ // scheduler and heap profiler. |
+ void Enable(const TraceConfig::MemoryDumpConfig&); |
+ |
+ // Tearsdown the MemoryDumpManager thread and various other state set up by |
+ // Enable. |
+ void Disable(); |
// Enable heap profiling if kEnableHeapProfiling is specified. |
void EnableHeapProfilingIfNeeded(); |
@@ -230,11 +237,12 @@ class BASE_EXPORT MemoryDumpManager : public TraceLog::EnabledStateObserver { |
static const char* const kSystemAllocatorPoolName; |
MemoryDumpManager(); |
- ~MemoryDumpManager() override; |
+ virtual ~MemoryDumpManager(); |
static void SetInstanceForTesting(MemoryDumpManager* instance); |
static uint32_t GetDumpsSumKb(const std::string&, const ProcessMemoryDump*); |
- static void FinalizeDumpAndAddToTrace( |
+ |
+ void FinalizeDumpAndAddToTrace( |
std::unique_ptr<ProcessMemoryDumpAsyncState> pmd_async_state); |
// Internal, used only by MemoryDumpManagerDelegate. |
@@ -284,6 +292,7 @@ class BASE_EXPORT MemoryDumpManager : public TraceLog::EnabledStateObserver { |
strict_thread_check_blacklist_; |
std::unique_ptr<MemoryDumpManagerDelegate> delegate_; |
+ std::unique_ptr<MemoryTracingObserver> tracing_observer_; |
// Protects from concurrent accesses to the |dump_providers_*| and |delegate_| |
// to guard against disabling logging while dumping on another thread. |