| Index: ui/wm/public/dispatcher_client.h
|
| diff --git a/ui/wm/public/dispatcher_client.h b/ui/wm/public/dispatcher_client.h
|
| index 9fd9c94326d8152841904020e682bde44200c3b2..a301e92dd557d43d7f83f9520f1f60dae32395c0 100644
|
| --- a/ui/wm/public/dispatcher_client.h
|
| +++ b/ui/wm/public/dispatcher_client.h
|
| @@ -5,6 +5,8 @@
|
| #ifndef UI_WM_PUBLIC_DISPATCHER_CLIENT_H_
|
| #define UI_WM_PUBLIC_DISPATCHER_CLIENT_H_
|
|
|
| +#include "base/callback.h"
|
| +#include "base/macros.h"
|
| #include "base/message_loop/message_pump_dispatcher.h"
|
| #include "ui/aura/aura_export.h"
|
|
|
| @@ -12,12 +14,39 @@ namespace aura {
|
| class Window;
|
| namespace client {
|
|
|
| +class DispatcherClient;
|
| +
|
| +// A base::RunLoop like object for running a nested message-loop with a
|
| +// specified DispatcherClient and a MessagePumpDispatcher.
|
| +class AURA_EXPORT DispatcherRunLoop {
|
| + public:
|
| + DispatcherRunLoop(DispatcherClient* client,
|
| + base::MessagePumpDispatcher* dispatcher);
|
| + ~DispatcherRunLoop();
|
| +
|
| + void Run();
|
| + base::Closure QuitClosure();
|
| + void Quit();
|
| +
|
| + private:
|
| + base::Closure run_closure_;
|
| + base::Closure quit_closure_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(DispatcherRunLoop);
|
| +};
|
| +
|
| // An interface implemented by an object which handles nested dispatchers.
|
| class AURA_EXPORT DispatcherClient {
|
| public:
|
| - virtual void RunWithDispatcher(base::MessagePumpDispatcher* dispatcher) = 0;
|
| + virtual ~DispatcherClient() {}
|
| +
|
| + protected:
|
| + friend class DispatcherRunLoop;
|
|
|
| - virtual void QuitNestedMessageLoop() = 0;
|
| + virtual void PrepareNestedLoopClosures(
|
| + base::MessagePumpDispatcher* dispatcher,
|
| + base::Closure* run_closure,
|
| + base::Closure* quit_closure) = 0;
|
| };
|
|
|
| AURA_EXPORT void SetDispatcherClient(Window* root_window,
|
|
|