Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(586)

Side by Side Diff: remoting/host/local_input_monitor_win.cc

Issue 16780006: Moved remoting::win::MessageWindow to base::win::MessageWindow so that it could be re-used outside … (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: - Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « remoting/host/clipboard_win.cc ('k') | remoting/host/win/host_service.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "remoting/host/local_input_monitor.h" 5 #include "remoting/host/local_input_monitor.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/location.h" 9 #include "base/location.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/single_thread_task_runner.h" 11 #include "base/single_thread_task_runner.h"
12 #include "base/strings/stringprintf.h" 12 #include "base/strings/stringprintf.h"
13 #include "base/threading/non_thread_safe.h" 13 #include "base/threading/non_thread_safe.h"
14 #include "base/win/message_window.h"
14 #include "remoting/host/client_session_control.h" 15 #include "remoting/host/client_session_control.h"
15 #include "remoting/host/win/message_window.h"
16 #include "third_party/skia/include/core/SkPoint.h" 16 #include "third_party/skia/include/core/SkPoint.h"
17 17
18 namespace remoting { 18 namespace remoting {
19 19
20 namespace { 20 namespace {
21 21
22 const wchar_t kWindowClassFormat[] = L"Chromoting_LocalInputMonitorWin_%p"; 22 const wchar_t kWindowClassFormat[] = L"Chromoting_LocalInputMonitorWin_%p";
23 23
24 // From the HID Usage Tables specification. 24 // From the HID Usage Tables specification.
25 const USHORT kGenericDesktopPage = 1; 25 const USHORT kGenericDesktopPage = 1;
26 const USHORT kMouseUsage = 2; 26 const USHORT kMouseUsage = 2;
27 27
28 class LocalInputMonitorWin : public base::NonThreadSafe, 28 class LocalInputMonitorWin : public base::NonThreadSafe,
29 public LocalInputMonitor { 29 public LocalInputMonitor {
30 public: 30 public:
31 LocalInputMonitorWin( 31 LocalInputMonitorWin(
32 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner, 32 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
33 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner, 33 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
34 base::WeakPtr<ClientSessionControl> client_session_control); 34 base::WeakPtr<ClientSessionControl> client_session_control);
35 ~LocalInputMonitorWin(); 35 ~LocalInputMonitorWin();
36 36
37 private: 37 private:
38 // The actual implementation resides in LocalInputMonitorWin::Core class. 38 // The actual implementation resides in LocalInputMonitorWin::Core class.
39 class Core : public base::RefCountedThreadSafe<Core>, 39 class Core : public base::RefCountedThreadSafe<Core>,
40 public win::MessageWindow::Delegate { 40 public base::win::MessageWindow::Delegate {
41 public: 41 public:
42 Core(scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner, 42 Core(scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
43 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner, 43 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
44 base::WeakPtr<ClientSessionControl> client_session_control); 44 base::WeakPtr<ClientSessionControl> client_session_control);
45 45
46 void Start(); 46 void Start();
47 void Stop(); 47 void Stop();
48 48
49 private: 49 private:
50 friend class base::RefCountedThreadSafe<Core>; 50 friend class base::RefCountedThreadSafe<Core>;
51 virtual ~Core(); 51 virtual ~Core();
52 52
53 void StartOnUiThread(); 53 void StartOnUiThread();
54 void StopOnUiThread(); 54 void StopOnUiThread();
55 55
56 // Handles WM_INPUT messages. 56 // Handles WM_INPUT messages.
57 LRESULT OnInput(HRAWINPUT input_handle); 57 LRESULT OnInput(HRAWINPUT input_handle);
58 58
59 // win::MessageWindow::Delegate interface. 59 // base::win::MessageWindow::Delegate interface.
60 virtual bool HandleMessage(HWND hwnd, 60 virtual bool HandleMessage(HWND hwnd,
61 UINT message, 61 UINT message,
62 WPARAM wparam, 62 WPARAM wparam,
63 LPARAM lparam, 63 LPARAM lparam,
64 LRESULT* result) OVERRIDE; 64 LRESULT* result) OVERRIDE;
65 65
66 // Task runner on which public methods of this class must be called. 66 // Task runner on which public methods of this class must be called.
67 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner_; 67 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner_;
68 68
69 // Task runner on which |window_| is created. 69 // Task runner on which |window_| is created.
70 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_; 70 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
71 71
72 // Used to receive raw input. 72 // Used to receive raw input.
73 scoped_ptr<win::MessageWindow> window_; 73 scoped_ptr<base::win::MessageWindow> window_;
74 74
75 // Points to the object receiving mouse event notifications. 75 // Points to the object receiving mouse event notifications.
76 base::WeakPtr<ClientSessionControl> client_session_control_; 76 base::WeakPtr<ClientSessionControl> client_session_control_;
77 77
78 DISALLOW_COPY_AND_ASSIGN(Core); 78 DISALLOW_COPY_AND_ASSIGN(Core);
79 }; 79 };
80 80
81 scoped_refptr<Core> core_; 81 scoped_refptr<Core> core_;
82 82
83 DISALLOW_COPY_AND_ASSIGN(LocalInputMonitorWin); 83 DISALLOW_COPY_AND_ASSIGN(LocalInputMonitorWin);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 ui_task_runner_->PostTask(FROM_HERE, base::Bind(&Core::StopOnUiThread, this)); 120 ui_task_runner_->PostTask(FROM_HERE, base::Bind(&Core::StopOnUiThread, this));
121 } 121 }
122 122
123 LocalInputMonitorWin::Core::~Core() { 123 LocalInputMonitorWin::Core::~Core() {
124 DCHECK(!window_); 124 DCHECK(!window_);
125 } 125 }
126 126
127 void LocalInputMonitorWin::Core::StartOnUiThread() { 127 void LocalInputMonitorWin::Core::StartOnUiThread() {
128 DCHECK(ui_task_runner_->BelongsToCurrentThread()); 128 DCHECK(ui_task_runner_->BelongsToCurrentThread());
129 129
130 window_.reset(new win::MessageWindow()); 130 window_.reset(new base::win::MessageWindow());
131 if (!window_->Create(this)) { 131 if (!window_->Create(this, NULL)) {
132 LOG_GETLASTERROR(ERROR) << "Failed to create the raw input window"; 132 LOG_GETLASTERROR(ERROR) << "Failed to create the raw input window";
133 window_.reset(); 133 window_.reset();
134 134
135 // If the local input cannot be monitored, the remote user can take over 135 // If the local input cannot be monitored, the remote user can take over
136 // the session. Disconnect the session now to prevent this. 136 // the session. Disconnect the session now to prevent this.
137 caller_task_runner_->PostTask( 137 caller_task_runner_->PostTask(
138 FROM_HERE, base::Bind(&ClientSessionControl::DisconnectSession, 138 FROM_HERE, base::Bind(&ClientSessionControl::DisconnectSession,
139 client_session_control_)); 139 client_session_control_));
140 } 140 }
141 } 141 }
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 scoped_refptr<base::SingleThreadTaskRunner> input_task_runner, 240 scoped_refptr<base::SingleThreadTaskRunner> input_task_runner,
241 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner, 241 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
242 base::WeakPtr<ClientSessionControl> client_session_control) { 242 base::WeakPtr<ClientSessionControl> client_session_control) {
243 return scoped_ptr<LocalInputMonitor>( 243 return scoped_ptr<LocalInputMonitor>(
244 new LocalInputMonitorWin(caller_task_runner, 244 new LocalInputMonitorWin(caller_task_runner,
245 ui_task_runner, 245 ui_task_runner,
246 client_session_control)); 246 client_session_control));
247 } 247 }
248 248
249 } // namespace remoting 249 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/clipboard_win.cc ('k') | remoting/host/win/host_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698