| OLD | NEW |
| 1 // Copyright (c) 2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2008 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/mac_util.h" | 5 #include "base/mac_util.h" |
| 6 | 6 |
| 7 #include <Carbon/Carbon.h> | |
| 8 #import <Cocoa/Cocoa.h> | 7 #import <Cocoa/Cocoa.h> |
| 9 | 8 |
| 10 #include "base/file_path.h" | 9 #include "base/file_path.h" |
| 11 #include "base/logging.h" | 10 #include "base/logging.h" |
| 12 #include "base/scoped_cftyperef.h" | 11 #include "base/scoped_cftyperef.h" |
| 13 #include "base/sys_string_conversions.h" | 12 #include "base/sys_string_conversions.h" |
| 14 | 13 |
| 15 namespace mac_util { | 14 namespace mac_util { |
| 16 | 15 |
| 17 std::string PathFromFSRef(const FSRef& ref) { | 16 std::string PathFromFSRef(const FSRef& ref) { |
| (...skipping 28 matching lines...) Expand all Loading... |
| 46 | 45 |
| 47 // No threading worries since NSBundle isn't thread safe. | 46 // No threading worries since NSBundle isn't thread safe. |
| 48 static NSBundle* g_override_app_bundle = nil; | 47 static NSBundle* g_override_app_bundle = nil; |
| 49 | 48 |
| 50 NSBundle* MainAppBundle() { | 49 NSBundle* MainAppBundle() { |
| 51 if (g_override_app_bundle) | 50 if (g_override_app_bundle) |
| 52 return g_override_app_bundle; | 51 return g_override_app_bundle; |
| 53 return [NSBundle mainBundle]; | 52 return [NSBundle mainBundle]; |
| 54 } | 53 } |
| 55 | 54 |
| 55 void SetOverrideAppBundle(NSBundle* bundle) { |
| 56 if (bundle != g_override_app_bundle) { |
| 57 [g_override_app_bundle release]; |
| 58 g_override_app_bundle = [bundle retain]; |
| 59 } |
| 60 } |
| 61 |
| 62 void SetOverrideAppBundlePath(const FilePath& file_path) { |
| 63 NSString* path = base::SysUTF8ToNSString(file_path.value()); |
| 64 NSBundle* bundle = [NSBundle bundleWithPath:path]; |
| 65 DCHECK(bundle) << "failed to load the bundle: " << file_path.value(); |
| 66 |
| 67 SetOverrideAppBundle(bundle); |
| 68 } |
| 69 |
| 70 OSType CreatorCodeForCFBundleRef(CFBundleRef bundle) { |
| 71 OSType creator; |
| 72 CFBundleGetPackageInfo(bundle, NULL, &creator); |
| 73 return creator; |
| 74 } |
| 75 |
| 76 OSType CreatorCodeForApplication() { |
| 77 CFBundleRef bundle = CFBundleGetMainBundle(); |
| 78 if (!bundle) |
| 79 return kUnknownType; |
| 80 |
| 81 return CreatorCodeForCFBundleRef(bundle); |
| 82 } |
| 83 |
| 56 FilePath GetUserLibraryPath() { | 84 FilePath GetUserLibraryPath() { |
| 57 NSArray* dirs = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, | 85 NSArray* dirs = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, |
| 58 NSUserDomainMask, YES); | 86 NSUserDomainMask, YES); |
| 59 if ([dirs count] == 0) | 87 if ([dirs count] == 0) |
| 60 return FilePath(); | 88 return FilePath(); |
| 61 | 89 |
| 62 NSString* library_dir = [dirs objectAtIndex:0]; | 90 NSString* library_dir = [dirs objectAtIndex:0]; |
| 63 const char* library_dir_path = [library_dir fileSystemRepresentation]; | 91 const char* library_dir_path = [library_dir fileSystemRepresentation]; |
| 64 if (!library_dir_path) | 92 if (!library_dir_path) |
| 65 return FilePath(); | 93 return FilePath(); |
| 66 | 94 |
| 67 return FilePath(library_dir_path); | 95 return FilePath(library_dir_path); |
| 68 } | 96 } |
| 69 | 97 |
| 70 void SetOverrideAppBundle(NSBundle* bundle) { | |
| 71 [g_override_app_bundle release]; | |
| 72 g_override_app_bundle = [bundle retain]; | |
| 73 } | |
| 74 | |
| 75 void SetOverrideAppBundlePath(const FilePath& file_path) { | |
| 76 NSString* path = base::SysUTF8ToNSString(file_path.value()); | |
| 77 NSBundle* bundle = [NSBundle bundleWithPath:path]; | |
| 78 DCHECK(bundle) << "failed to load the bundle: " << file_path.value(); | |
| 79 | |
| 80 SetOverrideAppBundle(bundle); | |
| 81 } | |
| 82 | 98 |
| 83 } // namespace mac_util | 99 } // namespace mac_util |
| OLD | NEW |