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