| 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
|
|
|