1 /*
2  *  Copyright 2007 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_MACUTILS_H__
12 #define WEBRTC_BASE_MACUTILS_H__
13 
14 #include <CoreFoundation/CoreFoundation.h>
15 #if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
16 #include <Carbon/Carbon.h>
17 #endif
18 #include <string>
19 
20 namespace rtc {
21 
22 ///////////////////////////////////////////////////////////////////////////////
23 
24 // Note that some of these functions work for both iOS and Mac OS X.  The ones
25 // that are specific to Mac are #ifdef'ed as such.
26 
27 bool ToUtf8(const CFStringRef str16, std::string* str8);
28 bool ToUtf16(const std::string& str8, CFStringRef* str16);
29 
30 #if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
31 void DecodeFourChar(UInt32 fc, std::string* out);
32 
33 enum MacOSVersionName {
34   kMacOSUnknown,       // ???
35   kMacOSOlder,         // 10.2-
36   kMacOSPanther,       // 10.3
37   kMacOSTiger,         // 10.4
38   kMacOSLeopard,       // 10.5
39   kMacOSSnowLeopard,   // 10.6
40   kMacOSLion,          // 10.7
41   kMacOSMountainLion,  // 10.8
42   kMacOSMavericks,     // 10.9
43   kMacOSNewer,         // 10.10+
44 };
45 
46 bool GetOSVersion(int* major, int* minor, int* bugfix);
47 MacOSVersionName GetOSVersionName();
48 bool GetQuickTimeVersion(std::string* version);
49 
50 // Runs the given apple script. Only supports scripts that does not
51 // require user interaction.
52 bool RunAppleScript(const std::string& script);
53 #endif
54 
55 ///////////////////////////////////////////////////////////////////////////////
56 
57 }  // namespace rtc
58 
59 #endif  // WEBRTC_BASE_MACUTILS_H__
60