Upstream version 11.40.277.0
[platform/framework/web/crosswalk.git] / src / third_party / webrtc / modules / desktop_capture / window_capturer.h
1 /*
2  *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10
11 #ifndef WEBRTC_MODULES_DESKTOP_CAPTURE_WINDOW_CAPTURER_H_
12 #define WEBRTC_MODULES_DESKTOP_CAPTURE_WINDOW_CAPTURER_H_
13
14 #include <string>
15 #include <vector>
16
17 #include "webrtc/base/constructormagic.h"
18 #include "webrtc/modules/desktop_capture/desktop_capture_types.h"
19 #include "webrtc/modules/desktop_capture/desktop_capturer.h"
20 #include "webrtc/typedefs.h"
21
22 namespace webrtc {
23
24 class DesktopCaptureOptions;
25
26 class WindowCapturer : public DesktopCapturer {
27  public:
28   typedef webrtc::WindowId WindowId;
29
30   struct Window {
31     WindowId id;
32
33     // Title of the window in UTF-8 encoding.
34     std::string title;
35   };
36
37   typedef std::vector<Window> WindowList;
38
39   static WindowCapturer* Create(const DesktopCaptureOptions& options);
40
41   // TODO(sergeyu): Remove this method. crbug.com/172183
42   static WindowCapturer* Create();
43
44   virtual ~WindowCapturer() {}
45
46   // Get list of windows. Returns false in case of a failure.
47   virtual bool GetWindowList(WindowList* windows) = 0;
48
49   // Select window to be captured. Returns false in case of a failure (e.g. if
50   // there is no window with the specified id).
51   virtual bool SelectWindow(WindowId id) = 0;
52
53   // Bring the selected window to the front. Returns false in case of a
54   // failure or no window selected.
55   // TODO(jiayl): remove the default impl when FakeWindowCapturer is updated in
56   // Chromium.
57   virtual bool BringSelectedWindowToFront() {
58     return true;
59   }
60 };
61
62 }  // namespace webrtc
63
64 #endif  // WEBRTC_MODULES_DESKTOP_CAPTURE_WINDOW_CAPTURER_H_
65