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

Unified Diff: remoting/host/local_input_monitor_win.cc

Issue 12594009: Converted LocalInputMonitor into a SessionController instance. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 7 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/host/local_input_monitor_unittest.cc ('k') | remoting/host/mouse_move_observer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/host/local_input_monitor_win.cc
diff --git a/remoting/host/local_input_monitor_win.cc b/remoting/host/local_input_monitor_win.cc
index 85a20306a444b1cb6031fa4146d22b0d75937dce..28deebc030ed561d2daebdb963c2a9e2782ec399 100644
--- a/remoting/host/local_input_monitor_win.cc
+++ b/remoting/host/local_input_monitor_win.cc
@@ -12,7 +12,7 @@
#include "base/stringprintf.h"
#include "base/threading/non_thread_safe.h"
#include "base/win/wrapped_window_proc.h"
-#include "remoting/host/mouse_move_observer.h"
+#include "remoting/host/client_session_control.h"
#include "third_party/skia/include/core/SkPoint.h"
namespace remoting {
@@ -30,21 +30,19 @@ class LocalInputMonitorWin : public base::NonThreadSafe,
public:
LocalInputMonitorWin(
scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
- scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner);
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
+ base::WeakPtr<ClientSessionControl> client_session_control);
~LocalInputMonitorWin();
- virtual void Start(MouseMoveObserver* mouse_move_observer,
- const base::Closure& disconnect_callback) OVERRIDE;
- virtual void Stop() OVERRIDE;
-
private:
// The actual implementation resides in LocalInputMonitorWin::Core class.
class Core : public base::RefCountedThreadSafe<Core> {
public:
Core(scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
- scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner);
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
+ base::WeakPtr<ClientSessionControl> client_session_control);
- void Start(MouseMoveObserver* mouse_move_observer);
+ void Start();
void Stop();
private:
@@ -54,10 +52,6 @@ class LocalInputMonitorWin : public base::NonThreadSafe,
void StartOnUiThread();
void StopOnUiThread();
- // Posts OnLocalMouseMoved() notification to |mouse_move_observer_| on
- // the |caller_task_runner_| thread.
- void OnLocalMouseMoved(const SkIPoint& position);
-
// Handles WM_CREATE messages.
LRESULT OnCreate(HWND hwnd);
@@ -83,8 +77,8 @@ class LocalInputMonitorWin : public base::NonThreadSafe,
// Handle of the input window.
HWND window_;
- // Observer to dispatch mouse event notifications to.
- MouseMoveObserver* mouse_move_observer_;
+ // Points to the object receiving mouse event notifications.
+ base::WeakPtr<ClientSessionControl> client_session_control_;
DISALLOW_COPY_AND_ASSIGN(Core);
};
@@ -96,39 +90,34 @@ class LocalInputMonitorWin : public base::NonThreadSafe,
LocalInputMonitorWin::LocalInputMonitorWin(
scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
- scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner)
- : core_(new Core(caller_task_runner, ui_task_runner)) {
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
+ base::WeakPtr<ClientSessionControl> client_session_control)
+ : core_(new Core(caller_task_runner,
+ ui_task_runner,
+ client_session_control)) {
+ core_->Start();
}
LocalInputMonitorWin::~LocalInputMonitorWin() {
-}
-
-void LocalInputMonitorWin::Start(MouseMoveObserver* mouse_move_observer,
- const base::Closure& disconnect_callback) {
- core_->Start(mouse_move_observer);
-}
-
-void LocalInputMonitorWin::Stop() {
core_->Stop();
}
LocalInputMonitorWin::Core::Core(
scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
- scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner)
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
+ base::WeakPtr<ClientSessionControl> client_session_control)
: caller_task_runner_(caller_task_runner),
ui_task_runner_(ui_task_runner),
atom_(0),
instance_(NULL),
window_(NULL),
- mouse_move_observer_(NULL) {
+ client_session_control_(client_session_control) {
+ DCHECK(client_session_control_);
}
-void LocalInputMonitorWin::Core::Start(MouseMoveObserver* mouse_move_observer) {
+void LocalInputMonitorWin::Core::Start() {
DCHECK(caller_task_runner_->BelongsToCurrentThread());
- DCHECK(!mouse_move_observer_);
- DCHECK(mouse_move_observer);
- mouse_move_observer_ = mouse_move_observer;
ui_task_runner_->PostTask(FROM_HERE,
base::Bind(&Core::StartOnUiThread, this));
}
@@ -136,7 +125,6 @@ void LocalInputMonitorWin::Core::Start(MouseMoveObserver* mouse_move_observer) {
void LocalInputMonitorWin::Core::Stop() {
DCHECK(caller_task_runner_->BelongsToCurrentThread());
- mouse_move_observer_ = NULL;
ui_task_runner_->PostTask(FROM_HERE, base::Bind(&Core::StopOnUiThread, this));
}
@@ -144,7 +132,6 @@ LocalInputMonitorWin::Core::~Core() {
DCHECK(!atom_);
DCHECK(!instance_);
DCHECK(!window_);
- DCHECK(!mouse_move_observer_);
}
void LocalInputMonitorWin::Core::StartOnUiThread() {
@@ -189,17 +176,6 @@ void LocalInputMonitorWin::Core::StopOnUiThread() {
}
}
-void LocalInputMonitorWin::Core::OnLocalMouseMoved(const SkIPoint& position) {
- if (!caller_task_runner_->BelongsToCurrentThread()) {
- caller_task_runner_->PostTask(
- FROM_HERE, base::Bind(&Core::OnLocalMouseMoved, this, position));
- return;
- }
-
- if (mouse_move_observer_)
- mouse_move_observer_->OnLocalMouseMoved(position);
-}
-
LRESULT LocalInputMonitorWin::Core::OnCreate(HWND hwnd) {
DCHECK(ui_task_runner_->BelongsToCurrentThread());
@@ -255,7 +231,10 @@ LRESULT LocalInputMonitorWin::Core::OnInput(HRAWINPUT input_handle) {
position.y = 0;
}
- OnLocalMouseMoved(SkIPoint::Make(position.x, position.y));
+ caller_task_runner_->PostTask(
+ FROM_HERE, base::Bind(&ClientSessionControl::OnLocalMouseMoved,
+ client_session_control_,
+ SkIPoint::Make(position.x, position.y)));
}
return DefRawInputProc(&input, 1, sizeof(RAWINPUTHEADER));
@@ -291,9 +270,12 @@ LRESULT CALLBACK LocalInputMonitorWin::Core::WindowProc(
scoped_ptr<LocalInputMonitor> LocalInputMonitor::Create(
scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> input_task_runner,
- scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) {
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
+ base::WeakPtr<ClientSessionControl> client_session_control) {
return scoped_ptr<LocalInputMonitor>(
- new LocalInputMonitorWin(caller_task_runner, ui_task_runner));
+ new LocalInputMonitorWin(caller_task_runner,
+ ui_task_runner,
+ client_session_control));
}
} // namespace remoting
« no previous file with comments | « remoting/host/local_input_monitor_unittest.cc ('k') | remoting/host/mouse_move_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698