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
10namespace remoting {
11
12IpcMouseCursorMonitor::IpcMouseCursorMonitor(
13    scoped_refptr<DesktopSessionProxy> desktop_session_proxy)
14    : callback_(NULL),
15      desktop_session_proxy_(desktop_session_proxy),
16      weak_factory_(this) {
17}
18
19IpcMouseCursorMonitor::~IpcMouseCursorMonitor() {}
20
21void 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
29void 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
35void IpcMouseCursorMonitor::OnMouseCursor(
36    scoped_ptr<webrtc::MouseCursor> cursor) {
37  DCHECK(callback_);
38  callback_->OnMouseCursor(cursor.release());
39}
40
41}  // namespace remoting
42
43