Index: content/browser/browser_main_loop.cc |
diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc |
index 211afb42d2b7de4b686664707ac02de8c7c74b34..985026e89e6c7ba557dabec70f7e711e85cc07fa 100644 |
--- a/content/browser/browser_main_loop.cc |
+++ b/content/browser/browser_main_loop.cc |
@@ -103,6 +103,7 @@ |
#include "net/socket/client_socket_factory.h" |
#include "net/ssl/ssl_config_service.h" |
#include "ppapi/features/features.h" |
+#include "services/resource_coordinator/memory/coordinator/coordinator_impl.h" |
#include "services/service_manager/runner/common/client_util.h" |
#include "skia/ext/event_tracer_impl.h" |
#include "skia/ext/skia_memory_dump_provider.h" |
@@ -570,6 +571,7 @@ BrowserMainLoop::~BrowserMainLoop() { |
DCHECK_EQ(this, g_current_browser_main_loop); |
ui::Clipboard::DestroyClipboardForCurrentThread(); |
g_current_browser_main_loop = NULL; |
+ memory_instrumentation::CoordinatorImpl::SetInstance(nullptr); |
} |
void BrowserMainLoop::Init() { |
@@ -827,6 +829,16 @@ void BrowserMainLoop::PostMainMessageLoopStart() { |
LevelDBWrapperImpl::EnableAggressiveCommitDelay(); |
} |
+ // Create the memory instrumentation service. It will initialize the memory |
+ // dump manager, too. It makes sense that BrowserMainLoop owns the service; |
+ // this way, the service is alive for the lifetime of Mojo. Mojo is shutdown |
+ // in BrowserMainLoop::ShutdownThreadsAndCleanupIO. |
+ memory_instrumentation_coordinator_ = |
+ base::MakeUnique<memory_instrumentation::CoordinatorImpl>( |
+ true /* initialize_memory_dump_manager */); |
+ memory_instrumentation::CoordinatorImpl::SetInstance( |
+ memory_instrumentation_coordinator_.get()); |
+ |
// Enable memory-infra dump providers. |
InitSkiaEventTracer(); |
tracing::ProcessMetricsMemoryDumpProvider::RegisterForProcess( |