1f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org/*
2f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org *  Copyright 2007 The WebRTC Project Authors. All rights reserved.
3f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org *
4f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org *  Use of this source code is governed by a BSD-style license
5f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org *  that can be found in the LICENSE file in the root of the source
6f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org *  tree. An additional intellectual property rights grant can be found
7f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org *  in the file PATENTS.  All contributing project authors may
8f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org *  be found in the AUTHORS file in the root of the source tree.
9f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org */
10f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
11f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#ifndef WEBRTC_BASE_MACUTILS_H__
12f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#define WEBRTC_BASE_MACUTILS_H__
13f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
14f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#include <CoreFoundation/CoreFoundation.h>
15f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
16f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#include <Carbon/Carbon.h>
17f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#endif
18f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#include <string>
19f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
20f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgnamespace rtc {
21f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
22f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org///////////////////////////////////////////////////////////////////////////////
23f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
24f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// Note that some of these functions work for both iOS and Mac OS X.  The ones
25f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// that are specific to Mac are #ifdef'ed as such.
26f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
27f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgbool ToUtf8(const CFStringRef str16, std::string* str8);
28f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgbool ToUtf16(const std::string& str8, CFStringRef* str16);
29f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
30f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
31f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgvoid DecodeFourChar(UInt32 fc, std::string* out);
32f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
33f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgenum MacOSVersionName {
34f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  kMacOSUnknown,       // ???
35f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  kMacOSOlder,         // 10.2-
36f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  kMacOSPanther,       // 10.3
37f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  kMacOSTiger,         // 10.4
38f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  kMacOSLeopard,       // 10.5
39f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  kMacOSSnowLeopard,   // 10.6
40f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  kMacOSLion,          // 10.7
41f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  kMacOSMountainLion,  // 10.8
42f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  kMacOSMavericks,     // 10.9
43f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  kMacOSNewer,         // 10.10+
44f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org};
45f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
46f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgbool GetOSVersion(int* major, int* minor, int* bugfix);
47f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgMacOSVersionName GetOSVersionName();
48f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgbool GetQuickTimeVersion(std::string* version);
49f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
50f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// Runs the given apple script. Only supports scripts that does not
51f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// require user interaction.
52f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgbool RunAppleScript(const std::string& script);
53f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#endif
54f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
55f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org///////////////////////////////////////////////////////////////////////////////
56f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
57f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}  // namespace rtc
58f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
59f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#endif  // WEBRTC_BASE_MACUTILS_H__
60