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

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

Issue 942803002: [tracing] Fix MemoryDumpManager testing instance teardown pattern. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Simplify memory ownership Created 5 years, 10 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/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/trace_event/memory_dump_provider.h" 10 #include "base/trace_event/memory_dump_provider.h"
11 #include "base/trace_event/process_memory_dump.h" 11 #include "base/trace_event/process_memory_dump.h"
12 12
13 // TODO(primiano): in a separate CL rename DeleteTraceLogForTesting into
14 // something like base::internal::TeardownSingletonForTesting so we don't have
15 // to add a new friend to singleton each time.
16 class DeleteTraceLogForTesting {
17 public:
18 static void Delete() {
19 Singleton<
20 base::trace_event::MemoryDumpManager,
21 LeakySingletonTraits<base::trace_event::MemoryDumpManager>>::OnExit(0);
22 }
23 };
24
25 namespace base { 13 namespace base {
26 namespace trace_event { 14 namespace trace_event {
27 15
16 namespace {
17 MemoryDumpManager* g_instance_for_testing = nullptr;
18 }
19
28 // TODO(primiano): this should be smarter and should do something similar to 20 // TODO(primiano): this should be smarter and should do something similar to
29 // trace event synthetic delays. 21 // trace event synthetic delays.
30 const char MemoryDumpManager::kTraceCategory[] = 22 const char MemoryDumpManager::kTraceCategory[] =
31 TRACE_DISABLED_BY_DEFAULT("memory-dumps"); 23 TRACE_DISABLED_BY_DEFAULT("memory-dumps");
32 24
33 // static 25 // static
34 MemoryDumpManager* MemoryDumpManager::GetInstance() { 26 MemoryDumpManager* MemoryDumpManager::GetInstance() {
27 if (g_instance_for_testing)
28 return g_instance_for_testing;
29
35 return Singleton<MemoryDumpManager, 30 return Singleton<MemoryDumpManager,
36 LeakySingletonTraits<MemoryDumpManager>>::get(); 31 LeakySingletonTraits<MemoryDumpManager>>::get();
37 } 32 }
38 33
39 // static 34 // static
40 void MemoryDumpManager::DeleteForTesting() { 35 void MemoryDumpManager::SetInstanceForTesting(MemoryDumpManager* instance) {
41 DeleteTraceLogForTesting::Delete(); 36 g_instance_for_testing = instance;
42 } 37 }
43 38
44 MemoryDumpManager::MemoryDumpManager() : memory_tracing_enabled_(0) { 39 MemoryDumpManager::MemoryDumpManager() : memory_tracing_enabled_(0) {
45 } 40 }
46 41
47 MemoryDumpManager::~MemoryDumpManager() { 42 MemoryDumpManager::~MemoryDumpManager() {
48 base::trace_event::TraceLog::GetInstance()->RemoveEnabledStateObserver(this); 43 base::trace_event::TraceLog::GetInstance()->RemoveEnabledStateObserver(this);
49 } 44 }
50 45
51 void MemoryDumpManager::Initialize() { 46 void MemoryDumpManager::Initialize() {
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 } 121 }
127 122
128 void MemoryDumpManager::OnTraceLogDisabled() { 123 void MemoryDumpManager::OnTraceLogDisabled() {
129 AutoLock lock(lock_); 124 AutoLock lock(lock_);
130 dump_providers_enabled_.clear(); 125 dump_providers_enabled_.clear();
131 subtle::NoBarrier_Store(&memory_tracing_enabled_, 0); 126 subtle::NoBarrier_Store(&memory_tracing_enabled_, 0);
132 } 127 }
133 128
134 } // namespace trace_event 129 } // namespace trace_event
135 } // namespace base 130 } // namespace base
OLDNEW
« no previous file with comments | « base/trace_event/memory_dump_manager.h ('k') | base/trace_event/memory_dump_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698