| 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 bf631b34bea033cba4c95f76d4f73439ed703d3f..c8be8f89312a34d5b0bdd3996c3abebbc143f10b 100644
|
| --- a/base/trace_event/memory_dump_manager.cc
|
| +++ b/base/trace_event/memory_dump_manager.cc
|
| @@ -9,22 +9,15 @@
|
| #include "base/compiler_specific.h"
|
| #include "base/trace_event/memory_dump_provider.h"
|
| #include "base/trace_event/process_memory_dump.h"
|
| -
|
| -// TODO(primiano): in a separate CL rename DeleteTraceLogForTesting into
|
| -// something like base::internal::TeardownSingletonForTesting so we don't have
|
| -// to add a new friend to singleton each time.
|
| -class DeleteTraceLogForTesting {
|
| - public:
|
| - static void Delete() {
|
| - Singleton<
|
| - base::trace_event::MemoryDumpManager,
|
| - LeakySingletonTraits<base::trace_event::MemoryDumpManager>>::OnExit(0);
|
| - }
|
| -};
|
| +#include "base/trace_event/trace_event_argument.h"
|
|
|
| namespace base {
|
| namespace trace_event {
|
|
|
| +namespace {
|
| +MemoryDumpManager* g_instance_for_testing = nullptr;
|
| +}
|
| +
|
| // TODO(primiano): this should be smarter and should do something similar to
|
| // trace event synthetic delays.
|
| const char MemoryDumpManager::kTraceCategory[] =
|
| @@ -32,13 +25,16 @@ const char MemoryDumpManager::kTraceCategory[] =
|
|
|
| // static
|
| MemoryDumpManager* MemoryDumpManager::GetInstance() {
|
| + if (g_instance_for_testing)
|
| + return g_instance_for_testing;
|
| +
|
| return Singleton<MemoryDumpManager,
|
| LeakySingletonTraits<MemoryDumpManager>>::get();
|
| }
|
|
|
| // static
|
| -void MemoryDumpManager::DeleteForTesting() {
|
| - DeleteTraceLogForTesting::Delete();
|
| +void MemoryDumpManager::SetInstanceForTesting(MemoryDumpManager* instance) {
|
| + g_instance_for_testing = instance;
|
| }
|
|
|
| MemoryDumpManager::MemoryDumpManager() : memory_tracing_enabled_(0) {
|
| @@ -96,15 +92,14 @@ void MemoryDumpManager::BroadcastDumpRequest() {
|
| // Creates a dump point for the current process and appends it to the trace.
|
| void MemoryDumpManager::CreateLocalDumpPoint() {
|
| AutoLock lock(lock_);
|
| - // TRACE_EVENT_* macros don't induce scoped_refptr type inference, hence we
|
| - // need the base ConvertableToTraceFormat and the upcast below. The
|
| - // alternative would be unnecessarily expensive (double Acquire/Release).
|
| - scoped_refptr<ConvertableToTraceFormat> pmd(new ProcessMemoryDump());
|
| + scoped_ptr<ProcessMemoryDump> pmd(new ProcessMemoryDump());
|
|
|
| for (MemoryDumpProvider* dump_provider : dump_providers_enabled_) {
|
| - dump_provider->DumpInto(static_cast<ProcessMemoryDump*>(pmd.get()));
|
| + dump_provider->DumpInto(pmd.get());
|
| }
|
|
|
| + scoped_refptr<TracedValue> value(new TracedValue());
|
| + pmd->AsValueInto(value.get());
|
| // TODO(primiano): add the dump point to the trace at this point.
|
| }
|
|
|
|
|