| Index: remoting/host/chromoting_host_context.h
|
| ===================================================================
|
| --- remoting/host/chromoting_host_context.h (revision 97052)
|
| +++ remoting/host/chromoting_host_context.h (working copy)
|
| @@ -25,8 +25,12 @@
|
| // process. This class is virtual only for testing purposes (see below).
|
| class ChromotingHostContext {
|
| public:
|
| + typedef base::Callback<void(
|
| + const tracked_objects::Location& from_here,
|
| + const base::Closure& task)> UIThreadPostTaskFunction;
|
| +
|
| // Create a context.
|
| - ChromotingHostContext(base::MessageLoopProxy* ui_message_loop);
|
| + ChromotingHostContext();
|
| virtual ~ChromotingHostContext();
|
|
|
| // TODO(ajwong): Move the Start/Stop methods out of this class. Then
|
| @@ -38,12 +42,21 @@
|
|
|
| virtual JingleThread* jingle_thread();
|
|
|
| - virtual base::MessageLoopProxy* ui_message_loop();
|
| virtual MessageLoop* main_message_loop();
|
| virtual MessageLoop* encode_message_loop();
|
| virtual base::MessageLoopProxy* network_message_loop();
|
| virtual MessageLoop* desktop_message_loop();
|
|
|
| + // Must be called from the main GUI thread.
|
| + void SetUITaskPostFunction(const UIThreadPostTaskFunction& poster);
|
| +
|
| + void PostTaskToUIThread(const tracked_objects::Location& from_here,
|
| + const base::Closure& task);
|
| + void PostDelayedTaskToUIThread(const tracked_objects::Location& from_here,
|
| + const base::Closure& task,
|
| + int delay_ms);
|
| + bool IsUIThread() const;
|
| +
|
| private:
|
| FRIEND_TEST_ALL_PREFIXES(ChromotingHostContextTest, StartAndStop);
|
|
|
| @@ -60,8 +73,11 @@
|
| // This is NOT a Chrome-style UI thread.
|
| base::Thread desktop_thread_;
|
|
|
| - scoped_refptr<base::MessageLoopProxy> ui_message_loop_;
|
| + UIThreadPostTaskFunction ui_poster_;
|
| + // This IS the main Chrome GUI thread that |ui_poster_| will post to.
|
| + base::PlatformThreadId ui_main_thread_id_;
|
|
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(ChromotingHostContext);
|
| };
|
|
|
|
|