16e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 26e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 36e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// found in the LICENSE file. 46e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 56e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "remoting/host/ipc_mouse_cursor_monitor.h" 66e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 76e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "remoting/host/desktop_session_proxy.h" 86e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "third_party/webrtc/modules/desktop_capture/mouse_cursor.h" 96e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)namespace remoting { 116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)IpcMouseCursorMonitor::IpcMouseCursorMonitor( 136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_refptr<DesktopSessionProxy> desktop_session_proxy) 146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) : callback_(NULL), 156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) desktop_session_proxy_(desktop_session_proxy), 166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) weak_factory_(this) { 176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)IpcMouseCursorMonitor::~IpcMouseCursorMonitor() {} 206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)void IpcMouseCursorMonitor::Init(Callback* callback, Mode mode) { 226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) DCHECK(!callback_); 236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) DCHECK(callback); 246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) DCHECK_EQ(webrtc::MouseCursorMonitor::SHAPE_ONLY, mode); 256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) callback_ = callback; 266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) desktop_session_proxy_->SetMouseCursorMonitor(weak_factory_.GetWeakPtr()); 276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)void IpcMouseCursorMonitor::Capture() { 306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Ignore. DesktopSessionAgent will capture the cursor at the same time it 316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // captures a screen frame when |IpcVideoFrameCapturer::Capture()| is called. 326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // This saves an IPC roundtrip. 336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)void IpcMouseCursorMonitor::OnMouseCursor( 366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_ptr<webrtc::MouseCursor> cursor) { 376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) DCHECK(callback_); 386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) callback_->OnMouseCursor(cursor.release()); 396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} // namespace remoting 426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 43