blob: 00a4cc469ed08eb6d946e9cc4bfe84eb8e72a5e5 [file] [log] [blame]
henrike@webrtc.org47be73b2014-05-13 18:00:26 +00001/*
2 * Copyright 2010 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_BASE_WINDOWPICKERFACTORY_H_
12#define WEBRTC_BASE_WINDOWPICKERFACTORY_H_
13
14#if defined(WEBRTC_WIN)
15#include "webrtc/base/win32windowpicker.h"
16#elif defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
17#include "webrtc/base/macutils.h"
18#include "webrtc/base/macwindowpicker.h"
19#elif defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
20#include "webrtc/base/linuxwindowpicker.h"
21#endif
22
23#include "webrtc/base/windowpicker.h"
24
25namespace rtc {
26
27class WindowPickerFactory {
28 public:
29 virtual ~WindowPickerFactory() {}
30
31 // Instance method for dependency injection.
32 virtual WindowPicker* Create() {
33 return CreateWindowPicker();
34 }
35
36 static WindowPicker* CreateWindowPicker() {
37#if defined(WEBRTC_WIN)
38 return new Win32WindowPicker();
39#elif defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
40 return new MacWindowPicker();
41#elif defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && defined(HAVE_X11)
42 return new LinuxWindowPicker();
43#else
44 return NULL;
45#endif
46 }
47
48 static bool IsSupported() {
49#if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
50 return GetOSVersionName() >= kMacOSLeopard;
51#else
52 return true;
53#endif
54 }
55};
56
57} // namespace rtc
58
59#endif // WEBRTC_BASE_WINDOWPICKERFACTORY_H_