| Index: third_party/crashpad/crashpad/util/thread/thread_log_messages.cc | 
| diff --git a/third_party/crashpad/crashpad/util/thread/thread_log_messages.cc b/third_party/crashpad/crashpad/util/thread/thread_log_messages.cc | 
| index dec111e7fe58e8b334c2fd01dac0a1a40692c01c..60be08b5b3331900b50fd9f809b81e3b1d72e899 100644 | 
| --- a/third_party/crashpad/crashpad/util/thread/thread_log_messages.cc | 
| +++ b/third_party/crashpad/crashpad/util/thread/thread_log_messages.cc | 
| @@ -16,7 +16,6 @@ | 
|  | 
| #include <sys/types.h> | 
|  | 
| -#include "base/lazy_instance.h" | 
| #include "base/logging.h" | 
| #include "base/threading/thread_local_storage.h" | 
|  | 
| @@ -28,14 +27,24 @@ namespace { | 
| // handler. A thread may register its thread-specific log message list to | 
| // receive messages produced just on that thread. | 
| // | 
| -// Only one object of this class may exist in the program at a time. There must | 
| -// not be any log message handler in effect when it is created, and nothing else | 
| -// can be set as a log message handler while an object of this class exists. | 
| -// | 
| -// Practically, the only object of this class that might exist is managed by the | 
| -// g_master lazy instance, which will create it upon first use. | 
| +// Only one object of this class may exist in the program at a time as created | 
| +// by GetInstance(). There must not be any log message handler in effect when it | 
| +// is created, and nothing else can be set as a log message handler while an | 
| +// object of this class exists. | 
| class ThreadLogMessagesMaster { | 
| public: | 
| +  void SetThreadMessageList(std::vector<std::string>* message_list) { | 
| +    DCHECK_EQ(logging::GetLogMessageHandler(), &LogMessageHandler); | 
| +    DCHECK_NE(tls_.Get() != nullptr, message_list != nullptr); | 
| +    tls_.Set(message_list); | 
| +  } | 
| + | 
| +  static ThreadLogMessagesMaster* GetInstance() { | 
| +    static auto master = new ThreadLogMessagesMaster(); | 
| +    return master; | 
| +  } | 
| + | 
| + private: | 
| ThreadLogMessagesMaster() { | 
| DCHECK(!tls_.initialized()); | 
| tls_.Initialize(nullptr); | 
| @@ -45,20 +54,8 @@ class ThreadLogMessagesMaster { | 
| logging::SetLogMessageHandler(LogMessageHandler); | 
| } | 
|  | 
| -  ~ThreadLogMessagesMaster() { | 
| -    DCHECK_EQ(logging::GetLogMessageHandler(), &LogMessageHandler); | 
| -    logging::SetLogMessageHandler(nullptr); | 
| +  ~ThreadLogMessagesMaster() = delete; | 
|  | 
| -    tls_.Free(); | 
| -  } | 
| - | 
| -  void SetThreadMessageList(std::vector<std::string>* message_list) { | 
| -    DCHECK_EQ(logging::GetLogMessageHandler(), &LogMessageHandler); | 
| -    DCHECK_NE(tls_.Get() != nullptr, message_list != nullptr); | 
| -    tls_.Set(message_list); | 
| -  } | 
| - | 
| - private: | 
| static bool LogMessageHandler(logging::LogSeverity severity, | 
| const char* file_path, | 
| int line, | 
| @@ -84,18 +81,14 @@ class ThreadLogMessagesMaster { | 
| base::ThreadLocalStorage::StaticSlot ThreadLogMessagesMaster::tls_ | 
| = TLS_INITIALIZER; | 
|  | 
| -base::LazyInstance<ThreadLogMessagesMaster>::Leaky g_master = | 
| -    LAZY_INSTANCE_INITIALIZER; | 
| - | 
| }  // namespace | 
|  | 
| -ThreadLogMessages::ThreadLogMessages() | 
| -    : log_messages_() { | 
| -  g_master.Get().SetThreadMessageList(&log_messages_); | 
| +ThreadLogMessages::ThreadLogMessages() : log_messages_() { | 
| +  ThreadLogMessagesMaster::GetInstance()->SetThreadMessageList(&log_messages_); | 
| } | 
|  | 
| ThreadLogMessages::~ThreadLogMessages() { | 
| -  g_master.Get().SetThreadMessageList(nullptr); | 
| +  ThreadLogMessagesMaster::GetInstance()->SetThreadMessageList(nullptr); | 
| } | 
|  | 
| }  // namespace crashpad | 
|  |