| Index: remoting/host/desktop_environment.cc
 | 
| diff --git a/remoting/host/desktop_environment.cc b/remoting/host/desktop_environment.cc
 | 
| index fbf4ffc19785745de90647b6a209b2dad774f400..b2a56189ea5ab300b177621421729a54c84fcb66 100644
 | 
| --- a/remoting/host/desktop_environment.cc
 | 
| +++ b/remoting/host/desktop_environment.cc
 | 
| @@ -11,31 +11,57 @@
 | 
|  #include "remoting/host/chromoting_host_context.h"
 | 
|  #include "remoting/host/event_executor.h"
 | 
|  
 | 
| +#if defined(OS_WIN)
 | 
| +#include "remoting/host/session_event_executor_win.h"
 | 
| +#endif
 | 
| +
 | 
|  namespace remoting {
 | 
|  
 | 
|  // static
 | 
| -DesktopEnvironment* DesktopEnvironment::Create(ChromotingHostContext* context) {
 | 
| +scoped_ptr<DesktopEnvironment> DesktopEnvironment::Create(
 | 
| +    ChromotingHostContext* context) {
 | 
|    scoped_ptr<Capturer> capturer(Capturer::Create());
 | 
| -  scoped_ptr<EventExecutor> event_executor(
 | 
| -      EventExecutor::Create(context->desktop_message_loop(), capturer.get()));
 | 
| +  scoped_ptr<protocol::InputStub> event_executor =
 | 
| +      EventExecutor::Create(context->desktop_message_loop(),
 | 
| +                            capturer.get());
 | 
|  
 | 
|    if (capturer.get() == NULL || event_executor.get() == NULL) {
 | 
|      LOG(ERROR) << "Unable to create DesktopEnvironment";
 | 
| -    return NULL;
 | 
| +    return scoped_ptr<DesktopEnvironment>();
 | 
|    }
 | 
|  
 | 
| -  return new DesktopEnvironment(context,
 | 
| -                                capturer.release(),
 | 
| -                                event_executor.release());
 | 
| +#if defined(OS_WIN)
 | 
| +  event_executor.reset(new SessionEventExecutorWin(
 | 
| +      context->desktop_message_loop(),
 | 
| +      context->io_message_loop(),
 | 
| +      event_executor.Pass()));
 | 
| +#endif
 | 
| +
 | 
| +  return scoped_ptr<DesktopEnvironment>(
 | 
| +      new DesktopEnvironment(context,
 | 
| +                             capturer.Pass(),
 | 
| +                             event_executor.Pass()));
 | 
| +}
 | 
| +
 | 
| +// static
 | 
| +scoped_ptr<DesktopEnvironment> DesktopEnvironment::CreateFake(
 | 
| +    ChromotingHostContext* context,
 | 
| +    scoped_ptr<Capturer> capturer,
 | 
| +    scoped_ptr<protocol::InputStub> event_executor) {
 | 
| +  return scoped_ptr<DesktopEnvironment>(
 | 
| +      new DesktopEnvironment(context,
 | 
| +                             capturer.Pass(),
 | 
| +                             event_executor.Pass()));
 | 
|  }
 | 
|  
 | 
| -DesktopEnvironment::DesktopEnvironment(ChromotingHostContext* context,
 | 
| -                                       Capturer* capturer,
 | 
| -                                       EventExecutor* event_executor)
 | 
| +DesktopEnvironment::DesktopEnvironment(
 | 
| +    ChromotingHostContext* context,
 | 
| +    scoped_ptr<Capturer> capturer,
 | 
| +    scoped_ptr<protocol::InputStub> event_executor)
 | 
|      : host_(NULL),
 | 
|        context_(context),
 | 
| -      capturer_(capturer),
 | 
| -      event_executor_(event_executor) {
 | 
| +      capturer_(capturer.Pass()),
 | 
| +      event_executor_(event_executor.Pass()) {
 | 
|  }
 | 
|  
 | 
|  DesktopEnvironment::~DesktopEnvironment() {
 | 
| 
 |