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 a2628d9ed655f4a12ab81ceb7a0e491c3661c6ac..4e2cc606e9b8e04396ea06f6da46a75595fb76ae 100644 |
--- a/base/trace_event/memory_dump_manager.cc |
+++ b/base/trace_event/memory_dump_manager.cc |
@@ -16,7 +16,6 @@ |
#include "base/memory/ptr_util.h" |
#include "base/threading/thread.h" |
#include "base/threading/thread_task_runner_handle.h" |
-#include "base/timer/timer.h" |
#include "base/trace_event/heap_profiler.h" |
#include "base/trace_event/heap_profiler_allocation_context_tracker.h" |
#include "base/trace_event/heap_profiler_stack_frame_deduplicator.h" |
@@ -24,6 +23,7 @@ |
#include "base/trace_event/malloc_dump_provider.h" |
#include "base/trace_event/memory_dump_provider.h" |
#include "base/trace_event/memory_dump_session_state.h" |
+#include "base/trace_event/memory_infra_background_whitelist.h" |
#include "base/trace_event/process_memory_dump.h" |
#include "base/trace_event/trace_event.h" |
#include "base/trace_event/trace_event_argument.h" |
@@ -49,15 +49,6 @@ const unsigned char kTraceEventArgTypes[] = {TRACE_VALUE_TYPE_CONVERTABLE}; |
StaticAtomicSequenceNumber g_next_guid; |
MemoryDumpManager* g_instance_for_testing = nullptr; |
-// The names of dump providers whitelisted for background tracing. Dump |
-// providers can be added here only if the background mode dump has very |
-// less performance and memory overhead. |
-const char* const kDumpProviderWhitelist[] = { |
- // TODO(ssid): Fill this list with dump provider names which support |
- // background mode, crbug.com/613198. |
- nullptr, // End of list marker. |
-}; |
- |
// Callback wrapper to hook upon the completion of RequestGlobalDump() and |
// inject trace markers. |
void OnGlobalDumpDone(MemoryDumpCallback wrapped_callback, |
@@ -100,16 +91,6 @@ struct SessionStateConvertableProxy : public ConvertableToTraceFormat { |
GetterFunctPtr const getter_function; |
}; |
-// Checks if the name is in the given |list|. Last element of the list should be |
-// an empty string. |
-bool IsNameInList(const char* name, const char* const* list) { |
- for (size_t i = 0; list[i] != nullptr; ++i) { |
- if (strcmp(name, list[i]) == 0) |
- return true; |
- } |
- return false; |
-} |
- |
} // namespace |
// static |
@@ -150,7 +131,6 @@ MemoryDumpManager::MemoryDumpManager() |
: delegate_(nullptr), |
is_coordinator_(false), |
memory_tracing_enabled_(0), |
- dump_provider_whitelist_(kDumpProviderWhitelist), |
tracing_process_id_(kInvalidTracingProcessId), |
dumper_registrations_ignored_for_testing_(false), |
heap_profiling_enabled_(false) { |
@@ -274,8 +254,7 @@ void MemoryDumpManager::RegisterDumpProviderInternal( |
if (dumper_registrations_ignored_for_testing_) |
return; |
- bool whitelisted_for_background_mode = |
- IsNameInList(name, dump_provider_whitelist_); |
+ bool whitelisted_for_background_mode = IsMemoryDumpProviderWhitelisted(name); |
scoped_refptr<MemoryDumpProviderInfo> mdpinfo = |
new MemoryDumpProviderInfo(mdp, name, std::move(task_runner), options, |
whitelisted_for_background_mode); |
@@ -561,9 +540,10 @@ void MemoryDumpManager::InvokeOnMemoryDump( |
// process), non-zero when the coordinator process creates dumps on behalf |
// of child processes (see crbug.com/461788). |
ProcessId target_pid = mdpinfo->options.target_pid; |
- ProcessMemoryDump* pmd = |
- pmd_async_state->GetOrCreateMemoryDumpContainerForProcess(target_pid); |
MemoryDumpArgs args = {pmd_async_state->req_args.level_of_detail}; |
+ ProcessMemoryDump* pmd = |
+ pmd_async_state->GetOrCreateMemoryDumpContainerForProcess(target_pid, |
+ args); |
bool dump_successful = mdpinfo->dump_provider->OnMemoryDump(args, pmd); |
mdpinfo->consecutive_failures = |
dump_successful ? 0 : mdpinfo->consecutive_failures + 1; |
@@ -770,11 +750,12 @@ MemoryDumpManager::ProcessMemoryDumpAsyncState::~ProcessMemoryDumpAsyncState() { |
} |
ProcessMemoryDump* MemoryDumpManager::ProcessMemoryDumpAsyncState:: |
- GetOrCreateMemoryDumpContainerForProcess(ProcessId pid) { |
+ GetOrCreateMemoryDumpContainerForProcess(ProcessId pid, |
+ const MemoryDumpArgs& dump_args) { |
auto iter = process_dumps.find(pid); |
if (iter == process_dumps.end()) { |
std::unique_ptr<ProcessMemoryDump> new_pmd( |
- new ProcessMemoryDump(session_state)); |
+ new ProcessMemoryDump(session_state, dump_args)); |
iter = process_dumps.insert(std::make_pair(pid, std::move(new_pmd))).first; |
} |
return iter->second.get(); |