| // 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() = default; | 
 |  | 
 | 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 |