Index: base/trace_event/memory_dump_provider_info.cc |
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 0000000000000000000000000000000000000000..6bb711018ba5559e2d678dec54b23787cb0bf74b |
--- /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 |