| Index: base/message_loop/message_loop.h
 | 
| diff --git a/base/message_loop/message_loop.h b/base/message_loop/message_loop.h
 | 
| index ee93c62de06a5abcde9b3190ec6d468c3bcc9524..fa25e78f6d38d0b282e7b8b36f2da29369bb7bd4 100644
 | 
| --- a/base/message_loop/message_loop.h
 | 
| +++ b/base/message_loop/message_loop.h
 | 
| @@ -21,6 +21,7 @@
 | 
|  #include "base/message_loop/timer_slack.h"
 | 
|  #include "base/observer_list.h"
 | 
|  #include "base/pending_task.h"
 | 
| +#include "base/run_loop.h"
 | 
|  #include "base/synchronization/lock.h"
 | 
|  #include "base/time/time.h"
 | 
|  #include "build/build_config.h"
 | 
| @@ -46,7 +47,6 @@ class JavaMessageHandlerFactory;
 | 
|  
 | 
|  namespace base {
 | 
|  
 | 
| -class RunLoop;
 | 
|  class ThreadTaskRunnerHandle;
 | 
|  class WaitableEvent;
 | 
|  
 | 
| @@ -81,7 +81,8 @@ class WaitableEvent;
 | 
|  // Please be SURE your task is reentrant (nestable) and all global variables
 | 
|  // are stable and accessible before calling SetNestableTasksAllowed(true).
 | 
|  //
 | 
| -class BASE_EXPORT MessageLoop : public MessagePump::Delegate {
 | 
| +class BASE_EXPORT MessageLoop : public MessagePump::Delegate,
 | 
| +                                public RunLoop::Delegate {
 | 
|   public:
 | 
|    // A MessageLoop has a particular type, which indicates the set of
 | 
|    // asynchronous events it may process in addition to tasks and timers.
 | 
| @@ -325,7 +326,6 @@ class BASE_EXPORT MessageLoop : public MessagePump::Delegate {
 | 
|  
 | 
|   private:
 | 
|    friend class internal::IncomingTaskQueue;
 | 
| -  friend class RunLoop;
 | 
|    friend class ScheduleWorkTest;
 | 
|    friend class Thread;
 | 
|    friend struct PendingTask;
 | 
| @@ -351,8 +351,9 @@ class BASE_EXPORT MessageLoop : public MessagePump::Delegate {
 | 
|    // task runner for this message loop.
 | 
|    void SetThreadTaskRunnerHandle();
 | 
|  
 | 
| -  // Invokes the actual run loop using the message pump.
 | 
| -  void RunHandler();
 | 
| +  // RunLoop::Delegate:
 | 
| +  void Run() override;
 | 
| +  void Quit() override;
 | 
|  
 | 
|    // Called to process any delayed non-nestable tasks.
 | 
|    bool ProcessNextDelayedNonNestableTask();
 | 
| @@ -419,8 +420,6 @@ class BASE_EXPORT MessageLoop : public MessagePump::Delegate {
 | 
|    // if type_ is TYPE_CUSTOM and pump_ is null.
 | 
|    MessagePumpFactoryCallback pump_factory_;
 | 
|  
 | 
| -  RunLoop* run_loop_;
 | 
| -
 | 
|    ObserverList<TaskObserver> task_observers_;
 | 
|  
 | 
|    debug::TaskAnnotator task_annotator_;
 | 
| @@ -445,12 +444,12 @@ class BASE_EXPORT MessageLoop : public MessagePump::Delegate {
 | 
|    // MessageLoop is bound to its thread and constant forever after.
 | 
|    PlatformThreadId thread_id_;
 | 
|  
 | 
| -  // Whether this MessageLoop is currently running in nested RunLoops.
 | 
| -  bool is_nested_ = false;
 | 
| -
 | 
|    // Whether task observers are allowed.
 | 
|    bool allow_task_observers_ = true;
 | 
|  
 | 
| +  // An interface back to RunLoop state accessible by this RunLoop::Delegate.
 | 
| +  RunLoop::Delegate::Client* run_loop_client_ = nullptr;
 | 
| +
 | 
|    DISALLOW_COPY_AND_ASSIGN(MessageLoop);
 | 
|  };
 | 
|  
 | 
| 
 |