| Index: base/message_loop/message_loop.h
|
| diff --git a/base/message_loop/message_loop.h b/base/message_loop/message_loop.h
|
| index 9429e6b7115a24c02dc32e7d32653dc1b75236ea..fbb8309c203275768188b499ef5d5e8102a751e9 100644
|
| --- a/base/message_loop/message_loop.h
|
| +++ b/base/message_loop/message_loop.h
|
| @@ -296,9 +296,16 @@ class BASE_EXPORT MessageLoop : public MessagePump::Delegate {
|
| const std::string& thread_name() const { return thread_name_; }
|
|
|
| // Gets the TaskRunner associated with this message loop.
|
| - // TODO(skyostil): Change this to return a const reference to a refptr
|
| - // once the internal type matches what is being returned (crbug.com/465354).
|
| - scoped_refptr<SingleThreadTaskRunner> task_runner() { return task_runner_; }
|
| + const scoped_refptr<SingleThreadTaskRunner>& task_runner() {
|
| + return task_runner_;
|
| + }
|
| +
|
| + // Sets a new TaskRunner for this message loop. The message loop must already
|
| + // have been bound to a thread prior to this call, and the task runner must
|
| + // belong to that thread. Note that changing the task runner will also affect
|
| + // the ThreadTaskRunnerHandle for the target thread. Must be called on the
|
| + // thread to which the message loop is bound.
|
| + void SetTaskRunner(scoped_refptr<SingleThreadTaskRunner> task_runner);
|
|
|
| // Enables or disables the recursive task processing. This happens in the case
|
| // of recursive message loops. Some unwanted message loop may occurs when
|
| @@ -426,6 +433,10 @@ class BASE_EXPORT MessageLoop : public MessagePump::Delegate {
|
| // Configure various members and bind this message loop to the current thread.
|
| void BindToCurrentThread();
|
|
|
| + // Sets the ThreadTaskRunnerHandle for the current thread to point to the
|
| + // task runner for this message loop.
|
| + void SetThreadTaskRunnerHandle();
|
| +
|
| // Invokes the actual run loop using the message pump.
|
| void RunHandler();
|
|
|
| @@ -521,8 +532,11 @@ class BASE_EXPORT MessageLoop : public MessagePump::Delegate {
|
|
|
| scoped_refptr<internal::IncomingTaskQueue> incoming_task_queue_;
|
|
|
| + // A task runner which we haven't bound to a thread yet.
|
| + scoped_refptr<internal::MessageLoopTaskRunner> unbound_task_runner_;
|
| +
|
| // The task runner associated with this message loop.
|
| - scoped_refptr<internal::MessageLoopTaskRunner> task_runner_;
|
| + scoped_refptr<SingleThreadTaskRunner> task_runner_;
|
| scoped_ptr<ThreadTaskRunnerHandle> thread_task_runner_handle_;
|
|
|
| template <class T, class R> friend class base::subtle::DeleteHelperInternal;
|
|
|