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); |
}; |