| Index: base/message_loop_proxy.h
|
| diff --git a/base/message_loop_proxy.h b/base/message_loop_proxy.h
|
| index 320ccfb079921e47d33d2b1c89f353960aefe56f..4e4a6c67cd1f0dd031c8c4542502f3a2a20245ae 100644
|
| --- a/base/message_loop_proxy.h
|
| +++ b/base/message_loop_proxy.h
|
| @@ -10,6 +10,9 @@
|
| #include "base/compiler_specific.h"
|
| #include "base/memory/ref_counted.h"
|
| #include "base/single_thread_task_runner.h"
|
| +#include "base/synchronization/lock.h"
|
| +
|
| +class MessageLoop;
|
|
|
| namespace base {
|
|
|
| @@ -20,18 +23,60 @@ namespace base {
|
| // Thread::message_loop_proxy()
|
| // MessageLoop::current()->message_loop_proxy()
|
| // MessageLoopProxy::current()
|
| -//
|
| -// TODO(akalin): Now that we have the *TaskRunner interfaces, we can
|
| -// merge this with MessageLoopProxyImpl.
|
| class BASE_EXPORT MessageLoopProxy : public SingleThreadTaskRunner {
|
| public:
|
| // Gets the MessageLoopProxy for the current message loop, creating one if
|
| // needed.
|
| static scoped_refptr<MessageLoopProxy> current();
|
|
|
| + // TaskRunner implementation
|
| + virtual bool PostDelayedTask(const tracked_objects::Location& from_here,
|
| + const base::Closure& task,
|
| + int64 delay_ms) OVERRIDE;
|
| + virtual bool PostDelayedTask(const tracked_objects::Location& from_here,
|
| + const base::Closure& task,
|
| + base::TimeDelta delay) OVERRIDE;
|
| + virtual bool RunsTasksOnCurrentThread() const OVERRIDE;
|
| +
|
| + // SequencedTaskRunner implementation
|
| + virtual bool PostNonNestableDelayedTask(
|
| + const tracked_objects::Location& from_here,
|
| + const base::Closure& task,
|
| + int64 delay_ms) OVERRIDE;
|
| + virtual bool PostNonNestableDelayedTask(
|
| + const tracked_objects::Location& from_here,
|
| + const base::Closure& task,
|
| + base::TimeDelta delay) OVERRIDE;
|
| +
|
| protected:
|
| + // TaskRunner implementation
|
| + //
|
| + // Override OnDestruct so that we can delete the object on the target message
|
| + // loop if it still exists.
|
| + virtual void OnDestruct() const OVERRIDE;
|
| +
|
| + private:
|
| + // Allow the MessageLoop to create a MessageLoopProxy.
|
| + friend class ::MessageLoop;
|
| + friend class DeleteHelper<MessageLoopProxy>;
|
| +
|
| MessageLoopProxy();
|
| virtual ~MessageLoopProxy();
|
| +
|
| + // Called directly by MessageLoop::~MessageLoop.
|
| + void WillDestroyCurrentMessageLoop();
|
| +
|
| +
|
| + bool PostTaskHelper(const tracked_objects::Location& from_here,
|
| + const base::Closure& task,
|
| + base::TimeDelta delay,
|
| + bool nestable);
|
| +
|
| + // The lock that protects access to target_message_loop_.
|
| + mutable base::Lock message_loop_lock_;
|
| + MessageLoop* target_message_loop_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(MessageLoopProxy);
|
| };
|
|
|
| } // namespace base
|
|
|