| Index: ipc/mojo/scoped_ipc_support.cc
|
| diff --git a/ipc/mojo/scoped_ipc_support.cc b/ipc/mojo/scoped_ipc_support.cc
|
| index 0da35e84392df05b895fbb55e244e9390bc6f894..b1d530e0463aedfe7c4e18f13a9aa94e31142395 100644
|
| --- a/ipc/mojo/scoped_ipc_support.cc
|
| +++ b/ipc/mojo/scoped_ipc_support.cc
|
| @@ -7,7 +7,6 @@
|
| #include "base/bind.h"
|
| #include "base/lazy_instance.h"
|
| #include "base/logging.h"
|
| -#include "base/memory/weak_ptr.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/synchronization/condition_variable.h"
|
| #include "base/synchronization/lock.h"
|
| @@ -26,8 +25,7 @@ class IPCSupportInitializer : public mojo::embedder::ProcessDelegate {
|
| : init_count_(0),
|
| shutting_down_(false),
|
| was_shut_down_(false),
|
| - observer_(nullptr),
|
| - weak_factory_(this) {}
|
| + observer_(nullptr) {}
|
|
|
| ~IPCSupportInitializer() override { DCHECK(!observer_); }
|
|
|
| @@ -43,11 +41,8 @@ class IPCSupportInitializer : public mojo::embedder::ProcessDelegate {
|
| // exists when the loop is being destroyed.
|
| class MessageLoopObserver : public base::MessageLoop::DestructionObserver {
|
| public:
|
| - MessageLoopObserver(
|
| - scoped_refptr<base::TaskRunner> initializer_task_runner,
|
| - base::WeakPtr<IPCSupportInitializer> weak_initializer)
|
| - : initializer_task_runner_(initializer_task_runner),
|
| - weak_initializer_(weak_initializer) {}
|
| + MessageLoopObserver(IPCSupportInitializer* initializer)
|
| + : initializer_(initializer) {}
|
|
|
| ~MessageLoopObserver() override {
|
| base::MessageLoop::current()->RemoveDestructionObserver(this);
|
| @@ -56,13 +51,10 @@ class IPCSupportInitializer : public mojo::embedder::ProcessDelegate {
|
| private:
|
| // base::MessageLoop::DestructionObserver:
|
| void WillDestroyCurrentMessageLoop() override {
|
| - initializer_task_runner_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&IPCSupportInitializer::ForceShutdown, weak_initializer_));
|
| + initializer_->ForceShutdown();
|
| }
|
|
|
| - scoped_refptr<base::TaskRunner> initializer_task_runner_;
|
| - base::WeakPtr<IPCSupportInitializer> weak_initializer_;
|
| + IPCSupportInitializer* initializer_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(MessageLoopObserver);
|
| };
|
| @@ -89,8 +81,6 @@ class IPCSupportInitializer : public mojo::embedder::ProcessDelegate {
|
|
|
| scoped_refptr<base::TaskRunner> io_thread_task_runner_;
|
|
|
| - base::WeakPtrFactory<IPCSupportInitializer> weak_factory_;
|
| -
|
| DISALLOW_COPY_AND_ASSIGN(IPCSupportInitializer);
|
| };
|
|
|
| @@ -111,8 +101,7 @@ void IPCSupportInitializer::Init(
|
| init_count_++;
|
| if (init_count_ == 1) {
|
| was_shut_down_ = false;
|
| - observer_ = new MessageLoopObserver(base::ThreadTaskRunnerHandle::Get(),
|
| - weak_factory_.GetWeakPtr());
|
| + observer_ = new MessageLoopObserver(this);
|
| io_thread_task_runner_ = io_thread_task_runner;
|
| io_thread_task_runner_->PostTask(
|
| FROM_HERE, base::Bind(&WatchMessageLoopOnIOThread, observer_));
|
|
|