Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: base/trace_event/memory_dump_manager.cc

Issue 1308403002: [Tracing] Disable registration of regular dump providers during tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@reland-content-browsertest
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/trace_event/memory_dump_manager.h" 5 #include "base/trace_event/memory_dump_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/atomic_sequence_num.h" 9 #include "base/atomic_sequence_num.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 MemoryDumpManager* MemoryDumpManager::GetInstance() { 80 MemoryDumpManager* MemoryDumpManager::GetInstance() {
81 if (g_instance_for_testing) 81 if (g_instance_for_testing)
82 return g_instance_for_testing; 82 return g_instance_for_testing;
83 83
84 return Singleton<MemoryDumpManager, 84 return Singleton<MemoryDumpManager,
85 LeakySingletonTraits<MemoryDumpManager>>::get(); 85 LeakySingletonTraits<MemoryDumpManager>>::get();
86 } 86 }
87 87
88 // static 88 // static
89 void MemoryDumpManager::SetInstanceForTesting(MemoryDumpManager* instance) { 89 void MemoryDumpManager::SetInstanceForTesting(MemoryDumpManager* instance) {
90 if (instance)
91 instance->skip_core_dumpers_auto_registration_for_testing_ = true;
92 g_instance_for_testing = instance; 90 g_instance_for_testing = instance;
93 } 91 }
94 92
95 MemoryDumpManager::MemoryDumpManager() 93 MemoryDumpManager::MemoryDumpManager()
96 : delegate_(nullptr), 94 : delegate_(nullptr),
97 memory_tracing_enabled_(0), 95 memory_tracing_enabled_(0),
98 tracing_process_id_(kInvalidTracingProcessId), 96 tracing_process_id_(kInvalidTracingProcessId),
99 system_allocator_pool_name_(nullptr), 97 system_allocator_pool_name_(nullptr),
100 skip_core_dumpers_auto_registration_for_testing_(false), 98 ignore_registrations_for_testing_(false),
101 disable_periodic_dumps_for_testing_(false) { 99 disable_periodic_dumps_for_testing_(false) {
102 g_next_guid.GetNext(); // Make sure that first guid is not zero. 100 g_next_guid.GetNext(); // Make sure that first guid is not zero.
103 } 101 }
104 102
105 MemoryDumpManager::~MemoryDumpManager() { 103 MemoryDumpManager::~MemoryDumpManager() {
106 base::trace_event::TraceLog::GetInstance()->RemoveEnabledStateObserver(this); 104 base::trace_event::TraceLog::GetInstance()->RemoveEnabledStateObserver(this);
107 } 105 }
108 106
109 void MemoryDumpManager::Initialize() { 107 void MemoryDumpManager::Initialize() {
110 TRACE_EVENT0(kTraceCategory, "init"); // Add to trace-viewer category list. 108 TRACE_EVENT0(kTraceCategory, "init"); // Add to trace-viewer category list.
111 trace_event::TraceLog::GetInstance()->AddEnabledStateObserver(this); 109 trace_event::TraceLog::GetInstance()->AddEnabledStateObserver(this);
112 110
113 if (skip_core_dumpers_auto_registration_for_testing_)
114 return;
115
116 // Enable the core dump providers. 111 // Enable the core dump providers.
117 #if !defined(OS_NACL) 112 #if !defined(OS_NACL)
118 RegisterDumpProvider(ProcessMemoryTotalsDumpProvider::GetInstance()); 113 RegisterDumpProvider(ProcessMemoryTotalsDumpProvider::GetInstance());
119 #endif 114 #endif
120 115
121 #if defined(OS_LINUX) || defined(OS_ANDROID) 116 #if defined(OS_LINUX) || defined(OS_ANDROID)
122 // The memory maps dump provider is currently disabled for security reasons 117 // The memory maps dump provider is currently disabled for security reasons
123 // and will be enabled once tracing is more secure (crbug.com/517906). 118 // and will be enabled once tracing is more secure (crbug.com/517906).
124 // It is still enabled for running benchmarks. 119 // It is still enabled for running benchmarks.
125 if (CommandLine::ForCurrentProcess()->HasSwitch( 120 if (CommandLine::ForCurrentProcess()->HasSwitch(
(...skipping 17 matching lines...) Expand all
143 138
144 void MemoryDumpManager::SetDelegate(MemoryDumpManagerDelegate* delegate) { 139 void MemoryDumpManager::SetDelegate(MemoryDumpManagerDelegate* delegate) {
145 AutoLock lock(lock_); 140 AutoLock lock(lock_);
146 DCHECK_EQ(static_cast<MemoryDumpManagerDelegate*>(nullptr), delegate_); 141 DCHECK_EQ(static_cast<MemoryDumpManagerDelegate*>(nullptr), delegate_);
147 delegate_ = delegate; 142 delegate_ = delegate;
148 } 143 }
149 144
150 void MemoryDumpManager::RegisterDumpProvider( 145 void MemoryDumpManager::RegisterDumpProvider(
151 MemoryDumpProvider* mdp, 146 MemoryDumpProvider* mdp,
152 const scoped_refptr<SingleThreadTaskRunner>& task_runner) { 147 const scoped_refptr<SingleThreadTaskRunner>& task_runner) {
148 AutoLock lock(lock_);
149
150 if (ignore_registrations_for_testing_)
151 return;
152
153 MemoryDumpProviderInfo mdp_info(mdp, task_runner); 153 MemoryDumpProviderInfo mdp_info(mdp, task_runner);
154 AutoLock lock(lock_);
155 auto iter_new = dump_providers_.insert(mdp_info); 154 auto iter_new = dump_providers_.insert(mdp_info);
156 155
157 // If there was a previous entry, replace it with the new one. This is to deal 156 // If there was a previous entry, replace it with the new one. This is to deal
158 // with the case where a dump provider unregisters itself and then re- 157 // with the case where a dump provider unregisters itself and then re-
159 // registers before a memory dump happens, so its entry was still in the 158 // registers before a memory dump happens, so its entry was still in the
160 // collection but flagged |unregistered|. 159 // collection but flagged |unregistered|.
161 if (!iter_new.second) { 160 if (!iter_new.second) {
162 dump_providers_.erase(iter_new.first); 161 dump_providers_.erase(iter_new.first);
163 dump_providers_.insert(mdp_info); 162 dump_providers_.insert(mdp_info);
164 } 163 }
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 next_dump_provider(next_dump_provider), 475 next_dump_provider(next_dump_provider),
477 callback(callback), 476 callback(callback),
478 task_runner(MessageLoop::current()->task_runner()) { 477 task_runner(MessageLoop::current()->task_runner()) {
479 } 478 }
480 479
481 MemoryDumpManager::ProcessMemoryDumpAsyncState::~ProcessMemoryDumpAsyncState() { 480 MemoryDumpManager::ProcessMemoryDumpAsyncState::~ProcessMemoryDumpAsyncState() {
482 } 481 }
483 482
484 } // namespace trace_event 483 } // namespace trace_event
485 } // namespace base 484 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698