1e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org/* 2e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 3e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org * 4e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org * Use of this source code is governed by a BSD-style license 5e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org * that can be found in the LICENSE file in the root of the source 6e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org * tree. An additional intellectual property rights grant can be found 7e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org * in the file PATENTS. All contributing project authors may 8e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org * be found in the AUTHORS file in the root of the source tree. 9e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org */ 10e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org 11e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org#include "webrtc/modules/desktop_capture/window_capturer.h" 12e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org 133f45c2e0ac4cb280f941efa3a3476895795e3dd6pbos@webrtc.org#include <assert.h> 14e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org 15e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org#include "webrtc/modules/desktop_capture/desktop_frame.h" 16e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org 17e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.orgnamespace webrtc { 18e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org 19e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.orgnamespace { 20e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org 21e562e02f31a3d39f06d6cdab11a28104c60bccd8sergeyu@chromium.orgclass WindowCapturerNull : public WindowCapturer { 22e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org public: 23e562e02f31a3d39f06d6cdab11a28104c60bccd8sergeyu@chromium.org WindowCapturerNull(); 24e562e02f31a3d39f06d6cdab11a28104c60bccd8sergeyu@chromium.org virtual ~WindowCapturerNull(); 25e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org 26e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org // WindowCapturer interface. 27e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org virtual bool GetWindowList(WindowList* windows) OVERRIDE; 28e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org virtual bool SelectWindow(WindowId id) OVERRIDE; 29dd6cf04628fd4772e543b5008b5328f6c7988f5ajiayl@webrtc.org virtual bool BringSelectedWindowToFront() OVERRIDE; 30e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org 31e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org // DesktopCapturer interface. 32e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org virtual void Start(Callback* callback) OVERRIDE; 33e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org virtual void Capture(const DesktopRegion& region) OVERRIDE; 34e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org 35e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org private: 36e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org Callback* callback_; 37e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org 38e562e02f31a3d39f06d6cdab11a28104c60bccd8sergeyu@chromium.org DISALLOW_COPY_AND_ASSIGN(WindowCapturerNull); 39e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org}; 40e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org 41e562e02f31a3d39f06d6cdab11a28104c60bccd8sergeyu@chromium.orgWindowCapturerNull::WindowCapturerNull() 42e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org : callback_(NULL) { 43e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org} 44e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org 45e562e02f31a3d39f06d6cdab11a28104c60bccd8sergeyu@chromium.orgWindowCapturerNull::~WindowCapturerNull() { 46e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org} 47e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org 48e562e02f31a3d39f06d6cdab11a28104c60bccd8sergeyu@chromium.orgbool WindowCapturerNull::GetWindowList(WindowList* windows) { 49e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org // Not implemented yet. 50e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org return false; 51e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org} 52e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org 53e562e02f31a3d39f06d6cdab11a28104c60bccd8sergeyu@chromium.orgbool WindowCapturerNull::SelectWindow(WindowId id) { 54e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org // Not implemented yet. 55e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org return false; 56e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org} 57e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org 58dd6cf04628fd4772e543b5008b5328f6c7988f5ajiayl@webrtc.orgbool WindowCapturerNull::BringSelectedWindowToFront() { 59dd6cf04628fd4772e543b5008b5328f6c7988f5ajiayl@webrtc.org // Not implemented yet. 60dd6cf04628fd4772e543b5008b5328f6c7988f5ajiayl@webrtc.org return false; 61dd6cf04628fd4772e543b5008b5328f6c7988f5ajiayl@webrtc.org} 62dd6cf04628fd4772e543b5008b5328f6c7988f5ajiayl@webrtc.org 63e562e02f31a3d39f06d6cdab11a28104c60bccd8sergeyu@chromium.orgvoid WindowCapturerNull::Start(Callback* callback) { 64e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org assert(!callback_); 65e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org assert(callback); 66e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org 67e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org callback_ = callback; 68e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org} 69e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org 70e562e02f31a3d39f06d6cdab11a28104c60bccd8sergeyu@chromium.orgvoid WindowCapturerNull::Capture(const DesktopRegion& region) { 71e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org // Not implemented yet. 72e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org callback_->OnCaptureCompleted(NULL); 73e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org} 74e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org 75e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org} // namespace 76e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org 77e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org// static 7891685dc421db7dcdc24f6a154de9b92eababf6fdsergeyu@chromium.orgWindowCapturer* WindowCapturer::Create(const DesktopCaptureOptions& options) { 79e562e02f31a3d39f06d6cdab11a28104c60bccd8sergeyu@chromium.org return new WindowCapturerNull(); 80e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org} 81e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org 82e032f9f280d973fac2d379de4e2884d79f312faasergeyu@chromium.org} // namespace webrtc 83