| Index: components/tracing/common/process_metrics_memory_dump_provider.cc
|
| diff --git a/components/tracing/common/process_metrics_memory_dump_provider.cc b/components/tracing/common/process_metrics_memory_dump_provider.cc
|
| index 147e8b33fde1d3f5eaaf2c0879f46cc48e1a9dee..c2961357f60eeaf42549955f4abd6ca9d022e6e5 100644
|
| --- a/components/tracing/common/process_metrics_memory_dump_provider.cc
|
| +++ b/components/tracing/common/process_metrics_memory_dump_provider.cc
|
| @@ -213,6 +213,10 @@ std::unique_ptr<base::ProcessMetrics> CreateProcessMetrics(
|
| // static
|
| uint64_t ProcessMetricsMemoryDumpProvider::rss_bytes_for_testing = 0;
|
|
|
| +// static
|
| +ProcessMetricsMemoryDumpProvider::FactoryFunction
|
| + ProcessMetricsMemoryDumpProvider::factory_for_testing = nullptr;
|
| +
|
| #if defined(OS_LINUX) || defined(OS_ANDROID)
|
|
|
| // static
|
| @@ -542,23 +546,31 @@ bool ProcessMetricsMemoryDumpProvider::DumpProcessMemoryMaps(
|
| // static
|
| void ProcessMetricsMemoryDumpProvider::RegisterForProcess(
|
| base::ProcessId process) {
|
| - std::unique_ptr<ProcessMetricsMemoryDumpProvider> metrics_provider(
|
| - new ProcessMetricsMemoryDumpProvider(process));
|
| - base::trace_event::MemoryDumpProvider::Options options;
|
| - options.target_pid = process;
|
| - options.is_fast_polling_supported = true;
|
| - base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(
|
| - metrics_provider.get(), "ProcessMemoryMetrics", nullptr, options);
|
| + std::unique_ptr<ProcessMetricsMemoryDumpProvider> owned_provider;
|
| + if (factory_for_testing) {
|
| + owned_provider = factory_for_testing(process);
|
| + } else {
|
| + owned_provider = std::unique_ptr<ProcessMetricsMemoryDumpProvider>(
|
| + new ProcessMetricsMemoryDumpProvider(process));
|
| + }
|
| +
|
| + ProcessMetricsMemoryDumpProvider* provider = owned_provider.get();
|
| bool did_insert =
|
| g_dump_providers_map.Get()
|
| - .insert(std::make_pair(process, std::move(metrics_provider)))
|
| + .insert(std::make_pair(process, std::move(owned_provider)))
|
| .second;
|
| if (!did_insert) {
|
| DLOG(ERROR) << "ProcessMetricsMemoryDumpProvider already registered for "
|
| << (process == base::kNullProcessId
|
| ? "current process"
|
| : "process id " + base::IntToString(process));
|
| + return;
|
| }
|
| + base::trace_event::MemoryDumpProvider::Options options;
|
| + options.target_pid = process;
|
| + options.is_fast_polling_supported = true;
|
| + base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(
|
| + provider, "ProcessMemoryMetrics", nullptr, options);
|
| }
|
|
|
| // static
|
|
|