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