memory_dump_provider_info.cc 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // Copyright 2017 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "base/trace_event/memory_dump_provider_info.h"
  5. #include <tuple>
  6. #include "base/task/sequenced_task_runner.h"
  7. namespace base {
  8. namespace trace_event {
  9. MemoryDumpProviderInfo::MemoryDumpProviderInfo(
  10. MemoryDumpProvider* dump_provider,
  11. const char* name,
  12. scoped_refptr<SequencedTaskRunner> task_runner,
  13. const MemoryDumpProvider::Options& options,
  14. bool allowed_in_background_mode)
  15. : dump_provider(dump_provider),
  16. options(options),
  17. name(name),
  18. task_runner(std::move(task_runner)),
  19. allowed_in_background_mode(allowed_in_background_mode),
  20. consecutive_failures(0),
  21. disabled(false) {}
  22. MemoryDumpProviderInfo::~MemoryDumpProviderInfo() = default;
  23. bool MemoryDumpProviderInfo::Comparator::operator()(
  24. const scoped_refptr<MemoryDumpProviderInfo>& a,
  25. const scoped_refptr<MemoryDumpProviderInfo>& b) const {
  26. if (!a || !b)
  27. return a.get() < b.get();
  28. // Ensure that unbound providers (task_runner == nullptr) always run last.
  29. // Rationale: some unbound dump providers are known to be slow, keep them last
  30. // to avoid skewing timings of the other dump providers.
  31. return std::tie(a->task_runner, a->dump_provider) >
  32. std::tie(b->task_runner, b->dump_provider);
  33. }
  34. } // namespace trace_event
  35. } // namespace base