OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/browser/platform_util.h" | 5 #include "chrome/browser/platform_util.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 const int kTestFileDataLength = arraysize(kTestFileData) - 1; | 150 const int kTestFileDataLength = arraysize(kTestFileData) - 1; |
151 | 151 |
152 // This prevents platfrom_util from invoking any shell or external APIs | 152 // This prevents platfrom_util from invoking any shell or external APIs |
153 // during tests. Doing so may result in external applications being launched | 153 // during tests. Doing so may result in external applications being launched |
154 // and intefering with tests. | 154 // and intefering with tests. |
155 internal::DisableShellOperationsForTesting(); | 155 internal::DisableShellOperationsForTesting(); |
156 | 156 |
157 ASSERT_TRUE(directory_.CreateUniqueTempDir()); | 157 ASSERT_TRUE(directory_.CreateUniqueTempDir()); |
158 | 158 |
159 // A valid file. | 159 // A valid file. |
160 existing_file_ = directory_.path().AppendASCII("test_file.txt"); | 160 existing_file_ = directory_.GetPath().AppendASCII("test_file.txt"); |
161 ASSERT_EQ( | 161 ASSERT_EQ( |
162 kTestFileDataLength, | 162 kTestFileDataLength, |
163 base::WriteFile(existing_file_, kTestFileData, kTestFileDataLength)); | 163 base::WriteFile(existing_file_, kTestFileData, kTestFileDataLength)); |
164 | 164 |
165 // A valid folder. | 165 // A valid folder. |
166 existing_folder_ = directory_.path().AppendASCII("test_folder"); | 166 existing_folder_ = directory_.GetPath().AppendASCII("test_folder"); |
167 ASSERT_TRUE(base::CreateDirectory(existing_folder_)); | 167 ASSERT_TRUE(base::CreateDirectory(existing_folder_)); |
168 | 168 |
169 // A non-existent path. | 169 // A non-existent path. |
170 nowhere_ = directory_.path().AppendASCII("nowhere"); | 170 nowhere_ = directory_.GetPath().AppendASCII("nowhere"); |
171 | 171 |
172 SetUpPlatformFixture(directory_.path()); | 172 SetUpPlatformFixture(directory_.GetPath()); |
173 } | 173 } |
174 | 174 |
175 OpenOperationResult CallOpenItem(const base::FilePath& path, | 175 OpenOperationResult CallOpenItem(const base::FilePath& path, |
176 OpenItemType item_type) { | 176 OpenItemType item_type) { |
177 base::RunLoop run_loop; | 177 base::RunLoop run_loop; |
178 OpenOperationResult result = OPEN_SUCCEEDED; | 178 OpenOperationResult result = OPEN_SUCCEEDED; |
179 OpenOperationCallback callback = | 179 OpenOperationCallback callback = |
180 base::Bind(&OnOpenOperationDone, run_loop.QuitClosure(), &result); | 180 base::Bind(&OnOpenOperationDone, run_loop.QuitClosure(), &result); |
181 OpenItem(GetProfile(), path, item_type, callback); | 181 OpenItem(GetProfile(), path, item_type, callback); |
182 run_loop.Run(); | 182 run_loop.Run(); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
218 } | 218 } |
219 | 219 |
220 #if defined(OS_POSIX) | 220 #if defined(OS_POSIX) |
221 // Symbolic links are currently only supported on Posix. Windows technically | 221 // Symbolic links are currently only supported on Posix. Windows technically |
222 // supports it as well, but not on Windows XP. | 222 // supports it as well, but not on Windows XP. |
223 class PlatformUtilPosixTest : public PlatformUtilTest { | 223 class PlatformUtilPosixTest : public PlatformUtilTest { |
224 public: | 224 public: |
225 void SetUp() override { | 225 void SetUp() override { |
226 ASSERT_NO_FATAL_FAILURE(PlatformUtilTest::SetUp()); | 226 ASSERT_NO_FATAL_FAILURE(PlatformUtilTest::SetUp()); |
227 | 227 |
228 symlink_to_file_ = directory_.path().AppendASCII("l_file.txt"); | 228 symlink_to_file_ = directory_.GetPath().AppendASCII("l_file.txt"); |
229 ASSERT_TRUE(base::CreateSymbolicLink(existing_file_, symlink_to_file_)); | 229 ASSERT_TRUE(base::CreateSymbolicLink(existing_file_, symlink_to_file_)); |
230 symlink_to_folder_ = directory_.path().AppendASCII("l_folder"); | 230 symlink_to_folder_ = directory_.GetPath().AppendASCII("l_folder"); |
231 ASSERT_TRUE(base::CreateSymbolicLink(existing_folder_, symlink_to_folder_)); | 231 ASSERT_TRUE(base::CreateSymbolicLink(existing_folder_, symlink_to_folder_)); |
232 symlink_to_nowhere_ = directory_.path().AppendASCII("l_nowhere"); | 232 symlink_to_nowhere_ = directory_.GetPath().AppendASCII("l_nowhere"); |
233 ASSERT_TRUE(base::CreateSymbolicLink(nowhere_, symlink_to_nowhere_)); | 233 ASSERT_TRUE(base::CreateSymbolicLink(nowhere_, symlink_to_nowhere_)); |
234 } | 234 } |
235 | 235 |
236 protected: | 236 protected: |
237 base::FilePath symlink_to_file_; | 237 base::FilePath symlink_to_file_; |
238 base::FilePath symlink_to_folder_; | 238 base::FilePath symlink_to_folder_; |
239 base::FilePath symlink_to_nowhere_; | 239 base::FilePath symlink_to_nowhere_; |
240 }; | 240 }; |
241 #endif // OS_POSIX | 241 #endif // OS_POSIX |
242 | 242 |
(...skipping 14 matching lines...) Expand all Loading... |
257 EXPECT_EQ(OPEN_FAILED_PATH_NOT_FOUND, | 257 EXPECT_EQ(OPEN_FAILED_PATH_NOT_FOUND, |
258 CallOpenItem(symlink_to_folder_, OPEN_FOLDER)); | 258 CallOpenItem(symlink_to_folder_, OPEN_FOLDER)); |
259 EXPECT_EQ(OPEN_FAILED_PATH_NOT_FOUND, | 259 EXPECT_EQ(OPEN_FAILED_PATH_NOT_FOUND, |
260 CallOpenItem(symlink_to_file_, OPEN_FOLDER)); | 260 CallOpenItem(symlink_to_file_, OPEN_FOLDER)); |
261 EXPECT_EQ(OPEN_FAILED_PATH_NOT_FOUND, | 261 EXPECT_EQ(OPEN_FAILED_PATH_NOT_FOUND, |
262 CallOpenItem(symlink_to_nowhere_, OPEN_FOLDER)); | 262 CallOpenItem(symlink_to_nowhere_, OPEN_FOLDER)); |
263 } | 263 } |
264 | 264 |
265 TEST_F(PlatformUtilTest, OpenFileWithUnhandledFileType) { | 265 TEST_F(PlatformUtilTest, OpenFileWithUnhandledFileType) { |
266 base::FilePath unhandled_file = | 266 base::FilePath unhandled_file = |
267 directory_.path().AppendASCII("myfile.filetype"); | 267 directory_.GetPath().AppendASCII("myfile.filetype"); |
268 ASSERT_EQ(3, base::WriteFile(unhandled_file, "cat", 3)); | 268 ASSERT_EQ(3, base::WriteFile(unhandled_file, "cat", 3)); |
269 EXPECT_EQ(OPEN_FAILED_NO_HANLDER_FOR_FILE_TYPE, | 269 EXPECT_EQ(OPEN_FAILED_NO_HANLDER_FOR_FILE_TYPE, |
270 CallOpenItem(unhandled_file, OPEN_FILE)); | 270 CallOpenItem(unhandled_file, OPEN_FILE)); |
271 } | 271 } |
272 #endif // OS_CHROMEOS | 272 #endif // OS_CHROMEOS |
273 | 273 |
274 #if defined(OS_POSIX) && !defined(OS_CHROMEOS) | 274 #if defined(OS_POSIX) && !defined(OS_CHROMEOS) |
275 // On all other Posix platforms, the symbolic link tests should work as | 275 // On all other Posix platforms, the symbolic link tests should work as |
276 // expected. | 276 // expected. |
277 | 277 |
278 TEST_F(PlatformUtilPosixTest, OpenFileWithPosixSymlinks) { | 278 TEST_F(PlatformUtilPosixTest, OpenFileWithPosixSymlinks) { |
279 EXPECT_EQ(OPEN_SUCCEEDED, CallOpenItem(symlink_to_file_, OPEN_FILE)); | 279 EXPECT_EQ(OPEN_SUCCEEDED, CallOpenItem(symlink_to_file_, OPEN_FILE)); |
280 EXPECT_EQ(OPEN_FAILED_INVALID_TYPE, | 280 EXPECT_EQ(OPEN_FAILED_INVALID_TYPE, |
281 CallOpenItem(symlink_to_folder_, OPEN_FILE)); | 281 CallOpenItem(symlink_to_folder_, OPEN_FILE)); |
282 EXPECT_EQ(OPEN_FAILED_PATH_NOT_FOUND, | 282 EXPECT_EQ(OPEN_FAILED_PATH_NOT_FOUND, |
283 CallOpenItem(symlink_to_nowhere_, OPEN_FILE)); | 283 CallOpenItem(symlink_to_nowhere_, OPEN_FILE)); |
284 } | 284 } |
285 | 285 |
286 TEST_F(PlatformUtilPosixTest, OpenFolderWithPosixSymlinks) { | 286 TEST_F(PlatformUtilPosixTest, OpenFolderWithPosixSymlinks) { |
287 EXPECT_EQ(OPEN_SUCCEEDED, CallOpenItem(symlink_to_folder_, OPEN_FOLDER)); | 287 EXPECT_EQ(OPEN_SUCCEEDED, CallOpenItem(symlink_to_folder_, OPEN_FOLDER)); |
288 EXPECT_EQ(OPEN_FAILED_INVALID_TYPE, | 288 EXPECT_EQ(OPEN_FAILED_INVALID_TYPE, |
289 CallOpenItem(symlink_to_file_, OPEN_FOLDER)); | 289 CallOpenItem(symlink_to_file_, OPEN_FOLDER)); |
290 EXPECT_EQ(OPEN_FAILED_PATH_NOT_FOUND, | 290 EXPECT_EQ(OPEN_FAILED_PATH_NOT_FOUND, |
291 CallOpenItem(symlink_to_nowhere_, OPEN_FOLDER)); | 291 CallOpenItem(symlink_to_nowhere_, OPEN_FOLDER)); |
292 } | 292 } |
293 #endif // OS_POSIX && !OS_CHROMEOS | 293 #endif // OS_POSIX && !OS_CHROMEOS |
294 | 294 |
295 } // namespace platform_util | 295 } // namespace platform_util |
OLD | NEW |