| Index: base/trace_event/memory_dump_manager.h
 | 
| diff --git a/base/trace_event/memory_dump_manager.h b/base/trace_event/memory_dump_manager.h
 | 
| index ebee048691628d5c29201eadd9efe17fe5032349..e7f51948506f2458232fd62b1840b50062ce8ba4 100644
 | 
| --- a/base/trace_event/memory_dump_manager.h
 | 
| +++ b/base/trace_event/memory_dump_manager.h
 | 
| @@ -9,7 +9,7 @@
 | 
|  
 | 
|  #include <map>
 | 
|  #include <memory>
 | 
| -#include <set>
 | 
| +#include <unordered_set>
 | 
|  #include <vector>
 | 
|  
 | 
|  #include "base/atomicops.h"
 | 
| @@ -19,6 +19,7 @@
 | 
|  #include "base/memory/singleton.h"
 | 
|  #include "base/synchronization/lock.h"
 | 
|  #include "base/trace_event/memory_allocator_dump.h"
 | 
| +#include "base/trace_event/memory_dump_provider_info.h"
 | 
|  #include "base/trace_event/memory_dump_request_args.h"
 | 
|  #include "base/trace_event/process_memory_dump.h"
 | 
|  #include "base/trace_event/trace_event.h"
 | 
| @@ -170,70 +171,6 @@ class BASE_EXPORT MemoryDumpManager : public TraceLog::EnabledStateObserver {
 | 
|    friend class MemoryDumpScheduler;
 | 
|    friend class memory_instrumentation::MemoryDumpManagerDelegateImplTest;
 | 
|  
 | 
| -  // Descriptor used to hold information about registered MDPs.
 | 
| -  // Some important considerations about lifetime of this object:
 | 
| -  // - In nominal conditions, all the MemoryDumpProviderInfo instances live in
 | 
| -  //   the |dump_providers_| collection (% unregistration while dumping).
 | 
| -  // - Upon each dump they (actually their scoped_refptr-s) are copied into
 | 
| -  //   the ProcessMemoryDumpAsyncState. This is to allow removal (see below).
 | 
| -  // - When the MDP.OnMemoryDump() is invoked, the corresponding MDPInfo copy
 | 
| -  //   inside ProcessMemoryDumpAsyncState is removed.
 | 
| -  // - In most cases, the MDPInfo is destroyed within UnregisterDumpProvider().
 | 
| -  // - If UnregisterDumpProvider() is called while a dump is in progress, the
 | 
| -  //   MDPInfo is destroyed in SetupNextMemoryDump() or InvokeOnMemoryDump(),
 | 
| -  //   when the copy inside ProcessMemoryDumpAsyncState is erase()-d.
 | 
| -  // - The non-const fields of MemoryDumpProviderInfo are safe to access only
 | 
| -  //   on tasks running in the |task_runner|, unless the thread has been
 | 
| -  //   destroyed.
 | 
| -  struct MemoryDumpProviderInfo
 | 
| -      : public RefCountedThreadSafe<MemoryDumpProviderInfo> {
 | 
| -    // Define a total order based on the |task_runner| affinity, so that MDPs
 | 
| -    // belonging to the same SequencedTaskRunner are adjacent in the set.
 | 
| -    struct Comparator {
 | 
| -      bool operator()(const scoped_refptr<MemoryDumpProviderInfo>& a,
 | 
| -                      const scoped_refptr<MemoryDumpProviderInfo>& b) const;
 | 
| -    };
 | 
| -    using OrderedSet =
 | 
| -        std::set<scoped_refptr<MemoryDumpProviderInfo>, Comparator>;
 | 
| -
 | 
| -    MemoryDumpProviderInfo(MemoryDumpProvider* dump_provider,
 | 
| -                           const char* name,
 | 
| -                           scoped_refptr<SequencedTaskRunner> task_runner,
 | 
| -                           const MemoryDumpProvider::Options& options,
 | 
| -                           bool whitelisted_for_background_mode);
 | 
| -
 | 
| -    MemoryDumpProvider* const dump_provider;
 | 
| -
 | 
| -    // Used to transfer ownership for UnregisterAndDeleteDumpProviderSoon().
 | 
| -    // nullptr in all other cases.
 | 
| -    std::unique_ptr<MemoryDumpProvider> owned_dump_provider;
 | 
| -
 | 
| -    // Human readable name, for debugging and testing. Not necessarily unique.
 | 
| -    const char* const name;
 | 
| -
 | 
| -    // The task runner affinity. Can be nullptr, in which case the dump provider
 | 
| -    // will be invoked on |dump_thread_|.
 | 
| -    const scoped_refptr<SequencedTaskRunner> task_runner;
 | 
| -
 | 
| -    // The |options| arg passed to RegisterDumpProvider().
 | 
| -    const MemoryDumpProvider::Options options;
 | 
| -
 | 
| -    // For fail-safe logic (auto-disable failing MDPs).
 | 
| -    int consecutive_failures;
 | 
| -
 | 
| -    // Flagged either by the auto-disable logic or during unregistration.
 | 
| -    bool disabled;
 | 
| -
 | 
| -    // True if the dump provider is whitelisted for background mode.
 | 
| -    const bool whitelisted_for_background_mode;
 | 
| -
 | 
| -   private:
 | 
| -    friend class base::RefCountedThreadSafe<MemoryDumpProviderInfo>;
 | 
| -    ~MemoryDumpProviderInfo();
 | 
| -
 | 
| -    DISALLOW_COPY_AND_ASSIGN(MemoryDumpProviderInfo);
 | 
| -  };
 | 
| -
 | 
|    // Holds the state of a process memory dump that needs to be carried over
 | 
|    // across task runners in order to fulfil an asynchronous CreateProcessDump()
 | 
|    // request. At any time exactly one task runner owns a
 | 
| 
 |