Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Side by Side Diff: chrome/common/chrome_paths_mac.mm

Issue 11418005: Get a minimal unit_tests target building and running for iOS (Closed) Base URL: http://git.chromium.org/chromium/src.git@chrome-gyp-ios-support
Patch Set: Better ifdefing in chrome_paths Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/common/chrome_paths_internal.h ('k') | chrome/common/chrome_version_info_mac.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/common/chrome_paths_internal.h" 5 #include "chrome/common/chrome_paths_internal.h"
6 6
7 #import <Foundation/Foundation.h> 7 #import <Foundation/Foundation.h>
8 #include <string.h> 8 #include <string.h>
9 9
10 #include <string> 10 #include <string>
11 11
12 #include "base/base_paths.h" 12 #include "base/base_paths.h"
13 #include "base/logging.h" 13 #include "base/logging.h"
14 #import "base/mac/foundation_util.h" 14 #import "base/mac/foundation_util.h"
15 #import "base/mac/mac_util.h"
16 #import "base/mac/scoped_nsautorelease_pool.h" 15 #import "base/mac/scoped_nsautorelease_pool.h"
17 #include "base/path_service.h" 16 #include "base/path_service.h"
18 #include "chrome/common/chrome_constants.h" 17 #include "chrome/common/chrome_constants.h"
19 18
19 #if !defined(OS_IOS)
20 #import "base/mac/mac_util.h"
21 #endif
22
20 namespace { 23 namespace {
21 24
25 #if !defined(OS_IOS)
22 const FilePath* g_override_versioned_directory = NULL; 26 const FilePath* g_override_versioned_directory = NULL;
23 27
24 // Return a retained (NOT autoreleased) NSBundle* as the internal 28 // Return a retained (NOT autoreleased) NSBundle* as the internal
25 // implementation of chrome::OuterAppBundle(), which should be the only 29 // implementation of chrome::OuterAppBundle(), which should be the only
26 // caller. 30 // caller.
27 NSBundle* OuterAppBundleInternal() { 31 NSBundle* OuterAppBundleInternal() {
28 base::mac::ScopedNSAutoreleasePool pool; 32 base::mac::ScopedNSAutoreleasePool pool;
29 33
30 if (!base::mac::AmIBundled()) { 34 if (!base::mac::AmIBundled()) {
31 // If unbundled (as in a test), there's no app bundle. 35 // If unbundled (as in a test), there's no app bundle.
32 return nil; 36 return nil;
33 } 37 }
34 38
35 if (!base::mac::IsBackgroundOnlyProcess()) { 39 if (!base::mac::IsBackgroundOnlyProcess()) {
36 // Shortcut: in the browser process, just return the main app bundle. 40 // Shortcut: in the browser process, just return the main app bundle.
37 return [[NSBundle mainBundle] retain]; 41 return [[NSBundle mainBundle] retain];
38 } 42 }
39 43
40 // From C.app/Contents/Versions/1.2.3.4, go up three steps to get to C.app. 44 // From C.app/Contents/Versions/1.2.3.4, go up three steps to get to C.app.
41 FilePath versioned_dir = chrome::GetVersionedDirectory(); 45 FilePath versioned_dir = chrome::GetVersionedDirectory();
42 FilePath outer_app_dir = versioned_dir.DirName().DirName().DirName(); 46 FilePath outer_app_dir = versioned_dir.DirName().DirName().DirName();
43 const char* outer_app_dir_c = outer_app_dir.value().c_str(); 47 const char* outer_app_dir_c = outer_app_dir.value().c_str();
44 NSString* outer_app_dir_ns = [NSString stringWithUTF8String:outer_app_dir_c]; 48 NSString* outer_app_dir_ns = [NSString stringWithUTF8String:outer_app_dir_c];
45 49
46 return [[NSBundle bundleWithPath:outer_app_dir_ns] retain]; 50 return [[NSBundle bundleWithPath:outer_app_dir_ns] retain];
47 } 51 }
52 #endif // !defined(OS_IOS)
48 53
49 const char* ProductDirNameInternal() { 54 const char* ProductDirNameInternal() {
55 const char* product_dir_name = NULL;
56 #if !defined(OS_IOS)
50 base::mac::ScopedNSAutoreleasePool pool; 57 base::mac::ScopedNSAutoreleasePool pool;
51 58
52 // Use OuterAppBundle() to get the main app's bundle. This key needs to live 59 // Use OuterAppBundle() to get the main app's bundle. This key needs to live
53 // in the main app's bundle because it will be set differently on the canary 60 // in the main app's bundle because it will be set differently on the canary
54 // channel, and the autoupdate system dictates that there can be no 61 // channel, and the autoupdate system dictates that there can be no
55 // differences between channels within the versioned directory. This would 62 // differences between channels within the versioned directory. This would
56 // normally use base::mac::FrameworkBundle(), but that references the 63 // normally use base::mac::FrameworkBundle(), but that references the
57 // framework bundle within the versioned directory. Ordinarily, the profile 64 // framework bundle within the versioned directory. Ordinarily, the profile
58 // should not be accessed from non-browser processes, but those processes do 65 // should not be accessed from non-browser processes, but those processes do
59 // attempt to get the profile directory, so direct them to look in the outer 66 // attempt to get the profile directory, so direct them to look in the outer
60 // browser .app's Info.plist for the CrProductDirName key. 67 // browser .app's Info.plist for the CrProductDirName key.
61 NSBundle* bundle = chrome::OuterAppBundle(); 68 NSBundle* bundle = chrome::OuterAppBundle();
62 NSString* product_dir_name_ns = 69 NSString* product_dir_name_ns =
63 [bundle objectForInfoDictionaryKey:@"CrProductDirName"]; 70 [bundle objectForInfoDictionaryKey:@"CrProductDirName"];
64 const char* product_dir_name = [product_dir_name_ns fileSystemRepresentation]; 71 product_dir_name = [product_dir_name_ns fileSystemRepresentation];
72 #endif
65 73
66 if (!product_dir_name) { 74 if (!product_dir_name) {
67 #if defined(GOOGLE_CHROME_BUILD) 75 #if defined(GOOGLE_CHROME_BUILD)
68 product_dir_name = "Google/Chrome"; 76 product_dir_name = "Google/Chrome";
69 #else 77 #else
70 product_dir_name = "Chromium"; 78 product_dir_name = "Chromium";
71 #endif 79 #endif
72 } 80 }
73 81
74 // Leaked, but the only caller initializes a static with this result, so it 82 // Leaked, but the only caller initializes a static with this result, so it
(...skipping 23 matching lines...) Expand all
98 *result = result->Append(ProductDirName()); 106 *result = result->Append(ProductDirName());
99 success = true; 107 success = true;
100 } 108 }
101 return success; 109 return success;
102 } 110 }
103 111
104 bool GetUserDocumentsDirectory(FilePath* result) { 112 bool GetUserDocumentsDirectory(FilePath* result) {
105 return base::mac::GetUserDirectory(NSDocumentDirectory, result); 113 return base::mac::GetUserDirectory(NSDocumentDirectory, result);
106 } 114 }
107 115
108 bool GetGlobalApplicationSupportDirectory(FilePath* result) {
109 return base::mac::GetLocalDirectory(NSApplicationSupportDirectory, result);
110 }
111
112 void GetUserCacheDirectory(const FilePath& profile_dir, FilePath* result) { 116 void GetUserCacheDirectory(const FilePath& profile_dir, FilePath* result) {
113 // If the profile directory is under ~/Library/Application Support, 117 // If the profile directory is under ~/Library/Application Support,
114 // use a suitable cache directory under ~/Library/Caches. For 118 // use a suitable cache directory under ~/Library/Caches. For
115 // example, a profile directory of ~/Library/Application 119 // example, a profile directory of ~/Library/Application
116 // Support/Google/Chrome/MyProfileName would use the cache directory 120 // Support/Google/Chrome/MyProfileName would use the cache directory
117 // ~/Library/Caches/Google/Chrome/MyProfileName. 121 // ~/Library/Caches/Google/Chrome/MyProfileName.
118 122
119 // Default value in cases where any of the following fails. 123 // Default value in cases where any of the following fails.
120 *result = profile_dir; 124 *result = profile_dir;
121 125
(...skipping 18 matching lines...) Expand all
140 } 144 }
141 145
142 bool GetUserPicturesDirectory(FilePath* result) { 146 bool GetUserPicturesDirectory(FilePath* result) {
143 return base::mac::GetUserDirectory(NSPicturesDirectory, result); 147 return base::mac::GetUserDirectory(NSPicturesDirectory, result);
144 } 148 }
145 149
146 bool GetUserVideosDirectory(FilePath* result) { 150 bool GetUserVideosDirectory(FilePath* result) {
147 return base::mac::GetUserDirectory(NSMoviesDirectory, result); 151 return base::mac::GetUserDirectory(NSMoviesDirectory, result);
148 } 152 }
149 153
154 #if !defined(OS_IOS)
155
150 FilePath GetVersionedDirectory() { 156 FilePath GetVersionedDirectory() {
151 if (g_override_versioned_directory) 157 if (g_override_versioned_directory)
152 return *g_override_versioned_directory; 158 return *g_override_versioned_directory;
153 159
154 // Start out with the path to the running executable. 160 // Start out with the path to the running executable.
155 FilePath path; 161 FilePath path;
156 PathService::Get(base::FILE_EXE, &path); 162 PathService::Get(base::FILE_EXE, &path);
157 163
158 // One step up to MacOS, another to Contents. 164 // One step up to MacOS, another to Contents.
159 path = path.DirName().DirName(); 165 path = path.DirName().DirName();
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 199
194 // The framework bundle is at a known path and name from the browser .app's 200 // The framework bundle is at a known path and name from the browser .app's
195 // versioned directory. 201 // versioned directory.
196 return GetVersionedDirectory().Append(kFrameworkName); 202 return GetVersionedDirectory().Append(kFrameworkName);
197 } 203 }
198 204
199 bool GetLocalLibraryDirectory(FilePath* result) { 205 bool GetLocalLibraryDirectory(FilePath* result) {
200 return base::mac::GetLocalDirectory(NSLibraryDirectory, result); 206 return base::mac::GetLocalDirectory(NSLibraryDirectory, result);
201 } 207 }
202 208
209 bool GetGlobalApplicationSupportDirectory(FilePath* result) {
210 return base::mac::GetLocalDirectory(NSApplicationSupportDirectory, result);
211 }
212
203 NSBundle* OuterAppBundle() { 213 NSBundle* OuterAppBundle() {
204 // Cache this. Foundation leaks it anyway, and this should be the only call 214 // Cache this. Foundation leaks it anyway, and this should be the only call
205 // to OuterAppBundleInternal(). 215 // to OuterAppBundleInternal().
206 static NSBundle* bundle = OuterAppBundleInternal(); 216 static NSBundle* bundle = OuterAppBundleInternal();
207 return bundle; 217 return bundle;
208 } 218 }
209 219
220 #endif // !defined(OS_IOS)
221
210 bool ProcessNeedsProfileDir(const std::string& process_type) { 222 bool ProcessNeedsProfileDir(const std::string& process_type) {
211 // For now we have no reason to forbid this on other MacOS as we don't 223 // For now we have no reason to forbid this on other MacOS as we don't
212 // have the roaming profile troubles there. 224 // have the roaming profile troubles there.
213 return true; 225 return true;
214 } 226 }
215 227
216 } // namespace chrome 228 } // namespace chrome
OLDNEW
« no previous file with comments | « chrome/common/chrome_paths_internal.h ('k') | chrome/common/chrome_version_info_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698