| Index: remoting/host/chromoting_host_context.h
|
| diff --git a/remoting/host/chromoting_host_context.h b/remoting/host/chromoting_host_context.h
|
| index 7476986ad605ec9efba49d996a015103cf4e5086..b693f1efc2ad31dbed81b58a46694ddeab4110c6 100644
|
| --- a/remoting/host/chromoting_host_context.h
|
| +++ b/remoting/host/chromoting_host_context.h
|
| @@ -8,10 +8,15 @@
|
| #include <string>
|
|
|
| #include "base/gtest_prod_util.h"
|
| +#include "base/memory/ref_counted.h"
|
| #include "base/threading/platform_thread.h"
|
| #include "base/threading/thread.h"
|
| #include "remoting/jingle_glue/jingle_thread.h"
|
|
|
| +namespace base {
|
| +class SingleThreadTaskRunner;
|
| +} // namespace base
|
| +
|
| namespace net {
|
| class URLRequestContextGetter;
|
| } // namespace net
|
| @@ -23,7 +28,8 @@ namespace remoting {
|
| class ChromotingHostContext {
|
| public:
|
| // Create a context.
|
| - ChromotingHostContext(base::MessageLoopProxy* ui_message_loop);
|
| + ChromotingHostContext(
|
| + scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner);
|
| virtual ~ChromotingHostContext();
|
|
|
| // TODO(ajwong): Move the Start method out of this class. Then
|
| @@ -35,13 +41,45 @@ class ChromotingHostContext {
|
|
|
| virtual JingleThread* jingle_thread();
|
|
|
| - virtual MessageLoop* main_message_loop();
|
| - virtual MessageLoop* encode_message_loop();
|
| - virtual base::MessageLoopProxy* network_message_loop();
|
| - virtual MessageLoop* desktop_message_loop();
|
| - virtual base::MessageLoopProxy* ui_message_loop();
|
| - virtual base::MessageLoopProxy* io_message_loop();
|
| - virtual base::MessageLoopProxy* file_message_loop();
|
| + // Task runner for the thread that is used for the UI. In the NPAPI
|
| + // plugin this corresponds to the main plugin thread.
|
| + virtual base::SingleThreadTaskRunner* ui_task_runner();
|
| +
|
| + // Task runner for the thread used by the ScreenRecorder to capture
|
| + // the screen.
|
| + virtual base::SingleThreadTaskRunner* capture_task_runner();
|
| +
|
| + // Task runner for the thread used to encode video streams.
|
| + virtual base::SingleThreadTaskRunner* encode_task_runner();
|
| +
|
| + // Task runner for the thread used for network IO. This thread runs
|
| + // a libjingle message loop, and is the only thread on which
|
| + // libjingle code may be run.
|
| + virtual base::SingleThreadTaskRunner* network_task_runner();
|
| +
|
| + // Task runner for the thread that is used by the EventExecutor.
|
| + //
|
| + // TODO(sergeyu): Do we need a separate thread for EventExecutor?
|
| + // Can we use some other thread instead?
|
| + virtual base::SingleThreadTaskRunner* desktop_task_runner();
|
| +
|
| + // Task runner for the thread that is used for chromium's network
|
| + // IO, particularly all HTTP requests (for OAuth and Relay servers).
|
| + // Chromium's HTTP stack cannot be used on the network_task_runner()
|
| + // because that thread runs libjingle's message loop, while
|
| + // chromium's sockets must be used on a thread with a
|
| + // MessageLoopForIO.
|
| + //
|
| + // TODO(sergeyu): Implement socket server for libjingle that works
|
| + // on a regular chromium thread and use it for network_task_runner()
|
| + // to avoid the need for io_task_runner().
|
| + virtual base::SingleThreadTaskRunner* io_task_runner();
|
| +
|
| + // Task runner for the thread that is used for blocking file
|
| + // IO. This thread is used by the URLRequestContext to read proxy
|
| + // configuration and by NatConfig to read policy configs.
|
| + virtual base::SingleThreadTaskRunner* file_task_runner();
|
| +
|
| const scoped_refptr<net::URLRequestContextGetter>&
|
| url_request_context_getter();
|
|
|
| @@ -51,15 +89,13 @@ class ChromotingHostContext {
|
| // A thread that hosts all network operations.
|
| JingleThread jingle_thread_;
|
|
|
| - // TODO(sergeyu): The "main" thread is used just by the
|
| - // capturer. Consider renaming it.
|
| - base::Thread main_thread_;
|
| + // A thread that hosts screen capture.
|
| + base::Thread capture_thread_;
|
|
|
| // A thread that hosts all encode operations.
|
| base::Thread encode_thread_;
|
|
|
| - // A thread that hosts desktop integration (capture, input injection, etc)
|
| - // This is NOT a Chrome-style UI thread.
|
| + // A thread that hosts input injection.
|
| base::Thread desktop_thread_;
|
|
|
| // Thread for non-blocking IO operations.
|
| @@ -68,7 +104,7 @@ class ChromotingHostContext {
|
| // Thread for blocking IO operations.
|
| base::Thread file_thread_;
|
|
|
| - scoped_refptr<base::MessageLoopProxy> ui_message_loop_;
|
| + scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
|
|
|
| scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_;
|
|
|
|
|