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