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

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

Issue 1864213002: Convert //remoting to use std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Mac IWYU Created 4 years, 8 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/mouse_cursor_monitor_proxy.h" 5 #include "remoting/host/mouse_cursor_monitor_proxy.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/single_thread_task_runner.h" 10 #include "base/single_thread_task_runner.h"
11 #include "base/thread_task_runner_handle.h" 11 #include "base/thread_task_runner_handle.h"
12 #include "third_party/webrtc/modules/desktop_capture/desktop_frame.h" 12 #include "third_party/webrtc/modules/desktop_capture/desktop_frame.h"
13 #include "third_party/webrtc/modules/desktop_capture/mouse_cursor.h" 13 #include "third_party/webrtc/modules/desktop_capture/mouse_cursor.h"
14 #include "third_party/webrtc/modules/desktop_capture/mouse_cursor_monitor.h" 14 #include "third_party/webrtc/modules/desktop_capture/mouse_cursor_monitor.h"
15 15
16 namespace remoting { 16 namespace remoting {
17 17
18 class MouseCursorMonitorProxy::Core 18 class MouseCursorMonitorProxy::Core
19 : public webrtc::MouseCursorMonitor::Callback { 19 : public webrtc::MouseCursorMonitor::Callback {
20 public: 20 public:
21 Core(base::WeakPtr<MouseCursorMonitorProxy> proxy, 21 Core(base::WeakPtr<MouseCursorMonitorProxy> proxy,
22 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner, 22 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
23 scoped_ptr<webrtc::MouseCursorMonitor> mouse_cursor_monitor); 23 std::unique_ptr<webrtc::MouseCursorMonitor> mouse_cursor_monitor);
24 ~Core() override; 24 ~Core() override;
25 25
26 void Init(webrtc::MouseCursorMonitor::Mode mode); 26 void Init(webrtc::MouseCursorMonitor::Mode mode);
27 void Capture(); 27 void Capture();
28 28
29 private: 29 private:
30 // webrtc::MouseCursorMonitor::Callback implementation. 30 // webrtc::MouseCursorMonitor::Callback implementation.
31 void OnMouseCursor(webrtc::MouseCursor* mouse_cursor) override; 31 void OnMouseCursor(webrtc::MouseCursor* mouse_cursor) override;
32 void OnMouseCursorPosition(webrtc::MouseCursorMonitor::CursorState state, 32 void OnMouseCursorPosition(webrtc::MouseCursorMonitor::CursorState state,
33 const webrtc::DesktopVector& position) override; 33 const webrtc::DesktopVector& position) override;
34 34
35 base::ThreadChecker thread_checker_; 35 base::ThreadChecker thread_checker_;
36 36
37 base::WeakPtr<MouseCursorMonitorProxy> proxy_; 37 base::WeakPtr<MouseCursorMonitorProxy> proxy_;
38 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner_; 38 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner_;
39 scoped_ptr<webrtc::MouseCursorMonitor> mouse_cursor_monitor_; 39 std::unique_ptr<webrtc::MouseCursorMonitor> mouse_cursor_monitor_;
40 40
41 DISALLOW_COPY_AND_ASSIGN(Core); 41 DISALLOW_COPY_AND_ASSIGN(Core);
42 }; 42 };
43 43
44 MouseCursorMonitorProxy::Core::Core( 44 MouseCursorMonitorProxy::Core::Core(
45 base::WeakPtr<MouseCursorMonitorProxy> proxy, 45 base::WeakPtr<MouseCursorMonitorProxy> proxy,
46 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner, 46 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
47 scoped_ptr<webrtc::MouseCursorMonitor> mouse_cursor_monitor) 47 std::unique_ptr<webrtc::MouseCursorMonitor> mouse_cursor_monitor)
48 : proxy_(proxy), 48 : proxy_(proxy),
49 caller_task_runner_(caller_task_runner), 49 caller_task_runner_(caller_task_runner),
50 mouse_cursor_monitor_(std::move(mouse_cursor_monitor)) { 50 mouse_cursor_monitor_(std::move(mouse_cursor_monitor)) {
51 thread_checker_.DetachFromThread(); 51 thread_checker_.DetachFromThread();
52 } 52 }
53 53
54 MouseCursorMonitorProxy::Core::~Core() { 54 MouseCursorMonitorProxy::Core::~Core() {
55 DCHECK(thread_checker_.CalledOnValidThread()); 55 DCHECK(thread_checker_.CalledOnValidThread());
56 } 56 }
57 57
58 void MouseCursorMonitorProxy::Core::Init( 58 void MouseCursorMonitorProxy::Core::Init(
59 webrtc::MouseCursorMonitor::Mode mode) { 59 webrtc::MouseCursorMonitor::Mode mode) {
60 DCHECK(thread_checker_.CalledOnValidThread()); 60 DCHECK(thread_checker_.CalledOnValidThread());
61 61
62 mouse_cursor_monitor_->Init(this, mode); 62 mouse_cursor_monitor_->Init(this, mode);
63 } 63 }
64 64
65 void MouseCursorMonitorProxy::Core::Capture() { 65 void MouseCursorMonitorProxy::Core::Capture() {
66 DCHECK(thread_checker_.CalledOnValidThread()); 66 DCHECK(thread_checker_.CalledOnValidThread());
67 67
68 mouse_cursor_monitor_->Capture(); 68 mouse_cursor_monitor_->Capture();
69 } 69 }
70 70
71 void MouseCursorMonitorProxy::Core::OnMouseCursor(webrtc::MouseCursor* cursor) { 71 void MouseCursorMonitorProxy::Core::OnMouseCursor(webrtc::MouseCursor* cursor) {
72 DCHECK(thread_checker_.CalledOnValidThread()); 72 DCHECK(thread_checker_.CalledOnValidThread());
73 73
74 scoped_ptr<webrtc::MouseCursor> owned_cursor(cursor); 74 std::unique_ptr<webrtc::MouseCursor> owned_cursor(cursor);
75 caller_task_runner_->PostTask( 75 caller_task_runner_->PostTask(
76 FROM_HERE, base::Bind(&MouseCursorMonitorProxy::OnMouseCursor, proxy_, 76 FROM_HERE, base::Bind(&MouseCursorMonitorProxy::OnMouseCursor, proxy_,
77 base::Passed(&owned_cursor))); 77 base::Passed(&owned_cursor)));
78 } 78 }
79 79
80 void MouseCursorMonitorProxy::Core::OnMouseCursorPosition( 80 void MouseCursorMonitorProxy::Core::OnMouseCursorPosition(
81 webrtc::MouseCursorMonitor::CursorState state, 81 webrtc::MouseCursorMonitor::CursorState state,
82 const webrtc::DesktopVector& position) { 82 const webrtc::DesktopVector& position) {
83 DCHECK(thread_checker_.CalledOnValidThread()); 83 DCHECK(thread_checker_.CalledOnValidThread());
84 84
85 caller_task_runner_->PostTask( 85 caller_task_runner_->PostTask(
86 FROM_HERE, base::Bind(&MouseCursorMonitorProxy::OnMouseCursorPosition, 86 FROM_HERE, base::Bind(&MouseCursorMonitorProxy::OnMouseCursorPosition,
87 proxy_, state, position)); 87 proxy_, state, position));
88 } 88 }
89 89
90 MouseCursorMonitorProxy::MouseCursorMonitorProxy( 90 MouseCursorMonitorProxy::MouseCursorMonitorProxy(
91 scoped_refptr<base::SingleThreadTaskRunner> capture_task_runner, 91 scoped_refptr<base::SingleThreadTaskRunner> capture_task_runner,
92 scoped_ptr<webrtc::MouseCursorMonitor> mouse_cursor_monitor) 92 std::unique_ptr<webrtc::MouseCursorMonitor> mouse_cursor_monitor)
93 : capture_task_runner_(capture_task_runner), weak_factory_(this) { 93 : capture_task_runner_(capture_task_runner), weak_factory_(this) {
94 core_.reset(new Core(weak_factory_.GetWeakPtr(), 94 core_.reset(new Core(weak_factory_.GetWeakPtr(),
95 base::ThreadTaskRunnerHandle::Get(), 95 base::ThreadTaskRunnerHandle::Get(),
96 std::move(mouse_cursor_monitor))); 96 std::move(mouse_cursor_monitor)));
97 } 97 }
98 98
99 MouseCursorMonitorProxy::~MouseCursorMonitorProxy() { 99 MouseCursorMonitorProxy::~MouseCursorMonitorProxy() {
100 capture_task_runner_->DeleteSoon(FROM_HERE, core_.release()); 100 capture_task_runner_->DeleteSoon(FROM_HERE, core_.release());
101 } 101 }
102 102
103 void MouseCursorMonitorProxy::Init(Callback* callback, Mode mode) { 103 void MouseCursorMonitorProxy::Init(Callback* callback, Mode mode) {
104 DCHECK(thread_checker_.CalledOnValidThread()); 104 DCHECK(thread_checker_.CalledOnValidThread());
105 callback_ = callback; 105 callback_ = callback;
106 capture_task_runner_->PostTask( 106 capture_task_runner_->PostTask(
107 FROM_HERE, base::Bind(&Core::Init, base::Unretained(core_.get()), mode)); 107 FROM_HERE, base::Bind(&Core::Init, base::Unretained(core_.get()), mode));
108 } 108 }
109 109
110 void MouseCursorMonitorProxy::Capture() { 110 void MouseCursorMonitorProxy::Capture() {
111 DCHECK(thread_checker_.CalledOnValidThread()); 111 DCHECK(thread_checker_.CalledOnValidThread());
112 capture_task_runner_->PostTask( 112 capture_task_runner_->PostTask(
113 FROM_HERE, base::Bind(&Core::Capture, base::Unretained(core_.get()))); 113 FROM_HERE, base::Bind(&Core::Capture, base::Unretained(core_.get())));
114 } 114 }
115 115
116 void MouseCursorMonitorProxy::OnMouseCursor( 116 void MouseCursorMonitorProxy::OnMouseCursor(
117 scoped_ptr<webrtc::MouseCursor> cursor) { 117 std::unique_ptr<webrtc::MouseCursor> cursor) {
118 DCHECK(thread_checker_.CalledOnValidThread()); 118 DCHECK(thread_checker_.CalledOnValidThread());
119 callback_->OnMouseCursor(cursor.release()); 119 callback_->OnMouseCursor(cursor.release());
120 } 120 }
121 121
122 void MouseCursorMonitorProxy::OnMouseCursorPosition( 122 void MouseCursorMonitorProxy::OnMouseCursorPosition(
123 CursorState state, 123 CursorState state,
124 const webrtc::DesktopVector& position) { 124 const webrtc::DesktopVector& position) {
125 DCHECK(thread_checker_.CalledOnValidThread()); 125 DCHECK(thread_checker_.CalledOnValidThread());
126 callback_->OnMouseCursorPosition(state, position); 126 callback_->OnMouseCursorPosition(state, position);
127 } 127 }
128 128
129 } // namespace remoting 129 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/mouse_cursor_monitor_proxy.h ('k') | remoting/host/mouse_cursor_monitor_proxy_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698