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

Unified Diff: remoting/host/local_input_monitor_mac.mm

Issue 12594009: Converted LocalInputMonitor into a SessionController instance. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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
Index: remoting/host/local_input_monitor_mac.mm
diff --git a/remoting/host/local_input_monitor_mac.mm b/remoting/host/local_input_monitor_mac.mm
index 1231e4584518ff40999b6de3761bb054147721bf..b2ce6ef9116b67c06380f3a2bb017f142f688a49 100644
--- a/remoting/host/local_input_monitor_mac.mm
+++ b/remoting/host/local_input_monitor_mac.mm
@@ -15,7 +15,7 @@
#include "base/memory/ref_counted.h"
#include "base/single_thread_task_runner.h"
#include "base/synchronization/lock.h"
-#include "remoting/host/mouse_move_observer.h"
+#include "base/threading/non_thread_safe.h"
#include "third_party/skia/include/core/SkPoint.h"
#import "third_party/GTM/AppKit/GTMCarbonEvent.h"
@@ -26,7 +26,8 @@ static const NSUInteger kEscKeyCode = 53;
namespace remoting {
namespace {
-class LocalInputMonitorMac : public LocalInputMonitor {
+class LocalInputMonitorMac : public base::NonThreadSafe,
+ public LocalInputMonitor {
public:
// Invoked by LocalInputMonitorManager.
class EventHandler {
@@ -39,13 +40,10 @@ class LocalInputMonitorMac : public LocalInputMonitor {
LocalInputMonitorMac(
scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
- scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner);
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
+ SessionController::Delegate* delegate);
virtual ~LocalInputMonitorMac();
- virtual void Start(MouseMoveObserver* mouse_move_observer,
- const base::Closure& disconnect_callback) OVERRIDE;
- virtual void Stop() OVERRIDE;
-
private:
// The actual implementation resides in LocalInputMonitorMac::Core class.
class Core;
@@ -161,10 +159,10 @@ class LocalInputMonitorMac::Core
public EventHandler {
public:
Core(scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
- scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner);
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
+ SessionController::Delegate* delegate);
- void Start(MouseMoveObserver* mouse_move_observer,
- const base::Closure& disconnect_callback);
+ void Start();
void Stop();
private:
@@ -186,54 +184,39 @@ class LocalInputMonitorMac::Core
LocalInputMonitorManager* manager_;
- // Invoked in the |caller_task_runner_| thread to report local mouse events.
- MouseMoveObserver* mouse_move_observer_;
-
- // Posted to the |caller_task_runner_| thread every time the disconnect key
- // combination is pressed.
- base::Closure disconnect_callback_;
+ // Invoked in the |caller_task_runner_| thread to report local mouse events
+ // and session disconnect requests.
+ SessionController::Delegate* delegate_;
DISALLOW_COPY_AND_ASSIGN(Core);
};
LocalInputMonitorMac::LocalInputMonitorMac(
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,
+ SessionController::Delegate* delegate)
+ : core_(new Core(caller_task_runner, ui_task_runner, delegate)) {
+ core_->Start();
}
LocalInputMonitorMac::~LocalInputMonitorMac() {
-}
-
-void LocalInputMonitorMac::Start(MouseMoveObserver* mouse_move_observer,
- const base::Closure& disconnect_callback) {
- core_->Start(mouse_move_observer, disconnect_callback);
-}
-
-void LocalInputMonitorMac::Stop() {
core_->Stop();
}
LocalInputMonitorMac::Core::Core(
scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
- scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner)
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
+ SessionController::Delegate* delegate)
: caller_task_runner_(caller_task_runner),
ui_task_runner_(ui_task_runner),
manager_(nil),
- mouse_move_observer_(NULL) {
+ delegate_(delegate) {
+ DCHECK(delegate_);
}
-void LocalInputMonitorMac::Core::Start(
- MouseMoveObserver* mouse_move_observer,
- const base::Closure& disconnect_callback) {
+void LocalInputMonitorMac::Core::Start() {
DCHECK(caller_task_runner_->BelongsToCurrentThread());
- DCHECK(disconnect_callback_.is_null());
- DCHECK(!disconnect_callback.is_null());
- DCHECK(!mouse_move_observer_);
- DCHECK(mouse_move_observer);
- disconnect_callback_ = disconnect_callback;
- mouse_move_observer_ = mouse_move_observer;
ui_task_runner_->PostTask(FROM_HERE,
base::Bind(&Core::StartOnUiThread, this));
}
@@ -241,15 +224,13 @@ void LocalInputMonitorMac::Core::Start(
void LocalInputMonitorMac::Core::Stop() {
DCHECK(caller_task_runner_->BelongsToCurrentThread());
- mouse_move_observer_ = NULL;
- disconnect_callback_.Reset();
+ delegate_ = NULL;
ui_task_runner_->PostTask(FROM_HERE, base::Bind(&Core::StopOnUiThread, this));
}
LocalInputMonitorMac::Core::~Core() {
DCHECK(manager_ == nil);
- DCHECK(disconnect_callback_.is_null());
- DCHECK(!mouse_move_observer_);
+ DCHECK(!delegate_);
}
void LocalInputMonitorMac::Core::StartOnUiThread() {
@@ -273,8 +254,8 @@ void LocalInputMonitorMac::Core::OnLocalMouseMoved(const SkIPoint& position) {
return;
}
- if (mouse_move_observer_)
- mouse_move_observer_->OnLocalMouseMoved(position);
+ if (delegate_)
+ delegate_->OnLocalMouseMoved(position);
}
void LocalInputMonitorMac::Core::OnDisconnectShortcut() {
@@ -284,8 +265,8 @@ void LocalInputMonitorMac::Core::OnDisconnectShortcut() {
return;
}
- if (!disconnect_callback_.is_null())
- disconnect_callback_.Run();
+ if (delegate_)
+ delegate_->DisconnectSession();
}
} // namespace
@@ -293,9 +274,10 @@ void LocalInputMonitorMac::Core::OnDisconnectShortcut() {
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,
+ SessionController::Delegate* delegate) {
return scoped_ptr<LocalInputMonitor>(
- new LocalInputMonitorMac(caller_task_runner, ui_task_runner));
+ new LocalInputMonitorMac(caller_task_runner, ui_task_runner, delegate));
}
} // namespace remoting

Powered by Google App Engine
This is Rietveld 408576698