blob: bcfd85423b6634a627f5109334b553aa2f53a19c [file] [log] [blame]
[email protected]1407b6e2010-08-27 21:39:481// Copyright (c) 2010 The Chromium Authors. All rights reserved.
[email protected]49df6022008-08-27 19:03:432// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
[email protected]6723f832008-08-11 15:38:274
[email protected]bcff05a2010-04-14 01:46:435#include "base/file_version_info_mac.h"
[email protected]6723f832008-08-11 15:38:276
[email protected]7c1e3032010-12-20 18:40:427#import <Foundation/Foundation.h>
[email protected]1265917f2008-08-12 17:33:528
[email protected]f5393332009-06-03 15:01:299#include "base/file_path.h"
[email protected]7c1e3032010-12-20 18:40:4210#include "base/logging.h"
[email protected]0378bf42011-01-01 18:20:1411#include "base/mac/mac_util.h"
[email protected]7c1e3032010-12-20 18:40:4212#include "base/sys_string_conversions.h"
[email protected]6723f832008-08-11 15:38:2713
[email protected]bcff05a2010-04-14 01:46:4314FileVersionInfoMac::FileVersionInfoMac(NSBundle *bundle) : bundle_(bundle) {
[email protected]6723f832008-08-11 15:38:2715}
16
[email protected]64b29caf2011-02-24 20:23:0317FileVersionInfoMac::~FileVersionInfoMac() {}
18
[email protected]6723f832008-08-11 15:38:2719// static
20FileVersionInfo* FileVersionInfo::CreateFileVersionInfoForCurrentModule() {
[email protected]0378bf42011-01-01 18:20:1421 return CreateFileVersionInfo(base::mac::MainAppBundlePath());
[email protected]09562232008-12-23 16:57:3622}
23
24// static
25FileVersionInfo* FileVersionInfo::CreateFileVersionInfo(
26 const FilePath& file_path) {
[email protected]7c1e3032010-12-20 18:40:4227 NSString* path = base::SysUTF8ToNSString(file_path.value());
28 NSBundle* bundle = [NSBundle bundleWithPath:path];
29 return new FileVersionInfoMac(bundle);
[email protected]6723f832008-08-11 15:38:2730}
31
[email protected]4f260d02010-12-23 18:35:4232string16 FileVersionInfoMac::company_name() {
33 return string16();
[email protected]6723f832008-08-11 15:38:2734}
35
[email protected]4f260d02010-12-23 18:35:4236string16 FileVersionInfoMac::company_short_name() {
37 return string16();
[email protected]6723f832008-08-11 15:38:2738}
39
[email protected]4f260d02010-12-23 18:35:4240string16 FileVersionInfoMac::internal_name() {
41 return string16();
[email protected]6723f832008-08-11 15:38:2742}
43
[email protected]4f260d02010-12-23 18:35:4244string16 FileVersionInfoMac::product_name() {
45 return GetString16Value(kCFBundleNameKey);
[email protected]6723f832008-08-11 15:38:2746}
47
[email protected]4f260d02010-12-23 18:35:4248string16 FileVersionInfoMac::product_short_name() {
49 return GetString16Value(kCFBundleNameKey);
[email protected]6723f832008-08-11 15:38:2750}
51
[email protected]4f260d02010-12-23 18:35:4252string16 FileVersionInfoMac::comments() {
53 return string16();
[email protected]6723f832008-08-11 15:38:2754}
55
[email protected]4f260d02010-12-23 18:35:4256string16 FileVersionInfoMac::legal_copyright() {
57 return GetString16Value(CFSTR("CFBundleGetInfoString"));
[email protected]6723f832008-08-11 15:38:2758}
59
[email protected]4f260d02010-12-23 18:35:4260string16 FileVersionInfoMac::product_version() {
61 return GetString16Value(CFSTR("CFBundleShortVersionString"));
[email protected]6723f832008-08-11 15:38:2762}
63
[email protected]4f260d02010-12-23 18:35:4264string16 FileVersionInfoMac::file_description() {
65 return string16();
[email protected]6723f832008-08-11 15:38:2766}
67
[email protected]4f260d02010-12-23 18:35:4268string16 FileVersionInfoMac::legal_trademarks() {
69 return string16();
[email protected]6723f832008-08-11 15:38:2770}
71
[email protected]4f260d02010-12-23 18:35:4272string16 FileVersionInfoMac::private_build() {
73 return string16();
[email protected]6723f832008-08-11 15:38:2774}
75
[email protected]4f260d02010-12-23 18:35:4276string16 FileVersionInfoMac::file_version() {
[email protected]41cd00a42009-10-14 15:51:5777 return product_version();
[email protected]6723f832008-08-11 15:38:2778}
79
[email protected]4f260d02010-12-23 18:35:4280string16 FileVersionInfoMac::original_filename() {
81 return GetString16Value(kCFBundleNameKey);
[email protected]6723f832008-08-11 15:38:2782}
83
[email protected]4f260d02010-12-23 18:35:4284string16 FileVersionInfoMac::special_build() {
85 return string16();
[email protected]6723f832008-08-11 15:38:2786}
87
[email protected]4f260d02010-12-23 18:35:4288string16 FileVersionInfoMac::last_change() {
89 return GetString16Value(CFSTR("SVNRevision"));
[email protected]6723f832008-08-11 15:38:2790}
91
[email protected]bcff05a2010-04-14 01:46:4392bool FileVersionInfoMac::is_official_build() {
[email protected]1f2fe992009-06-01 18:27:2793#if defined (GOOGLE_CHROME_BUILD)
94 return true;
95#else
[email protected]6723f832008-08-11 15:38:2796 return false;
[email protected]1f2fe992009-06-01 18:27:2797#endif
[email protected]6723f832008-08-11 15:38:2798}
99
[email protected]4f260d02010-12-23 18:35:42100string16 FileVersionInfoMac::GetString16Value(CFStringRef name) {
[email protected]6723f832008-08-11 15:38:27101 if (bundle_) {
[email protected]0378bf42011-01-01 18:20:14102 NSString *ns_name = base::mac::CFToNSCast(name);
[email protected]7c1e3032010-12-20 18:40:42103 NSString* value = [bundle_ objectForInfoDictionaryKey:ns_name];
[email protected]6723f832008-08-11 15:38:27104 if (value) {
[email protected]4f260d02010-12-23 18:35:42105 return base::SysNSStringToUTF16(value);
[email protected]6723f832008-08-11 15:38:27106 }
107 }
[email protected]4f260d02010-12-23 18:35:42108 return string16();
[email protected]6723f832008-08-11 15:38:27109}