// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef REMOTING_HOST_MOUSE_CURSOR_MONITOR_PROXY_H_ #define REMOTING_HOST_MOUSE_CURSOR_MONITOR_PROXY_H_ #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" #include "base/threading/thread_checker.h" #include "third_party/webrtc/modules/desktop_capture/mouse_cursor_monitor.h" namespace base { class SingleThreadTaskRunner; } // namespace base namespace remoting { class MouseCursorMonitorProxy : public webrtc::MouseCursorMonitor { public: MouseCursorMonitorProxy( scoped_refptr capture_task_runner, scoped_ptr mouse_cursor_monitor); ~MouseCursorMonitorProxy() override; // webrtc::MouseCursorMonitor interface. void Init(Callback* callback, Mode mode) override; void Capture() override; private: class Core; void OnMouseCursor(scoped_ptr cursor); void OnMouseCursorPosition(CursorState state, const webrtc::DesktopVector& position); base::ThreadChecker thread_checker_; scoped_ptr core_; scoped_refptr capture_task_runner_; Callback* callback_ = nullptr; base::WeakPtrFactory weak_factory_; DISALLOW_COPY_AND_ASSIGN(MouseCursorMonitorProxy); }; } // namespace remoting #endif // REMOTING_HOST_MOUSE_CURSOR_MONITOR_PROXY_H_