From be6c1ab546a0419b25b1a1637ed13bb5445d8483 Mon Sep 17 00:00:00 2001 From: "thomasvl@chromium.org" Date: Tue, 17 Mar 2009 20:32:34 +0000 Subject: Some upstream code assumes that the executable path from the path service is standardized, but NSBundle makes not such promise, so we standardize it ourselves. While here, remove the app data dir support since it seems the installer and windows sandbox are the only things that need it. Moved that code upstream to the chrome paths... Directly handle the user data dir w/in the chrome path service call back, return different things for chrome vs. chromium. Review URL: http://codereview.chromium.org/48089 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11910 0039d316-1c4b-4281-b951-d872f2087c98 --- base/base_paths_mac.mm | 19 ++++--------------- chrome/common/chrome_paths_mac.mm | 20 +++++++++++++++++--- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/base/base_paths_mac.mm b/base/base_paths_mac.mm index 394a588..cd0287c 100644 --- a/base/base_paths_mac.mm +++ b/base/base_paths_mac.mm @@ -19,21 +19,10 @@ bool PathProviderMac(int key, FilePath* result) { switch (key) { case base::FILE_EXE: case base::FILE_MODULE: { - NSString* path = [[NSBundle mainBundle] executablePath]; - cur = [path fileSystemRepresentation]; - break; - } - case base::DIR_APP_DATA: - case base::DIR_LOCAL_APP_DATA: { - // TODO(erikkay): maybe we should remove one of these for mac? The local - // vs. roaming distinction is fairly Windows-specific. - NSArray* dirs = NSSearchPathForDirectoriesInDomains( - NSApplicationSupportDirectory, NSUserDomainMask, YES); - if (!dirs || [dirs count] == 0) - return false; - DCHECK([dirs count] == 1); - NSString* tail = [[NSString alloc] initWithCString:"Google/Chrome"]; - NSString* path = [[dirs lastObject] stringByAppendingPathComponent:tail]; + // Executable path can have relative references ("..") depending on + // how the app was launched. + NSString* path = + [[[NSBundle mainBundle] executablePath] stringByStandardizingPath]; cur = [path fileSystemRepresentation]; break; } diff --git a/chrome/common/chrome_paths_mac.mm b/chrome/common/chrome_paths_mac.mm index e8e8f92..f4ad3d5 100644 --- a/chrome/common/chrome_paths_mac.mm +++ b/chrome/common/chrome_paths_mac.mm @@ -14,9 +14,23 @@ namespace chrome { bool GetDefaultUserDataDirectory(FilePath* result) { - if (!PathService::Get(base::DIR_LOCAL_APP_DATA, result)) - return false; - return true; + bool success = false; + NSArray* dirs = + NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, + NSUserDomainMask, YES); + if ([dirs count] && result) { + NSString* base = [dirs objectAtIndex:0]; +#if defined(GOOGLE_CHROME_BUILD) + base = [base stringByAppendingPathComponent@"Google"]; + NSString* tail = @"Chrome"; +#else + NSString* tail = @"Chromium"; +#endif + NSString* path = [base stringByAppendingPathComponent:tail]; + *result = FilePath([path fileSystemRepresentation]); + success = true; + } + return success; } bool GetUserDocumentsDirectory(FilePath* result) { -- cgit v1.1