diff options
Diffstat (limited to 'remoting/host/chromoting_host_context.h')
-rw-r--r-- | remoting/host/chromoting_host_context.h | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/remoting/host/chromoting_host_context.h b/remoting/host/chromoting_host_context.h index d2ab3e6..38f1cae 100644 --- a/remoting/host/chromoting_host_context.h +++ b/remoting/host/chromoting_host_context.h @@ -25,8 +25,12 @@ namespace remoting { // 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 @@ class ChromotingHostContext { 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,7 +73,10 @@ class ChromotingHostContext { // 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); }; |