blob: b87dbcbfcddac65194596d69078919421b5b524e [file] [log] [blame]
[email protected]ea053a982011-04-11 19:17:131// Copyright (c) 2011 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]27d02e02011-05-05 21:27:0711#include "base/mac/foundation_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]ea053a982011-04-11 19:17:1314FileVersionInfoMac::FileVersionInfoMac(NSBundle *bundle)
15 : bundle_([bundle retain]) {
[email protected]6723f832008-08-11 15:38:2716}
17
[email protected]64b29caf2011-02-24 20:23:0318FileVersionInfoMac::~FileVersionInfoMac() {}
19
[email protected]6723f832008-08-11 15:38:2720// static
21FileVersionInfo* FileVersionInfo::CreateFileVersionInfoForCurrentModule() {
[email protected]0378bf42011-01-01 18:20:1422 return CreateFileVersionInfo(base::mac::MainAppBundlePath());
[email protected]09562232008-12-23 16:57:3623}
24
25// static
26FileVersionInfo* FileVersionInfo::CreateFileVersionInfo(
27 const FilePath& file_path) {
[email protected]7c1e3032010-12-20 18:40:4228 NSString* path = base::SysUTF8ToNSString(file_path.value());
29 NSBundle* bundle = [NSBundle bundleWithPath:path];
30 return new FileVersionInfoMac(bundle);
[email protected]6723f832008-08-11 15:38:2731}
32
[email protected]4f260d02010-12-23 18:35:4233string16 FileVersionInfoMac::company_name() {
34 return string16();
[email protected]6723f832008-08-11 15:38:2735}
36
[email protected]4f260d02010-12-23 18:35:4237string16 FileVersionInfoMac::company_short_name() {
38 return string16();
[email protected]6723f832008-08-11 15:38:2739}
40
[email protected]4f260d02010-12-23 18:35:4241string16 FileVersionInfoMac::internal_name() {
42 return string16();
[email protected]6723f832008-08-11 15:38:2743}
44
[email protected]4f260d02010-12-23 18:35:4245string16 FileVersionInfoMac::product_name() {
46 return GetString16Value(kCFBundleNameKey);
[email protected]6723f832008-08-11 15:38:2747}
48
[email protected]4f260d02010-12-23 18:35:4249string16 FileVersionInfoMac::product_short_name() {
50 return GetString16Value(kCFBundleNameKey);
[email protected]6723f832008-08-11 15:38:2751}
52
[email protected]4f260d02010-12-23 18:35:4253string16 FileVersionInfoMac::comments() {
54 return string16();
[email protected]6723f832008-08-11 15:38:2755}
56
[email protected]4f260d02010-12-23 18:35:4257string16 FileVersionInfoMac::legal_copyright() {
58 return GetString16Value(CFSTR("CFBundleGetInfoString"));
[email protected]6723f832008-08-11 15:38:2759}
60
[email protected]4f260d02010-12-23 18:35:4261string16 FileVersionInfoMac::product_version() {
62 return GetString16Value(CFSTR("CFBundleShortVersionString"));
[email protected]6723f832008-08-11 15:38:2763}
64
[email protected]4f260d02010-12-23 18:35:4265string16 FileVersionInfoMac::file_description() {
66 return string16();
[email protected]6723f832008-08-11 15:38:2767}
68
[email protected]4f260d02010-12-23 18:35:4269string16 FileVersionInfoMac::legal_trademarks() {
70 return string16();
[email protected]6723f832008-08-11 15:38:2771}
72
[email protected]4f260d02010-12-23 18:35:4273string16 FileVersionInfoMac::private_build() {
74 return string16();
[email protected]6723f832008-08-11 15:38:2775}
76
[email protected]4f260d02010-12-23 18:35:4277string16 FileVersionInfoMac::file_version() {
[email protected]41cd00a42009-10-14 15:51:5778 return product_version();
[email protected]6723f832008-08-11 15:38:2779}
80
[email protected]4f260d02010-12-23 18:35:4281string16 FileVersionInfoMac::original_filename() {
82 return GetString16Value(kCFBundleNameKey);
[email protected]6723f832008-08-11 15:38:2783}
84
[email protected]4f260d02010-12-23 18:35:4285string16 FileVersionInfoMac::special_build() {
86 return string16();
[email protected]6723f832008-08-11 15:38:2787}
88
[email protected]4f260d02010-12-23 18:35:4289string16 FileVersionInfoMac::last_change() {
90 return GetString16Value(CFSTR("SVNRevision"));
[email protected]6723f832008-08-11 15:38:2791}
92
[email protected]bcff05a2010-04-14 01:46:4393bool FileVersionInfoMac::is_official_build() {
[email protected]1f2fe992009-06-01 18:27:2794#if defined (GOOGLE_CHROME_BUILD)
95 return true;
96#else
[email protected]6723f832008-08-11 15:38:2797 return false;
[email protected]1f2fe992009-06-01 18:27:2798#endif
[email protected]6723f832008-08-11 15:38:2799}
100
[email protected]4f260d02010-12-23 18:35:42101string16 FileVersionInfoMac::GetString16Value(CFStringRef name) {
[email protected]6723f832008-08-11 15:38:27102 if (bundle_) {
[email protected]0378bf42011-01-01 18:20:14103 NSString *ns_name = base::mac::CFToNSCast(name);
[email protected]7c1e3032010-12-20 18:40:42104 NSString* value = [bundle_ objectForInfoDictionaryKey:ns_name];
[email protected]6723f832008-08-11 15:38:27105 if (value) {
[email protected]4f260d02010-12-23 18:35:42106 return base::SysNSStringToUTF16(value);
[email protected]6723f832008-08-11 15:38:27107 }
108 }
[email protected]4f260d02010-12-23 18:35:42109 return string16();
[email protected]6723f832008-08-11 15:38:27110}