diff options
Diffstat (limited to 'base/trace_event/memory_dump_provider_info.cc')
-rw-r--r-- | base/trace_event/memory_dump_provider_info.cc | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/base/trace_event/memory_dump_provider_info.cc b/base/trace_event/memory_dump_provider_info.cc new file mode 100644 index 0000000000..6bb711018b --- /dev/null +++ b/base/trace_event/memory_dump_provider_info.cc @@ -0,0 +1,43 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/trace_event/memory_dump_provider_info.h" + +#include <tuple> + +#include "base/sequenced_task_runner.h" + +namespace base { +namespace trace_event { + +MemoryDumpProviderInfo::MemoryDumpProviderInfo( + MemoryDumpProvider* dump_provider, + const char* name, + scoped_refptr<SequencedTaskRunner> task_runner, + const MemoryDumpProvider::Options& options, + bool whitelisted_for_background_mode) + : dump_provider(dump_provider), + options(options), + name(name), + task_runner(std::move(task_runner)), + whitelisted_for_background_mode(whitelisted_for_background_mode), + consecutive_failures(0), + disabled(false) {} + +MemoryDumpProviderInfo::~MemoryDumpProviderInfo() {} + +bool MemoryDumpProviderInfo::Comparator::operator()( + const scoped_refptr<MemoryDumpProviderInfo>& a, + const scoped_refptr<MemoryDumpProviderInfo>& b) const { + if (!a || !b) + return a.get() < b.get(); + // Ensure that unbound providers (task_runner == nullptr) always run last. + // Rationale: some unbound dump providers are known to be slow, keep them last + // to avoid skewing timings of the other dump providers. + return std::tie(a->task_runner, a->dump_provider) > + std::tie(b->task_runner, b->dump_provider); +} + +} // namespace trace_event +} // namespace base |