1*635a8641SAndroid Build Coastguard Worker // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2*635a8641SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file.
4*635a8641SAndroid Build Coastguard Worker
5*635a8641SAndroid Build Coastguard Worker #include "base/path_service.h"
6*635a8641SAndroid Build Coastguard Worker
7*635a8641SAndroid Build Coastguard Worker #include "base/files/file_path.h"
8*635a8641SAndroid Build Coastguard Worker #include "base/files/file_util.h"
9*635a8641SAndroid Build Coastguard Worker #include "base/files/scoped_temp_dir.h"
10*635a8641SAndroid Build Coastguard Worker #include "base/strings/string_util.h"
11*635a8641SAndroid Build Coastguard Worker #include "build/build_config.h"
12*635a8641SAndroid Build Coastguard Worker #include "testing/gtest/include/gtest/gtest-spi.h"
13*635a8641SAndroid Build Coastguard Worker #include "testing/gtest/include/gtest/gtest.h"
14*635a8641SAndroid Build Coastguard Worker #include "testing/platform_test.h"
15*635a8641SAndroid Build Coastguard Worker
16*635a8641SAndroid Build Coastguard Worker #if defined(OS_WIN)
17*635a8641SAndroid Build Coastguard Worker #include "base/win/windows_version.h"
18*635a8641SAndroid Build Coastguard Worker #endif
19*635a8641SAndroid Build Coastguard Worker
20*635a8641SAndroid Build Coastguard Worker namespace base {
21*635a8641SAndroid Build Coastguard Worker
22*635a8641SAndroid Build Coastguard Worker namespace {
23*635a8641SAndroid Build Coastguard Worker
24*635a8641SAndroid Build Coastguard Worker // Returns true if PathService::Get returns true and sets the path parameter
25*635a8641SAndroid Build Coastguard Worker // to non-empty for the given PathService::DirType enumeration value.
ReturnsValidPath(int dir_type)26*635a8641SAndroid Build Coastguard Worker bool ReturnsValidPath(int dir_type) {
27*635a8641SAndroid Build Coastguard Worker FilePath path;
28*635a8641SAndroid Build Coastguard Worker bool result = PathService::Get(dir_type, &path);
29*635a8641SAndroid Build Coastguard Worker
30*635a8641SAndroid Build Coastguard Worker // Some paths might not exist on some platforms in which case confirming
31*635a8641SAndroid Build Coastguard Worker // |result| is true and !path.empty() is the best we can do.
32*635a8641SAndroid Build Coastguard Worker bool check_path_exists = true;
33*635a8641SAndroid Build Coastguard Worker #if defined(OS_POSIX)
34*635a8641SAndroid Build Coastguard Worker // If chromium has never been started on this account, the cache path may not
35*635a8641SAndroid Build Coastguard Worker // exist.
36*635a8641SAndroid Build Coastguard Worker if (dir_type == DIR_CACHE)
37*635a8641SAndroid Build Coastguard Worker check_path_exists = false;
38*635a8641SAndroid Build Coastguard Worker #endif
39*635a8641SAndroid Build Coastguard Worker #if defined(OS_LINUX)
40*635a8641SAndroid Build Coastguard Worker // On the linux try-bots: a path is returned (e.g. /home/chrome-bot/Desktop),
41*635a8641SAndroid Build Coastguard Worker // but it doesn't exist.
42*635a8641SAndroid Build Coastguard Worker if (dir_type == DIR_USER_DESKTOP)
43*635a8641SAndroid Build Coastguard Worker check_path_exists = false;
44*635a8641SAndroid Build Coastguard Worker #endif
45*635a8641SAndroid Build Coastguard Worker #if defined(OS_IOS)
46*635a8641SAndroid Build Coastguard Worker // Bundled unittests on iOS may not have Resources directory in the bundle.
47*635a8641SAndroid Build Coastguard Worker if (dir_type == DIR_ASSETS)
48*635a8641SAndroid Build Coastguard Worker check_path_exists = false;
49*635a8641SAndroid Build Coastguard Worker #endif
50*635a8641SAndroid Build Coastguard Worker #if defined(OS_MACOSX)
51*635a8641SAndroid Build Coastguard Worker if (dir_type != DIR_EXE && dir_type != DIR_MODULE && dir_type != FILE_EXE &&
52*635a8641SAndroid Build Coastguard Worker dir_type != FILE_MODULE) {
53*635a8641SAndroid Build Coastguard Worker if (path.ReferencesParent())
54*635a8641SAndroid Build Coastguard Worker return false;
55*635a8641SAndroid Build Coastguard Worker }
56*635a8641SAndroid Build Coastguard Worker #else
57*635a8641SAndroid Build Coastguard Worker if (path.ReferencesParent())
58*635a8641SAndroid Build Coastguard Worker return false;
59*635a8641SAndroid Build Coastguard Worker #endif
60*635a8641SAndroid Build Coastguard Worker return result && !path.empty() && (!check_path_exists || PathExists(path));
61*635a8641SAndroid Build Coastguard Worker }
62*635a8641SAndroid Build Coastguard Worker
63*635a8641SAndroid Build Coastguard Worker #if defined(OS_WIN)
64*635a8641SAndroid Build Coastguard Worker // Function to test any directory keys that are not supported on some versions
65*635a8641SAndroid Build Coastguard Worker // of Windows. Checks that the function fails and that the returned path is
66*635a8641SAndroid Build Coastguard Worker // empty.
ReturnsInvalidPath(int dir_type)67*635a8641SAndroid Build Coastguard Worker bool ReturnsInvalidPath(int dir_type) {
68*635a8641SAndroid Build Coastguard Worker FilePath path;
69*635a8641SAndroid Build Coastguard Worker bool result = PathService::Get(dir_type, &path);
70*635a8641SAndroid Build Coastguard Worker return !result && path.empty();
71*635a8641SAndroid Build Coastguard Worker }
72*635a8641SAndroid Build Coastguard Worker #endif
73*635a8641SAndroid Build Coastguard Worker
74*635a8641SAndroid Build Coastguard Worker } // namespace
75*635a8641SAndroid Build Coastguard Worker
76*635a8641SAndroid Build Coastguard Worker // On the Mac this winds up using some autoreleased objects, so we need to
77*635a8641SAndroid Build Coastguard Worker // be a PlatformTest.
78*635a8641SAndroid Build Coastguard Worker typedef PlatformTest PathServiceTest;
79*635a8641SAndroid Build Coastguard Worker
80*635a8641SAndroid Build Coastguard Worker // Test that all PathService::Get calls return a value and a true result
81*635a8641SAndroid Build Coastguard Worker // in the development environment. (This test was created because a few
82*635a8641SAndroid Build Coastguard Worker // later changes to Get broke the semantics of the function and yielded the
83*635a8641SAndroid Build Coastguard Worker // correct value while returning false.)
TEST_F(PathServiceTest,Get)84*635a8641SAndroid Build Coastguard Worker TEST_F(PathServiceTest, Get) {
85*635a8641SAndroid Build Coastguard Worker for (int key = PATH_START + 1; key < PATH_END; ++key) {
86*635a8641SAndroid Build Coastguard Worker #if defined(OS_ANDROID)
87*635a8641SAndroid Build Coastguard Worker if (key == FILE_MODULE || key == DIR_USER_DESKTOP ||
88*635a8641SAndroid Build Coastguard Worker key == DIR_HOME)
89*635a8641SAndroid Build Coastguard Worker continue; // Android doesn't implement these.
90*635a8641SAndroid Build Coastguard Worker #elif defined(OS_IOS)
91*635a8641SAndroid Build Coastguard Worker if (key == DIR_USER_DESKTOP)
92*635a8641SAndroid Build Coastguard Worker continue; // iOS doesn't implement DIR_USER_DESKTOP.
93*635a8641SAndroid Build Coastguard Worker #elif defined(OS_FUCHSIA)
94*635a8641SAndroid Build Coastguard Worker if (key == DIR_USER_DESKTOP || key == FILE_MODULE || key == DIR_MODULE)
95*635a8641SAndroid Build Coastguard Worker continue; // Fuchsia doesn't implement DIR_USER_DESKTOP, FILE_MODULE and
96*635a8641SAndroid Build Coastguard Worker // DIR_MODULE.
97*635a8641SAndroid Build Coastguard Worker #endif
98*635a8641SAndroid Build Coastguard Worker EXPECT_PRED1(ReturnsValidPath, key);
99*635a8641SAndroid Build Coastguard Worker }
100*635a8641SAndroid Build Coastguard Worker #if defined(OS_WIN)
101*635a8641SAndroid Build Coastguard Worker for (int key = PATH_WIN_START + 1; key < PATH_WIN_END; ++key) {
102*635a8641SAndroid Build Coastguard Worker bool valid = true;
103*635a8641SAndroid Build Coastguard Worker if (key == DIR_APP_SHORTCUTS)
104*635a8641SAndroid Build Coastguard Worker valid = base::win::GetVersion() >= base::win::VERSION_WIN8;
105*635a8641SAndroid Build Coastguard Worker
106*635a8641SAndroid Build Coastguard Worker if (valid)
107*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(ReturnsValidPath(key)) << key;
108*635a8641SAndroid Build Coastguard Worker else
109*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(ReturnsInvalidPath(key)) << key;
110*635a8641SAndroid Build Coastguard Worker }
111*635a8641SAndroid Build Coastguard Worker #elif defined(OS_MACOSX)
112*635a8641SAndroid Build Coastguard Worker for (int key = PATH_MAC_START + 1; key < PATH_MAC_END; ++key) {
113*635a8641SAndroid Build Coastguard Worker EXPECT_PRED1(ReturnsValidPath, key);
114*635a8641SAndroid Build Coastguard Worker }
115*635a8641SAndroid Build Coastguard Worker #elif defined(OS_ANDROID)
116*635a8641SAndroid Build Coastguard Worker for (int key = PATH_ANDROID_START + 1; key < PATH_ANDROID_END;
117*635a8641SAndroid Build Coastguard Worker ++key) {
118*635a8641SAndroid Build Coastguard Worker EXPECT_PRED1(ReturnsValidPath, key);
119*635a8641SAndroid Build Coastguard Worker }
120*635a8641SAndroid Build Coastguard Worker #elif defined(OS_POSIX)
121*635a8641SAndroid Build Coastguard Worker for (int key = PATH_POSIX_START + 1; key < PATH_POSIX_END;
122*635a8641SAndroid Build Coastguard Worker ++key) {
123*635a8641SAndroid Build Coastguard Worker EXPECT_PRED1(ReturnsValidPath, key);
124*635a8641SAndroid Build Coastguard Worker }
125*635a8641SAndroid Build Coastguard Worker #endif
126*635a8641SAndroid Build Coastguard Worker }
127*635a8641SAndroid Build Coastguard Worker
128*635a8641SAndroid Build Coastguard Worker // Test that all versions of the Override function of PathService do what they
129*635a8641SAndroid Build Coastguard Worker // are supposed to do.
TEST_F(PathServiceTest,Override)130*635a8641SAndroid Build Coastguard Worker TEST_F(PathServiceTest, Override) {
131*635a8641SAndroid Build Coastguard Worker int my_special_key = 666;
132*635a8641SAndroid Build Coastguard Worker ScopedTempDir temp_dir;
133*635a8641SAndroid Build Coastguard Worker ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
134*635a8641SAndroid Build Coastguard Worker FilePath fake_cache_dir(temp_dir.GetPath().AppendASCII("cache"));
135*635a8641SAndroid Build Coastguard Worker // PathService::Override should always create the path provided if it doesn't
136*635a8641SAndroid Build Coastguard Worker // exist.
137*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathService::Override(my_special_key, fake_cache_dir));
138*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathExists(fake_cache_dir));
139*635a8641SAndroid Build Coastguard Worker
140*635a8641SAndroid Build Coastguard Worker FilePath fake_cache_dir2(temp_dir.GetPath().AppendASCII("cache2"));
141*635a8641SAndroid Build Coastguard Worker // PathService::OverrideAndCreateIfNeeded should obey the |create| parameter.
142*635a8641SAndroid Build Coastguard Worker PathService::OverrideAndCreateIfNeeded(my_special_key,
143*635a8641SAndroid Build Coastguard Worker fake_cache_dir2,
144*635a8641SAndroid Build Coastguard Worker false,
145*635a8641SAndroid Build Coastguard Worker false);
146*635a8641SAndroid Build Coastguard Worker EXPECT_FALSE(PathExists(fake_cache_dir2));
147*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathService::OverrideAndCreateIfNeeded(my_special_key,
148*635a8641SAndroid Build Coastguard Worker fake_cache_dir2,
149*635a8641SAndroid Build Coastguard Worker false,
150*635a8641SAndroid Build Coastguard Worker true));
151*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathExists(fake_cache_dir2));
152*635a8641SAndroid Build Coastguard Worker
153*635a8641SAndroid Build Coastguard Worker #if defined(OS_POSIX)
154*635a8641SAndroid Build Coastguard Worker FilePath non_existent(
155*635a8641SAndroid Build Coastguard Worker MakeAbsoluteFilePath(temp_dir.GetPath()).AppendASCII("non_existent"));
156*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(non_existent.IsAbsolute());
157*635a8641SAndroid Build Coastguard Worker EXPECT_FALSE(PathExists(non_existent));
158*635a8641SAndroid Build Coastguard Worker #if !defined(OS_ANDROID)
159*635a8641SAndroid Build Coastguard Worker // This fails because MakeAbsoluteFilePath fails for non-existent files.
160*635a8641SAndroid Build Coastguard Worker // Earlier versions of Bionic libc don't fail for non-existent files, so
161*635a8641SAndroid Build Coastguard Worker // skip this check on Android.
162*635a8641SAndroid Build Coastguard Worker EXPECT_FALSE(PathService::OverrideAndCreateIfNeeded(my_special_key,
163*635a8641SAndroid Build Coastguard Worker non_existent,
164*635a8641SAndroid Build Coastguard Worker false,
165*635a8641SAndroid Build Coastguard Worker false));
166*635a8641SAndroid Build Coastguard Worker #endif
167*635a8641SAndroid Build Coastguard Worker // This works because indicating that |non_existent| is absolute skips the
168*635a8641SAndroid Build Coastguard Worker // internal MakeAbsoluteFilePath call.
169*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathService::OverrideAndCreateIfNeeded(my_special_key,
170*635a8641SAndroid Build Coastguard Worker non_existent,
171*635a8641SAndroid Build Coastguard Worker true,
172*635a8641SAndroid Build Coastguard Worker false));
173*635a8641SAndroid Build Coastguard Worker // Check that the path has been overridden and no directory was created.
174*635a8641SAndroid Build Coastguard Worker EXPECT_FALSE(PathExists(non_existent));
175*635a8641SAndroid Build Coastguard Worker FilePath path;
176*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathService::Get(my_special_key, &path));
177*635a8641SAndroid Build Coastguard Worker EXPECT_EQ(non_existent, path);
178*635a8641SAndroid Build Coastguard Worker #endif
179*635a8641SAndroid Build Coastguard Worker }
180*635a8641SAndroid Build Coastguard Worker
181*635a8641SAndroid Build Coastguard Worker // Check if multiple overrides can co-exist.
TEST_F(PathServiceTest,OverrideMultiple)182*635a8641SAndroid Build Coastguard Worker TEST_F(PathServiceTest, OverrideMultiple) {
183*635a8641SAndroid Build Coastguard Worker int my_special_key = 666;
184*635a8641SAndroid Build Coastguard Worker ScopedTempDir temp_dir;
185*635a8641SAndroid Build Coastguard Worker ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
186*635a8641SAndroid Build Coastguard Worker FilePath fake_cache_dir1(temp_dir.GetPath().AppendASCII("1"));
187*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathService::Override(my_special_key, fake_cache_dir1));
188*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathExists(fake_cache_dir1));
189*635a8641SAndroid Build Coastguard Worker ASSERT_EQ(1, WriteFile(fake_cache_dir1.AppendASCII("t1"), ".", 1));
190*635a8641SAndroid Build Coastguard Worker
191*635a8641SAndroid Build Coastguard Worker FilePath fake_cache_dir2(temp_dir.GetPath().AppendASCII("2"));
192*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathService::Override(my_special_key + 1, fake_cache_dir2));
193*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathExists(fake_cache_dir2));
194*635a8641SAndroid Build Coastguard Worker ASSERT_EQ(1, WriteFile(fake_cache_dir2.AppendASCII("t2"), ".", 1));
195*635a8641SAndroid Build Coastguard Worker
196*635a8641SAndroid Build Coastguard Worker FilePath result;
197*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathService::Get(my_special_key, &result));
198*635a8641SAndroid Build Coastguard Worker // Override might have changed the path representation but our test file
199*635a8641SAndroid Build Coastguard Worker // should be still there.
200*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathExists(result.AppendASCII("t1")));
201*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathService::Get(my_special_key + 1, &result));
202*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathExists(result.AppendASCII("t2")));
203*635a8641SAndroid Build Coastguard Worker }
204*635a8641SAndroid Build Coastguard Worker
TEST_F(PathServiceTest,RemoveOverride)205*635a8641SAndroid Build Coastguard Worker TEST_F(PathServiceTest, RemoveOverride) {
206*635a8641SAndroid Build Coastguard Worker // Before we start the test we have to call RemoveOverride at least once to
207*635a8641SAndroid Build Coastguard Worker // clear any overrides that might have been left from other tests.
208*635a8641SAndroid Build Coastguard Worker PathService::RemoveOverride(DIR_TEMP);
209*635a8641SAndroid Build Coastguard Worker
210*635a8641SAndroid Build Coastguard Worker FilePath original_user_data_dir;
211*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathService::Get(DIR_TEMP, &original_user_data_dir));
212*635a8641SAndroid Build Coastguard Worker EXPECT_FALSE(PathService::RemoveOverride(DIR_TEMP));
213*635a8641SAndroid Build Coastguard Worker
214*635a8641SAndroid Build Coastguard Worker ScopedTempDir temp_dir;
215*635a8641SAndroid Build Coastguard Worker ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
216*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathService::Override(DIR_TEMP, temp_dir.GetPath()));
217*635a8641SAndroid Build Coastguard Worker FilePath new_user_data_dir;
218*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathService::Get(DIR_TEMP, &new_user_data_dir));
219*635a8641SAndroid Build Coastguard Worker EXPECT_NE(original_user_data_dir, new_user_data_dir);
220*635a8641SAndroid Build Coastguard Worker
221*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathService::RemoveOverride(DIR_TEMP));
222*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathService::Get(DIR_TEMP, &new_user_data_dir));
223*635a8641SAndroid Build Coastguard Worker EXPECT_EQ(original_user_data_dir, new_user_data_dir);
224*635a8641SAndroid Build Coastguard Worker }
225*635a8641SAndroid Build Coastguard Worker
226*635a8641SAndroid Build Coastguard Worker #if defined(OS_WIN)
TEST_F(PathServiceTest,GetProgramFiles)227*635a8641SAndroid Build Coastguard Worker TEST_F(PathServiceTest, GetProgramFiles) {
228*635a8641SAndroid Build Coastguard Worker FilePath programfiles_dir;
229*635a8641SAndroid Build Coastguard Worker #if defined(_WIN64)
230*635a8641SAndroid Build Coastguard Worker // 64-bit on 64-bit.
231*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathService::Get(DIR_PROGRAM_FILES,
232*635a8641SAndroid Build Coastguard Worker &programfiles_dir));
233*635a8641SAndroid Build Coastguard Worker EXPECT_EQ(programfiles_dir.value(),
234*635a8641SAndroid Build Coastguard Worker FILE_PATH_LITERAL("C:\\Program Files"));
235*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathService::Get(DIR_PROGRAM_FILESX86,
236*635a8641SAndroid Build Coastguard Worker &programfiles_dir));
237*635a8641SAndroid Build Coastguard Worker EXPECT_EQ(programfiles_dir.value(),
238*635a8641SAndroid Build Coastguard Worker FILE_PATH_LITERAL("C:\\Program Files (x86)"));
239*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathService::Get(DIR_PROGRAM_FILES6432,
240*635a8641SAndroid Build Coastguard Worker &programfiles_dir));
241*635a8641SAndroid Build Coastguard Worker EXPECT_EQ(programfiles_dir.value(),
242*635a8641SAndroid Build Coastguard Worker FILE_PATH_LITERAL("C:\\Program Files"));
243*635a8641SAndroid Build Coastguard Worker #else
244*635a8641SAndroid Build Coastguard Worker if (base::win::OSInfo::GetInstance()->wow64_status() ==
245*635a8641SAndroid Build Coastguard Worker base::win::OSInfo::WOW64_ENABLED) {
246*635a8641SAndroid Build Coastguard Worker // 32-bit on 64-bit.
247*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathService::Get(DIR_PROGRAM_FILES,
248*635a8641SAndroid Build Coastguard Worker &programfiles_dir));
249*635a8641SAndroid Build Coastguard Worker EXPECT_EQ(programfiles_dir.value(),
250*635a8641SAndroid Build Coastguard Worker FILE_PATH_LITERAL("C:\\Program Files (x86)"));
251*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathService::Get(DIR_PROGRAM_FILESX86,
252*635a8641SAndroid Build Coastguard Worker &programfiles_dir));
253*635a8641SAndroid Build Coastguard Worker EXPECT_EQ(programfiles_dir.value(),
254*635a8641SAndroid Build Coastguard Worker FILE_PATH_LITERAL("C:\\Program Files (x86)"));
255*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathService::Get(DIR_PROGRAM_FILES6432,
256*635a8641SAndroid Build Coastguard Worker &programfiles_dir));
257*635a8641SAndroid Build Coastguard Worker EXPECT_EQ(programfiles_dir.value(),
258*635a8641SAndroid Build Coastguard Worker FILE_PATH_LITERAL("C:\\Program Files"));
259*635a8641SAndroid Build Coastguard Worker } else {
260*635a8641SAndroid Build Coastguard Worker // 32-bit on 32-bit.
261*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathService::Get(DIR_PROGRAM_FILES,
262*635a8641SAndroid Build Coastguard Worker &programfiles_dir));
263*635a8641SAndroid Build Coastguard Worker EXPECT_EQ(programfiles_dir.value(),
264*635a8641SAndroid Build Coastguard Worker FILE_PATH_LITERAL("C:\\Program Files"));
265*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathService::Get(DIR_PROGRAM_FILESX86,
266*635a8641SAndroid Build Coastguard Worker &programfiles_dir));
267*635a8641SAndroid Build Coastguard Worker EXPECT_EQ(programfiles_dir.value(),
268*635a8641SAndroid Build Coastguard Worker FILE_PATH_LITERAL("C:\\Program Files"));
269*635a8641SAndroid Build Coastguard Worker EXPECT_TRUE(PathService::Get(DIR_PROGRAM_FILES6432,
270*635a8641SAndroid Build Coastguard Worker &programfiles_dir));
271*635a8641SAndroid Build Coastguard Worker EXPECT_EQ(programfiles_dir.value(),
272*635a8641SAndroid Build Coastguard Worker FILE_PATH_LITERAL("C:\\Program Files"));
273*635a8641SAndroid Build Coastguard Worker }
274*635a8641SAndroid Build Coastguard Worker #endif
275*635a8641SAndroid Build Coastguard Worker }
276*635a8641SAndroid Build Coastguard Worker #endif
277*635a8641SAndroid Build Coastguard Worker
278*635a8641SAndroid Build Coastguard Worker } // namespace base
279