| Index: chrome/browser/process_singleton_posix.cc
|
| diff --git a/chrome/browser/process_singleton_posix.cc b/chrome/browser/process_singleton_posix.cc
|
| index d5394b857a367f8806f408c9d527cc7f5b53d96e..f9880c7f7bdde794cd4e833346673c13540a640c 100644
|
| --- a/chrome/browser/process_singleton_posix.cc
|
| +++ b/chrome/browser/process_singleton_posix.cc
|
| @@ -62,6 +62,7 @@
|
| #include "base/location.h"
|
| #include "base/logging.h"
|
| #include "base/macros.h"
|
| +#include "base/memory/ref_counted.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/path_service.h"
|
| #include "base/posix/eintr_wrapper.h"
|
| @@ -69,6 +70,7 @@
|
| #include "base/rand_util.h"
|
| #include "base/sequenced_task_runner_helpers.h"
|
| #include "base/single_thread_task_runner.h"
|
| +#include "base/single_thread_task_runner.h"
|
| #include "base/stl_util.h"
|
| #include "base/strings/string_number_conversions.h"
|
| #include "base/strings/string_split.h"
|
| @@ -77,6 +79,7 @@
|
| #include "base/strings/sys_string_conversions.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "base/threading/platform_thread.h"
|
| +#include "base/threading/thread_task_runner_handle.h"
|
| #include "base/time/time.h"
|
| #include "base/timer/timer.h"
|
| #include "build/build_config.h"
|
| @@ -464,10 +467,10 @@ class ProcessSingleton::LinuxWatcher
|
| class SocketReader : public base::MessageLoopForIO::Watcher {
|
| public:
|
| SocketReader(ProcessSingleton::LinuxWatcher* parent,
|
| - base::MessageLoop* ui_message_loop,
|
| + scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
|
| int fd)
|
| : parent_(parent),
|
| - ui_message_loop_(ui_message_loop),
|
| + ui_task_runner_(ui_task_runner),
|
| fd_(fd),
|
| bytes_read_(0) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| @@ -505,8 +508,8 @@ class ProcessSingleton::LinuxWatcher
|
| // The ProcessSingleton::LinuxWatcher that owns us.
|
| ProcessSingleton::LinuxWatcher* const parent_;
|
|
|
| - // A reference to the UI message loop.
|
| - base::MessageLoop* const ui_message_loop_;
|
| + // A reference to the UI task runner.
|
| + scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
|
|
|
| // The file descriptor we're reading.
|
| const int fd_;
|
| @@ -525,9 +528,7 @@ class ProcessSingleton::LinuxWatcher
|
|
|
| // We expect to only be constructed on the UI thread.
|
| explicit LinuxWatcher(ProcessSingleton* parent)
|
| - : ui_message_loop_(base::MessageLoop::current()),
|
| - parent_(parent) {
|
| - }
|
| + : ui_task_runner_(base::ThreadTaskRunnerHandle::Get()), parent_(parent) {}
|
|
|
| // Start listening for connections on the socket. This method should be
|
| // called from the IO thread.
|
| @@ -571,7 +572,7 @@ class ProcessSingleton::LinuxWatcher
|
|
|
| // A reference to the UI message loop (i.e., the message loop we were
|
| // constructed on).
|
| - base::MessageLoop* ui_message_loop_;
|
| + scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
|
|
|
| // The ProcessSingleton that owns us.
|
| ProcessSingleton* const parent_;
|
| @@ -594,9 +595,8 @@ void ProcessSingleton::LinuxWatcher::OnFileCanReadWithoutBlocking(int fd) {
|
| }
|
| DCHECK(base::SetNonBlocking(connection_socket))
|
| << "Failed to make non-blocking socket.";
|
| - SocketReader* reader = new SocketReader(this,
|
| - ui_message_loop_,
|
| - connection_socket);
|
| + SocketReader* reader =
|
| + new SocketReader(this, ui_task_runner_, connection_socket);
|
| readers_.insert(reader);
|
| }
|
|
|
| @@ -612,7 +612,7 @@ void ProcessSingleton::LinuxWatcher::StartListening(int socket) {
|
| void ProcessSingleton::LinuxWatcher::HandleMessage(
|
| const std::string& current_dir, const std::vector<std::string>& argv,
|
| SocketReader* reader) {
|
| - DCHECK(ui_message_loop_ == base::MessageLoop::current());
|
| + DCHECK(ui_task_runner_->BelongsToCurrentThread());
|
| DCHECK(reader);
|
|
|
| if (parent_->notification_callback_.Run(base::CommandLine(argv),
|
| @@ -696,7 +696,7 @@ void ProcessSingleton::LinuxWatcher::SocketReader::OnFileCanReadWithoutBlocking(
|
| tokens.erase(tokens.begin());
|
|
|
| // Return to the UI thread to handle opening a new browser tab.
|
| - ui_message_loop_->task_runner()->PostTask(
|
| + ui_task_runner_->PostTask(
|
| FROM_HERE, base::Bind(&ProcessSingleton::LinuxWatcher::HandleMessage,
|
| parent_, current_dir, tokens, this));
|
| fd_reader_.StopWatchingFileDescriptor();
|
|
|