Upstream version 10.39.233.0
[platform/framework/web/crosswalk.git] / src / remoting / host / ipc_mouse_cursor_monitor.cc
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "remoting/host/ipc_mouse_cursor_monitor.h"
6
7 #include "remoting/host/desktop_session_proxy.h"
8 #include "third_party/webrtc/modules/desktop_capture/mouse_cursor.h"
9
10 namespace remoting {
11
12 IpcMouseCursorMonitor::IpcMouseCursorMonitor(
13     scoped_refptr<DesktopSessionProxy> desktop_session_proxy)
14     : callback_(NULL),
15       desktop_session_proxy_(desktop_session_proxy),
16       weak_factory_(this) {
17 }
18
19 IpcMouseCursorMonitor::~IpcMouseCursorMonitor() {}
20
21 void IpcMouseCursorMonitor::Init(Callback* callback, Mode mode) {
22   DCHECK(!callback_);
23   DCHECK(callback);
24   DCHECK_EQ(webrtc::MouseCursorMonitor::SHAPE_ONLY, mode);
25   callback_ = callback;
26   desktop_session_proxy_->SetMouseCursorMonitor(weak_factory_.GetWeakPtr());
27 }
28
29 void IpcMouseCursorMonitor::Capture() {
30   // Ignore. DesktopSessionAgent will capture the cursor at the same time it
31   // captures a screen frame when |IpcVideoFrameCapturer::Capture()| is called.
32   // This saves an IPC roundtrip.
33 }
34
35 void IpcMouseCursorMonitor::OnMouseCursor(
36     scoped_ptr<webrtc::MouseCursor> cursor) {
37   DCHECK(callback_);
38   callback_->OnMouseCursor(cursor.release());
39 }
40
41 }  // namespace remoting
42