Index: chrome/common/chrome_paths_mac.mm |
=================================================================== |
--- chrome/common/chrome_paths_mac.mm (revision 24091) |
+++ chrome/common/chrome_paths_mac.mm (working copy) |
@@ -7,7 +7,6 @@ |
#import <Cocoa/Cocoa.h> |
#import "base/base_paths.h" |
-#import "base/file_path.h" |
#import "base/logging.h" |
#import "base/path_service.h" |
@@ -72,4 +71,30 @@ |
return success; |
} |
+FilePath GetBrowserBundlePath() { |
+ NSBundle* running_app_bundle = [NSBundle mainBundle]; |
+ NSString* running_app_bundle_path = [running_app_bundle bundlePath]; |
+ DCHECK(running_app_bundle_path) << "failed to get the main bundle path"; |
+ |
+ // Are we the helper or the browser (main bundle)? |
+ if (![[[running_app_bundle infoDictionary] |
+ objectForKey:@"LSUIElement"] boolValue]) { |
+ // We aren't a LSUIElement, so this must be the browser, return it's path. |
+ return FilePath([running_app_bundle_path fileSystemRepresentation]); |
+ } |
+ |
+ // Helper lives at ...app/Contents/Resources/...Helper.app |
+ NSArray* components = [running_app_bundle_path pathComponents]; |
+ DCHECK_GE([components count], static_cast<NSUInteger>(4)) |
+ << "too few path components for this bundle to be within another bundle"; |
+ components = |
+ [components subarrayWithRange:NSMakeRange(0, [components count] - 3)]; |
+ |
+ NSString* browser_path = [NSString pathWithComponents:components]; |
+ DCHECK([[browser_path pathExtension] isEqualToString:@"app"]) |
+ << "we weren't within another app?"; |
+ |
+ return FilePath([browser_path fileSystemRepresentation]); |
+} |
+ |
} // namespace chrome |