| Index: base/trace_event/memory_dump_manager.cc
|
| diff --git a/base/trace_event/memory_dump_manager.cc b/base/trace_event/memory_dump_manager.cc
|
| index 08684865cd47e4ce2e9b51b024f3c282c8a9df70..13e6054224bdb7acc72ea5684e75c2ce009d33ce 100644
|
| --- a/base/trace_event/memory_dump_manager.cc
|
| +++ b/base/trace_event/memory_dump_manager.cc
|
| @@ -314,9 +314,12 @@ void MemoryDumpManager::RegisterDumpProviderInternal(
|
| return;
|
|
|
| bool whitelisted_for_background_mode = IsMemoryDumpProviderWhitelisted(name);
|
| - scoped_refptr<MemoryDumpProviderInfo> mdpinfo =
|
| - new MemoryDumpProviderInfo(mdp, name, std::move(task_runner), options,
|
| - whitelisted_for_background_mode);
|
| + bool whitelisted_for_summary_mode =
|
| + IsMemoryDumpProviderWhitelistedForSummary(name);
|
| +
|
| + scoped_refptr<MemoryDumpProviderInfo> mdpinfo = new MemoryDumpProviderInfo(
|
| + mdp, name, std::move(task_runner), options,
|
| + whitelisted_for_background_mode, whitelisted_for_summary_mode);
|
|
|
| if (options.is_fast_polling_supported) {
|
| DCHECK(!mdpinfo->task_runner) << "MemoryDumpProviders capable of fast "
|
| @@ -556,6 +559,14 @@ void MemoryDumpManager::SetupNextMemoryDump(
|
| return SetupNextMemoryDump(std::move(pmd_async_state));
|
| }
|
|
|
| + // If we are in summary mode, we only need to invoke the providers
|
| + // whitelisted for summary mode.
|
| + if (pmd_async_state->req_args.dump_type == MemoryDumpType::SUMMARY_ONLY &&
|
| + !mdpinfo->whitelisted_for_summary_mode) {
|
| + pmd_async_state->pending_dump_providers.pop_back();
|
| + return SetupNextMemoryDump(std::move(pmd_async_state));
|
| + }
|
| +
|
| // If the dump provider did not specify a task runner affinity, dump on
|
| // |dump_thread_|.
|
| SequencedTaskRunner* task_runner = mdpinfo->task_runner.get();
|
|
|