Chromium Code Reviews| Index: base/file_version_info_mac.mm |
| diff --git a/base/file_version_info_mac.mm b/base/file_version_info_mac.mm |
| index 57be79ad864156d17b48f09bac0b937075a51486..8fc621cecf5e6f5d4da6fa214a982f9048cd8c13 100644 |
| --- a/base/file_version_info_mac.mm |
| +++ b/base/file_version_info_mac.mm |
| @@ -4,19 +4,13 @@ |
| #include "base/file_version_info_mac.h" |
| -#import <Cocoa/Cocoa.h> |
| +#import <Foundation/Foundation.h> |
| -#include "base/basictypes.h" |
| #include "base/file_path.h" |
| -#include "base/string_util.h" |
| -#include "base/utf_string_conversions.h" |
| +#include "base/logging.h" |
| +#include "base/sys_string_conversions.h" |
| FileVersionInfoMac::FileVersionInfoMac(NSBundle *bundle) : bundle_(bundle) { |
| - [bundle_ retain]; |
| -} |
| - |
| -FileVersionInfoMac::~FileVersionInfoMac() { |
| - [bundle_ release]; |
| } |
| // static |
| @@ -24,22 +18,33 @@ FileVersionInfo* FileVersionInfo::CreateFileVersionInfoForCurrentModule() { |
| // TODO(erikkay): this should really use bundleForClass, but we don't have |
| // a class to hang onto yet. |
| NSBundle* bundle = [NSBundle mainBundle]; |
| - return new FileVersionInfoMac(bundle); |
| + if (![bundle bundleIdentifier]) { |
|
Erik does not do reviews
2010/12/14 19:16:32
if mainBundle is bogus, don't we have a big proble
|
| + VLOG(1) << "Unable to create file version for " |
| + << base::SysNSStringToUTF8([bundle description]); |
| + return NULL; |
| + } else { |
| + return new FileVersionInfoMac(bundle); |
| + } |
| } |
| // static |
| FileVersionInfo* FileVersionInfo::CreateFileVersionInfo( |
| const std::wstring& file_path) { |
| - NSString* path = [NSString stringWithCString: |
| - reinterpret_cast<const char*>(file_path.c_str()) |
| - encoding:NSUTF32StringEncoding]; |
| - return new FileVersionInfoMac([NSBundle bundleWithPath:path]); |
| + NSString* path = base::SysWideToNSString(file_path); |
| + NSBundle *bundle = [NSBundle bundleWithPath:path]; |
| + if (![bundle bundleIdentifier]) { |
| + VLOG(1) << "Unable to create file version for " |
| + << base::SysNSStringToUTF8([bundle description]); |
| + return NULL; |
| + } else { |
| + return new FileVersionInfoMac(bundle); |
| + } |
| } |
| // static |
| FileVersionInfo* FileVersionInfo::CreateFileVersionInfo( |
| const FilePath& file_path) { |
| - NSString* path = [NSString stringWithUTF8String:file_path.value().c_str()]; |
| + NSString* path = base::SysUTF8ToNSString(file_path.value()); |
| return new FileVersionInfoMac([NSBundle bundleWithPath:path]); |
| } |
| @@ -114,11 +119,10 @@ bool FileVersionInfoMac::is_official_build() { |
| bool FileVersionInfoMac::GetValue(const wchar_t* name, |
| std::wstring* value_str) { |
| if (bundle_) { |
| - NSString* value = [bundle_ objectForInfoDictionaryKey: |
| - [NSString stringWithUTF8String:WideToUTF8(name).c_str()]]; |
| + NSString* ns_name = base::SysWideToNSString(name); |
| + NSString* value = [bundle_ objectForInfoDictionaryKey:ns_name]; |
| if (value) { |
| - *value_str = reinterpret_cast<const wchar_t*>( |
| - [value cStringUsingEncoding:NSUTF32StringEncoding]); |
| + *value_str = base::SysNSStringToWide(value); |
| return true; |
| } |
| } |