OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "webkit/browser/fileapi/external_mount_points.h" | 5 #include "storage/browser/fileapi/external_mount_points.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
11 #include "webkit/browser/fileapi/file_system_url.h" | 11 #include "storage/browser/fileapi/file_system_url.h" |
12 | 12 |
13 #define FPL FILE_PATH_LITERAL | 13 #define FPL FILE_PATH_LITERAL |
14 | 14 |
15 #if defined(FILE_PATH_USES_DRIVE_LETTERS) | 15 #if defined(FILE_PATH_USES_DRIVE_LETTERS) |
16 #define DRIVE FPL("C:") | 16 #define DRIVE FPL("C:") |
17 #else | 17 #else |
18 #define DRIVE | 18 #define DRIVE |
19 #endif | 19 #endif |
20 | 20 |
21 using fileapi::FileSystemURL; | 21 using storage::FileSystemURL; |
22 | 22 |
23 namespace content { | 23 namespace content { |
24 | 24 |
25 TEST(ExternalMountPointsTest, AddMountPoint) { | 25 TEST(ExternalMountPointsTest, AddMountPoint) { |
26 scoped_refptr<fileapi::ExternalMountPoints> mount_points( | 26 scoped_refptr<storage::ExternalMountPoints> mount_points( |
27 fileapi::ExternalMountPoints::CreateRefCounted()); | 27 storage::ExternalMountPoints::CreateRefCounted()); |
28 | 28 |
29 struct TestCase { | 29 struct TestCase { |
30 // The mount point's name. | 30 // The mount point's name. |
31 const char* const name; | 31 const char* const name; |
32 // The mount point's path. | 32 // The mount point's path. |
33 const base::FilePath::CharType* const path; | 33 const base::FilePath::CharType* const path; |
34 // Whether the mount point registration should succeed. | 34 // Whether the mount point registration should succeed. |
35 bool success; | 35 bool success; |
36 // Path returned by GetRegisteredPath. NULL if the method is expected to | 36 // Path returned by GetRegisteredPath. NULL if the method is expected to |
37 // fail. | 37 // fail. |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 #else | 100 #else |
101 { "win", DRIVE FPL("\\separators\\win"), false, NULL }, | 101 { "win", DRIVE FPL("\\separators\\win"), false, NULL }, |
102 { "win1", DRIVE FPL("\\try/separators\\win1"), false, NULL }, | 102 { "win1", DRIVE FPL("\\try/separators\\win1"), false, NULL }, |
103 #endif | 103 #endif |
104 // Win separators, but relative path. | 104 // Win separators, but relative path. |
105 { "win2", DRIVE FPL("try\\separators\\win2"), false, NULL }, | 105 { "win2", DRIVE FPL("try\\separators\\win2"), false, NULL }, |
106 }; | 106 }; |
107 | 107 |
108 // Test adding mount points. | 108 // Test adding mount points. |
109 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestCases); ++i) { | 109 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestCases); ++i) { |
110 EXPECT_EQ(kTestCases[i].success, | 110 EXPECT_EQ( |
111 mount_points->RegisterFileSystem( | 111 kTestCases[i].success, |
112 kTestCases[i].name, | 112 mount_points->RegisterFileSystem(kTestCases[i].name, |
113 fileapi::kFileSystemTypeNativeLocal, | 113 storage::kFileSystemTypeNativeLocal, |
114 fileapi::FileSystemMountOption(), | 114 storage::FileSystemMountOption(), |
115 base::FilePath(kTestCases[i].path))) | 115 base::FilePath(kTestCases[i].path))) |
116 << "Adding mount point: " << kTestCases[i].name << " with path " | 116 << "Adding mount point: " << kTestCases[i].name << " with path " |
117 << kTestCases[i].path; | 117 << kTestCases[i].path; |
118 } | 118 } |
119 | 119 |
120 // Test that final mount point presence state is as expected. | 120 // Test that final mount point presence state is as expected. |
121 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestCases); ++i) { | 121 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestCases); ++i) { |
122 base::FilePath found_path; | 122 base::FilePath found_path; |
123 EXPECT_EQ(kTestCases[i].registered_path != NULL, | 123 EXPECT_EQ(kTestCases[i].registered_path != NULL, |
124 mount_points->GetRegisteredPath(kTestCases[i].name, &found_path)) | 124 mount_points->GetRegisteredPath(kTestCases[i].name, &found_path)) |
125 << "Test case: " << i; | 125 << "Test case: " << i; |
126 | 126 |
127 if (kTestCases[i].registered_path) { | 127 if (kTestCases[i].registered_path) { |
128 base::FilePath expected_path(kTestCases[i].registered_path); | 128 base::FilePath expected_path(kTestCases[i].registered_path); |
129 EXPECT_EQ(expected_path.NormalizePathSeparators(), found_path); | 129 EXPECT_EQ(expected_path.NormalizePathSeparators(), found_path); |
130 } | 130 } |
131 } | 131 } |
132 } | 132 } |
133 | 133 |
134 TEST(ExternalMountPointsTest, GetVirtualPath) { | 134 TEST(ExternalMountPointsTest, GetVirtualPath) { |
135 scoped_refptr<fileapi::ExternalMountPoints> mount_points( | 135 scoped_refptr<storage::ExternalMountPoints> mount_points( |
136 fileapi::ExternalMountPoints::CreateRefCounted()); | 136 storage::ExternalMountPoints::CreateRefCounted()); |
137 | 137 |
138 mount_points->RegisterFileSystem("c", | 138 mount_points->RegisterFileSystem("c", |
139 fileapi::kFileSystemTypeNativeLocal, | 139 storage::kFileSystemTypeNativeLocal, |
140 fileapi::FileSystemMountOption(), | 140 storage::FileSystemMountOption(), |
141 base::FilePath(DRIVE FPL("/a/b/c"))); | 141 base::FilePath(DRIVE FPL("/a/b/c"))); |
142 // Note that "/a/b/c" < "/a/b/c(1)" < "/a/b/c/". | 142 // Note that "/a/b/c" < "/a/b/c(1)" < "/a/b/c/". |
143 mount_points->RegisterFileSystem("c(1)", | 143 mount_points->RegisterFileSystem("c(1)", |
144 fileapi::kFileSystemTypeNativeLocal, | 144 storage::kFileSystemTypeNativeLocal, |
145 fileapi::FileSystemMountOption(), | 145 storage::FileSystemMountOption(), |
146 base::FilePath(DRIVE FPL("/a/b/c(1)"))); | 146 base::FilePath(DRIVE FPL("/a/b/c(1)"))); |
147 mount_points->RegisterFileSystem("x", | 147 mount_points->RegisterFileSystem("x", |
148 fileapi::kFileSystemTypeNativeLocal, | 148 storage::kFileSystemTypeNativeLocal, |
149 fileapi::FileSystemMountOption(), | 149 storage::FileSystemMountOption(), |
150 base::FilePath(DRIVE FPL("/z/y/x"))); | 150 base::FilePath(DRIVE FPL("/z/y/x"))); |
151 mount_points->RegisterFileSystem("o", | 151 mount_points->RegisterFileSystem("o", |
152 fileapi::kFileSystemTypeNativeLocal, | 152 storage::kFileSystemTypeNativeLocal, |
153 fileapi::FileSystemMountOption(), | 153 storage::FileSystemMountOption(), |
154 base::FilePath(DRIVE FPL("/m/n/o"))); | 154 base::FilePath(DRIVE FPL("/m/n/o"))); |
155 // A mount point whose name does not match its path base name. | 155 // A mount point whose name does not match its path base name. |
156 mount_points->RegisterFileSystem("mount", | 156 mount_points->RegisterFileSystem("mount", |
157 fileapi::kFileSystemTypeNativeLocal, | 157 storage::kFileSystemTypeNativeLocal, |
158 fileapi::FileSystemMountOption(), | 158 storage::FileSystemMountOption(), |
159 base::FilePath(DRIVE FPL("/root/foo"))); | 159 base::FilePath(DRIVE FPL("/root/foo"))); |
160 // A mount point with an empty path. | 160 // A mount point with an empty path. |
161 mount_points->RegisterFileSystem("empty_path", | 161 mount_points->RegisterFileSystem("empty_path", |
162 fileapi::kFileSystemTypeNativeLocal, | 162 storage::kFileSystemTypeNativeLocal, |
163 fileapi::FileSystemMountOption(), | 163 storage::FileSystemMountOption(), |
164 base::FilePath()); | 164 base::FilePath()); |
165 | 165 |
166 struct TestCase { | 166 struct TestCase { |
167 const base::FilePath::CharType* const local_path; | 167 const base::FilePath::CharType* const local_path; |
168 bool success; | 168 bool success; |
169 const base::FilePath::CharType* const virtual_path; | 169 const base::FilePath::CharType* const virtual_path; |
170 }; | 170 }; |
171 | 171 |
172 const TestCase kTestCases[] = { | 172 const TestCase kTestCases[] = { |
173 // Empty path. | 173 // Empty path. |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
227 if (!kTestCases[i].success) | 227 if (!kTestCases[i].success) |
228 continue; | 228 continue; |
229 | 229 |
230 base::FilePath expected_virtual_path(kTestCases[i].virtual_path); | 230 base::FilePath expected_virtual_path(kTestCases[i].virtual_path); |
231 EXPECT_EQ(expected_virtual_path.NormalizePathSeparators(), virtual_path) | 231 EXPECT_EQ(expected_virtual_path.NormalizePathSeparators(), virtual_path) |
232 << "Resolving " << kTestCases[i].local_path; | 232 << "Resolving " << kTestCases[i].local_path; |
233 } | 233 } |
234 } | 234 } |
235 | 235 |
236 TEST(ExternalMountPointsTest, HandlesFileSystemMountType) { | 236 TEST(ExternalMountPointsTest, HandlesFileSystemMountType) { |
237 scoped_refptr<fileapi::ExternalMountPoints> mount_points( | 237 scoped_refptr<storage::ExternalMountPoints> mount_points( |
238 fileapi::ExternalMountPoints::CreateRefCounted()); | 238 storage::ExternalMountPoints::CreateRefCounted()); |
239 | 239 |
240 const GURL test_origin("http://chromium.org"); | 240 const GURL test_origin("http://chromium.org"); |
241 const base::FilePath test_path(FPL("/mount")); | 241 const base::FilePath test_path(FPL("/mount")); |
242 | 242 |
243 // Should handle External File System. | 243 // Should handle External File System. |
244 EXPECT_TRUE(mount_points->HandlesFileSystemMountType( | 244 EXPECT_TRUE(mount_points->HandlesFileSystemMountType( |
245 fileapi::kFileSystemTypeExternal)); | 245 storage::kFileSystemTypeExternal)); |
246 | 246 |
247 // Shouldn't handle the rest. | 247 // Shouldn't handle the rest. |
248 EXPECT_FALSE(mount_points->HandlesFileSystemMountType( | 248 EXPECT_FALSE(mount_points->HandlesFileSystemMountType( |
249 fileapi::kFileSystemTypeIsolated)); | 249 storage::kFileSystemTypeIsolated)); |
250 EXPECT_FALSE(mount_points->HandlesFileSystemMountType( | 250 EXPECT_FALSE(mount_points->HandlesFileSystemMountType( |
251 fileapi::kFileSystemTypeTemporary)); | 251 storage::kFileSystemTypeTemporary)); |
252 EXPECT_FALSE(mount_points->HandlesFileSystemMountType( | 252 EXPECT_FALSE(mount_points->HandlesFileSystemMountType( |
253 fileapi::kFileSystemTypePersistent)); | 253 storage::kFileSystemTypePersistent)); |
254 EXPECT_FALSE(mount_points->HandlesFileSystemMountType( | 254 EXPECT_FALSE( |
255 fileapi::kFileSystemTypeTest)); | 255 mount_points->HandlesFileSystemMountType(storage::kFileSystemTypeTest)); |
256 // Not even if it's external subtype. | 256 // Not even if it's external subtype. |
257 EXPECT_FALSE(mount_points->HandlesFileSystemMountType( | 257 EXPECT_FALSE(mount_points->HandlesFileSystemMountType( |
258 fileapi::kFileSystemTypeNativeLocal)); | 258 storage::kFileSystemTypeNativeLocal)); |
259 EXPECT_FALSE(mount_points->HandlesFileSystemMountType( | 259 EXPECT_FALSE(mount_points->HandlesFileSystemMountType( |
260 fileapi::kFileSystemTypeRestrictedNativeLocal)); | 260 storage::kFileSystemTypeRestrictedNativeLocal)); |
| 261 EXPECT_FALSE( |
| 262 mount_points->HandlesFileSystemMountType(storage::kFileSystemTypeDrive)); |
261 EXPECT_FALSE(mount_points->HandlesFileSystemMountType( | 263 EXPECT_FALSE(mount_points->HandlesFileSystemMountType( |
262 fileapi::kFileSystemTypeDrive)); | 264 storage::kFileSystemTypeSyncable)); |
263 EXPECT_FALSE(mount_points->HandlesFileSystemMountType( | |
264 fileapi::kFileSystemTypeSyncable)); | |
265 } | 265 } |
266 | 266 |
267 TEST(ExternalMountPointsTest, CreateCrackedFileSystemURL) { | 267 TEST(ExternalMountPointsTest, CreateCrackedFileSystemURL) { |
268 scoped_refptr<fileapi::ExternalMountPoints> mount_points( | 268 scoped_refptr<storage::ExternalMountPoints> mount_points( |
269 fileapi::ExternalMountPoints::CreateRefCounted()); | 269 storage::ExternalMountPoints::CreateRefCounted()); |
270 | 270 |
271 const GURL kTestOrigin("http://chromium.org"); | 271 const GURL kTestOrigin("http://chromium.org"); |
272 | 272 |
273 mount_points->RegisterFileSystem("c", | 273 mount_points->RegisterFileSystem("c", |
274 fileapi::kFileSystemTypeNativeLocal, | 274 storage::kFileSystemTypeNativeLocal, |
275 fileapi::FileSystemMountOption(), | 275 storage::FileSystemMountOption(), |
276 base::FilePath(DRIVE FPL("/a/b/c"))); | 276 base::FilePath(DRIVE FPL("/a/b/c"))); |
277 mount_points->RegisterFileSystem("c(1)", | 277 mount_points->RegisterFileSystem("c(1)", |
278 fileapi::kFileSystemTypeDrive, | 278 storage::kFileSystemTypeDrive, |
279 fileapi::FileSystemMountOption(), | 279 storage::FileSystemMountOption(), |
280 base::FilePath(DRIVE FPL("/a/b/c(1)"))); | 280 base::FilePath(DRIVE FPL("/a/b/c(1)"))); |
281 mount_points->RegisterFileSystem("empty_path", | 281 mount_points->RegisterFileSystem("empty_path", |
282 fileapi::kFileSystemTypeSyncable, | 282 storage::kFileSystemTypeSyncable, |
283 fileapi::FileSystemMountOption(), | 283 storage::FileSystemMountOption(), |
284 base::FilePath()); | 284 base::FilePath()); |
285 mount_points->RegisterFileSystem("mount", | 285 mount_points->RegisterFileSystem("mount", |
286 fileapi::kFileSystemTypeDrive, | 286 storage::kFileSystemTypeDrive, |
287 fileapi::FileSystemMountOption(), | 287 storage::FileSystemMountOption(), |
288 base::FilePath(DRIVE FPL("/root"))); | 288 base::FilePath(DRIVE FPL("/root"))); |
289 | 289 |
290 // Try cracking invalid GURL. | 290 // Try cracking invalid GURL. |
291 FileSystemURL invalid = mount_points->CrackURL(GURL("http://chromium.og")); | 291 FileSystemURL invalid = mount_points->CrackURL(GURL("http://chromium.og")); |
292 EXPECT_FALSE(invalid.is_valid()); | 292 EXPECT_FALSE(invalid.is_valid()); |
293 | 293 |
294 // Try cracking isolated path. | 294 // Try cracking isolated path. |
295 FileSystemURL isolated = mount_points->CreateCrackedFileSystemURL( | 295 FileSystemURL isolated = mount_points->CreateCrackedFileSystemURL( |
296 kTestOrigin, fileapi::kFileSystemTypeIsolated, base::FilePath(FPL("c"))); | 296 kTestOrigin, storage::kFileSystemTypeIsolated, base::FilePath(FPL("c"))); |
297 EXPECT_FALSE(isolated.is_valid()); | 297 EXPECT_FALSE(isolated.is_valid()); |
298 | 298 |
299 // Try native local which is not cracked. | 299 // Try native local which is not cracked. |
300 FileSystemURL native_local = mount_points->CreateCrackedFileSystemURL( | 300 FileSystemURL native_local = mount_points->CreateCrackedFileSystemURL( |
301 kTestOrigin, | 301 kTestOrigin, |
302 fileapi::kFileSystemTypeNativeLocal, | 302 storage::kFileSystemTypeNativeLocal, |
303 base::FilePath(FPL("c"))); | 303 base::FilePath(FPL("c"))); |
304 EXPECT_FALSE(native_local.is_valid()); | 304 EXPECT_FALSE(native_local.is_valid()); |
305 | 305 |
306 struct TestCase { | 306 struct TestCase { |
307 const base::FilePath::CharType* const path; | 307 const base::FilePath::CharType* const path; |
308 bool expect_valid; | 308 bool expect_valid; |
309 fileapi::FileSystemType expect_type; | 309 storage::FileSystemType expect_type; |
310 const base::FilePath::CharType* const expect_path; | 310 const base::FilePath::CharType* const expect_path; |
311 const char* const expect_fs_id; | 311 const char* const expect_fs_id; |
312 }; | 312 }; |
313 | 313 |
314 const TestCase kTestCases[] = { | 314 const TestCase kTestCases[] = { |
315 { FPL("c/d/e"), | 315 {FPL("c/d/e"), true, storage::kFileSystemTypeNativeLocal, |
316 true, fileapi::kFileSystemTypeNativeLocal, DRIVE FPL("/a/b/c/d/e"), "c" }, | 316 DRIVE FPL("/a/b/c/d/e"), "c"}, |
317 { FPL("c(1)/d/e"), | 317 {FPL("c(1)/d/e"), true, storage::kFileSystemTypeDrive, |
318 true, fileapi::kFileSystemTypeDrive, DRIVE FPL("/a/b/c(1)/d/e"), "c(1)" }, | 318 DRIVE FPL("/a/b/c(1)/d/e"), "c(1)"}, |
319 { FPL("c(1)"), | 319 {FPL("c(1)"), true, storage::kFileSystemTypeDrive, DRIVE FPL("/a/b/c(1)"), |
320 true, fileapi::kFileSystemTypeDrive, DRIVE FPL("/a/b/c(1)"), "c(1)" }, | 320 "c(1)"}, |
321 { FPL("empty_path/a"), | 321 {FPL("empty_path/a"), true, storage::kFileSystemTypeSyncable, FPL("a"), |
322 true, fileapi::kFileSystemTypeSyncable, FPL("a"), "empty_path" }, | 322 "empty_path"}, |
323 { FPL("empty_path"), | 323 {FPL("empty_path"), true, storage::kFileSystemTypeSyncable, FPL(""), |
324 true, fileapi::kFileSystemTypeSyncable, FPL(""), "empty_path" }, | 324 "empty_path"}, |
325 { FPL("mount/a/b"), | 325 {FPL("mount/a/b"), true, storage::kFileSystemTypeDrive, |
326 true, fileapi::kFileSystemTypeDrive, DRIVE FPL("/root/a/b"), "mount" }, | 326 DRIVE FPL("/root/a/b"), "mount"}, |
327 { FPL("mount"), | 327 {FPL("mount"), true, storage::kFileSystemTypeDrive, DRIVE FPL("/root"), |
328 true, fileapi::kFileSystemTypeDrive, DRIVE FPL("/root"), "mount" }, | 328 "mount"}, |
329 { FPL("cc"), | 329 {FPL("cc"), false, storage::kFileSystemTypeUnknown, FPL(""), ""}, |
330 false, fileapi::kFileSystemTypeUnknown, FPL(""), "" }, | 330 {FPL(""), false, storage::kFileSystemTypeUnknown, FPL(""), ""}, |
331 { FPL(""), | 331 {FPL(".."), false, storage::kFileSystemTypeUnknown, FPL(""), ""}, |
332 false, fileapi::kFileSystemTypeUnknown, FPL(""), "" }, | |
333 { FPL(".."), | |
334 false, fileapi::kFileSystemTypeUnknown, FPL(""), "" }, | |
335 // Absolte paths. | 332 // Absolte paths. |
336 { FPL("/c/d/e"), | 333 {FPL("/c/d/e"), false, storage::kFileSystemTypeUnknown, FPL(""), ""}, |
337 false, fileapi::kFileSystemTypeUnknown, FPL(""), "" }, | 334 {FPL("/c(1)/d/e"), false, storage::kFileSystemTypeUnknown, FPL(""), ""}, |
338 { FPL("/c(1)/d/e"), | 335 {FPL("/empty_path"), false, storage::kFileSystemTypeUnknown, FPL(""), ""}, |
339 false, fileapi::kFileSystemTypeUnknown, FPL(""), "" }, | |
340 { FPL("/empty_path"), | |
341 false, fileapi::kFileSystemTypeUnknown, FPL(""), "" }, | |
342 // PAth references parent. | 336 // PAth references parent. |
343 { FPL("c/d/../e"), | 337 {FPL("c/d/../e"), false, storage::kFileSystemTypeUnknown, FPL(""), ""}, |
344 false, fileapi::kFileSystemTypeUnknown, FPL(""), "" }, | 338 {FPL("/empty_path/a/../b"), false, storage::kFileSystemTypeUnknown, FPL(""), |
345 { FPL("/empty_path/a/../b"), | 339 ""}, |
346 false, fileapi::kFileSystemTypeUnknown, FPL(""), "" }, | |
347 #if defined(FILE_PATH_USES_WIN_SEPARATORS) | 340 #if defined(FILE_PATH_USES_WIN_SEPARATORS) |
348 { FPL("c/d\\e"), | 341 {FPL("c/d\\e"), true, storage::kFileSystemTypeNativeLocal, |
349 true, fileapi::kFileSystemTypeNativeLocal, DRIVE FPL("/a/b/c/d/e"), "c" }, | 342 DRIVE FPL("/a/b/c/d/e"), "c"}, |
350 { FPL("mount\\a\\b"), | 343 {FPL("mount\\a\\b"), true, storage::kFileSystemTypeDrive, |
351 true, fileapi::kFileSystemTypeDrive, DRIVE FPL("/root/a/b"), "mount" }, | 344 DRIVE FPL("/root/a/b"), "mount"}, |
352 #endif | 345 #endif |
353 }; | 346 }; |
354 | 347 |
355 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestCases); ++i) { | 348 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestCases); ++i) { |
356 FileSystemURL cracked = mount_points->CreateCrackedFileSystemURL( | 349 FileSystemURL cracked = mount_points->CreateCrackedFileSystemURL( |
357 kTestOrigin, | 350 kTestOrigin, |
358 fileapi::kFileSystemTypeExternal, | 351 storage::kFileSystemTypeExternal, |
359 base::FilePath(kTestCases[i].path)); | 352 base::FilePath(kTestCases[i].path)); |
360 | 353 |
361 EXPECT_EQ(kTestCases[i].expect_valid, cracked.is_valid()) | 354 EXPECT_EQ(kTestCases[i].expect_valid, cracked.is_valid()) |
362 << "Test case index: " << i; | 355 << "Test case index: " << i; |
363 | 356 |
364 if (!kTestCases[i].expect_valid) | 357 if (!kTestCases[i].expect_valid) |
365 continue; | 358 continue; |
366 | 359 |
367 EXPECT_EQ(kTestOrigin, cracked.origin()) | 360 EXPECT_EQ(kTestOrigin, cracked.origin()) |
368 << "Test case index: " << i; | 361 << "Test case index: " << i; |
369 EXPECT_EQ(kTestCases[i].expect_type, cracked.type()) | 362 EXPECT_EQ(kTestCases[i].expect_type, cracked.type()) |
370 << "Test case index: " << i; | 363 << "Test case index: " << i; |
371 EXPECT_EQ(base::FilePath( | 364 EXPECT_EQ(base::FilePath( |
372 kTestCases[i].expect_path).NormalizePathSeparators(), cracked.path()) | 365 kTestCases[i].expect_path).NormalizePathSeparators(), cracked.path()) |
373 << "Test case index: " << i; | 366 << "Test case index: " << i; |
374 EXPECT_EQ(base::FilePath(kTestCases[i].path).NormalizePathSeparators(), | 367 EXPECT_EQ(base::FilePath(kTestCases[i].path).NormalizePathSeparators(), |
375 cracked.virtual_path()) | 368 cracked.virtual_path()) |
376 << "Test case index: " << i; | 369 << "Test case index: " << i; |
377 EXPECT_EQ(kTestCases[i].expect_fs_id, cracked.filesystem_id()) | 370 EXPECT_EQ(kTestCases[i].expect_fs_id, cracked.filesystem_id()) |
378 << "Test case index: " << i; | 371 << "Test case index: " << i; |
379 EXPECT_EQ(fileapi::kFileSystemTypeExternal, cracked.mount_type()) | 372 EXPECT_EQ(storage::kFileSystemTypeExternal, cracked.mount_type()) |
380 << "Test case index: " << i; | 373 << "Test case index: " << i; |
381 } | 374 } |
382 } | 375 } |
383 | 376 |
384 TEST(ExternalMountPointsTest, CrackVirtualPath) { | 377 TEST(ExternalMountPointsTest, CrackVirtualPath) { |
385 scoped_refptr<fileapi::ExternalMountPoints> mount_points( | 378 scoped_refptr<storage::ExternalMountPoints> mount_points( |
386 fileapi::ExternalMountPoints::CreateRefCounted()); | 379 storage::ExternalMountPoints::CreateRefCounted()); |
387 | 380 |
388 const GURL kTestOrigin("http://chromium.org"); | 381 const GURL kTestOrigin("http://chromium.org"); |
389 | 382 |
390 mount_points->RegisterFileSystem("c", | 383 mount_points->RegisterFileSystem("c", |
391 fileapi::kFileSystemTypeNativeLocal, | 384 storage::kFileSystemTypeNativeLocal, |
392 fileapi::FileSystemMountOption(), | 385 storage::FileSystemMountOption(), |
393 base::FilePath(DRIVE FPL("/a/b/c"))); | 386 base::FilePath(DRIVE FPL("/a/b/c"))); |
394 mount_points->RegisterFileSystem("c(1)", | 387 mount_points->RegisterFileSystem("c(1)", |
395 fileapi::kFileSystemTypeDrive, | 388 storage::kFileSystemTypeDrive, |
396 fileapi::FileSystemMountOption(), | 389 storage::FileSystemMountOption(), |
397 base::FilePath(DRIVE FPL("/a/b/c(1)"))); | 390 base::FilePath(DRIVE FPL("/a/b/c(1)"))); |
398 mount_points->RegisterFileSystem("empty_path", | 391 mount_points->RegisterFileSystem("empty_path", |
399 fileapi::kFileSystemTypeSyncable, | 392 storage::kFileSystemTypeSyncable, |
400 fileapi::FileSystemMountOption(), | 393 storage::FileSystemMountOption(), |
401 base::FilePath()); | 394 base::FilePath()); |
402 mount_points->RegisterFileSystem("mount", | 395 mount_points->RegisterFileSystem("mount", |
403 fileapi::kFileSystemTypeDrive, | 396 storage::kFileSystemTypeDrive, |
404 fileapi::FileSystemMountOption(), | 397 storage::FileSystemMountOption(), |
405 base::FilePath(DRIVE FPL("/root"))); | 398 base::FilePath(DRIVE FPL("/root"))); |
406 | 399 |
407 struct TestCase { | 400 struct TestCase { |
408 const base::FilePath::CharType* const path; | 401 const base::FilePath::CharType* const path; |
409 bool expect_valid; | 402 bool expect_valid; |
410 fileapi::FileSystemType expect_type; | 403 storage::FileSystemType expect_type; |
411 const base::FilePath::CharType* const expect_path; | 404 const base::FilePath::CharType* const expect_path; |
412 const char* const expect_name; | 405 const char* const expect_name; |
413 }; | 406 }; |
414 | 407 |
415 const TestCase kTestCases[] = { | 408 const TestCase kTestCases[] = { |
416 { FPL("c/d/e"), | 409 {FPL("c/d/e"), true, storage::kFileSystemTypeNativeLocal, |
417 true, fileapi::kFileSystemTypeNativeLocal, DRIVE FPL("/a/b/c/d/e"), "c" }, | 410 DRIVE FPL("/a/b/c/d/e"), "c"}, |
418 { FPL("c(1)/d/e"), | 411 {FPL("c(1)/d/e"), true, storage::kFileSystemTypeDrive, |
419 true, fileapi::kFileSystemTypeDrive, DRIVE FPL("/a/b/c(1)/d/e"), "c(1)" }, | 412 DRIVE FPL("/a/b/c(1)/d/e"), "c(1)"}, |
420 { FPL("c(1)"), | 413 {FPL("c(1)"), true, storage::kFileSystemTypeDrive, DRIVE FPL("/a/b/c(1)"), |
421 true, fileapi::kFileSystemTypeDrive, DRIVE FPL("/a/b/c(1)"), "c(1)" }, | 414 "c(1)"}, |
422 { FPL("empty_path/a"), | 415 {FPL("empty_path/a"), true, storage::kFileSystemTypeSyncable, FPL("a"), |
423 true, fileapi::kFileSystemTypeSyncable, FPL("a"), "empty_path" }, | 416 "empty_path"}, |
424 { FPL("empty_path"), | 417 {FPL("empty_path"), true, storage::kFileSystemTypeSyncable, FPL(""), |
425 true, fileapi::kFileSystemTypeSyncable, FPL(""), "empty_path" }, | 418 "empty_path"}, |
426 { FPL("mount/a/b"), | 419 {FPL("mount/a/b"), true, storage::kFileSystemTypeDrive, |
427 true, fileapi::kFileSystemTypeDrive, DRIVE FPL("/root/a/b"), "mount" }, | 420 DRIVE FPL("/root/a/b"), "mount"}, |
428 { FPL("mount"), | 421 {FPL("mount"), true, storage::kFileSystemTypeDrive, DRIVE FPL("/root"), |
429 true, fileapi::kFileSystemTypeDrive, DRIVE FPL("/root"), "mount" }, | 422 "mount"}, |
430 { FPL("cc"), | 423 {FPL("cc"), false, storage::kFileSystemTypeUnknown, FPL(""), ""}, |
431 false, fileapi::kFileSystemTypeUnknown, FPL(""), "" }, | 424 {FPL(""), false, storage::kFileSystemTypeUnknown, FPL(""), ""}, |
432 { FPL(""), | 425 {FPL(".."), false, storage::kFileSystemTypeUnknown, FPL(""), ""}, |
433 false, fileapi::kFileSystemTypeUnknown, FPL(""), "" }, | |
434 { FPL(".."), | |
435 false, fileapi::kFileSystemTypeUnknown, FPL(""), "" }, | |
436 // Absolte paths. | 426 // Absolte paths. |
437 { FPL("/c/d/e"), | 427 {FPL("/c/d/e"), false, storage::kFileSystemTypeUnknown, FPL(""), ""}, |
438 false, fileapi::kFileSystemTypeUnknown, FPL(""), "" }, | 428 {FPL("/c(1)/d/e"), false, storage::kFileSystemTypeUnknown, FPL(""), ""}, |
439 { FPL("/c(1)/d/e"), | 429 {FPL("/empty_path"), false, storage::kFileSystemTypeUnknown, FPL(""), ""}, |
440 false, fileapi::kFileSystemTypeUnknown, FPL(""), "" }, | |
441 { FPL("/empty_path"), | |
442 false, fileapi::kFileSystemTypeUnknown, FPL(""), "" }, | |
443 // PAth references parent. | 430 // PAth references parent. |
444 { FPL("c/d/../e"), | 431 {FPL("c/d/../e"), false, storage::kFileSystemTypeUnknown, FPL(""), ""}, |
445 false, fileapi::kFileSystemTypeUnknown, FPL(""), "" }, | 432 {FPL("/empty_path/a/../b"), false, storage::kFileSystemTypeUnknown, FPL(""), |
446 { FPL("/empty_path/a/../b"), | 433 ""}, |
447 false, fileapi::kFileSystemTypeUnknown, FPL(""), "" }, | |
448 #if defined(FILE_PATH_USES_WIN_SEPARATORS) | 434 #if defined(FILE_PATH_USES_WIN_SEPARATORS) |
449 { FPL("c/d\\e"), | 435 {FPL("c/d\\e"), true, storage::kFileSystemTypeNativeLocal, |
450 true, fileapi::kFileSystemTypeNativeLocal, DRIVE FPL("/a/b/c/d/e"), "c" }, | 436 DRIVE FPL("/a/b/c/d/e"), "c"}, |
451 { FPL("mount\\a\\b"), | 437 {FPL("mount\\a\\b"), true, storage::kFileSystemTypeDrive, |
452 true, fileapi::kFileSystemTypeDrive, DRIVE FPL("/root/a/b"), "mount" }, | 438 DRIVE FPL("/root/a/b"), "mount"}, |
453 #endif | 439 #endif |
454 }; | 440 }; |
455 | 441 |
456 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestCases); ++i) { | 442 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestCases); ++i) { |
457 std::string cracked_name; | 443 std::string cracked_name; |
458 fileapi::FileSystemType cracked_type; | 444 storage::FileSystemType cracked_type; |
459 std::string cracked_id; | 445 std::string cracked_id; |
460 base::FilePath cracked_path; | 446 base::FilePath cracked_path; |
461 fileapi::FileSystemMountOption cracked_option; | 447 storage::FileSystemMountOption cracked_option; |
462 EXPECT_EQ(kTestCases[i].expect_valid, | 448 EXPECT_EQ(kTestCases[i].expect_valid, |
463 mount_points->CrackVirtualPath(base::FilePath(kTestCases[i].path), | 449 mount_points->CrackVirtualPath(base::FilePath(kTestCases[i].path), |
464 &cracked_name, &cracked_type, &cracked_id, &cracked_path, | 450 &cracked_name, &cracked_type, &cracked_id, &cracked_path, |
465 &cracked_option)) | 451 &cracked_option)) |
466 << "Test case index: " << i; | 452 << "Test case index: " << i; |
467 | 453 |
468 if (!kTestCases[i].expect_valid) | 454 if (!kTestCases[i].expect_valid) |
469 continue; | 455 continue; |
470 | 456 |
471 EXPECT_EQ(kTestCases[i].expect_type, cracked_type) | 457 EXPECT_EQ(kTestCases[i].expect_type, cracked_type) |
472 << "Test case index: " << i; | 458 << "Test case index: " << i; |
473 EXPECT_EQ(base::FilePath( | 459 EXPECT_EQ(base::FilePath( |
474 kTestCases[i].expect_path).NormalizePathSeparators(), cracked_path) | 460 kTestCases[i].expect_path).NormalizePathSeparators(), cracked_path) |
475 << "Test case index: " << i; | 461 << "Test case index: " << i; |
476 EXPECT_EQ(kTestCases[i].expect_name, cracked_name) | 462 EXPECT_EQ(kTestCases[i].expect_name, cracked_name) |
477 << "Test case index: " << i; | 463 << "Test case index: " << i; |
478 // As of now we don't mount other filesystems with non-empty filesystem_id | 464 // As of now we don't mount other filesystems with non-empty filesystem_id |
479 // onto external mount points. | 465 // onto external mount points. |
480 EXPECT_TRUE(cracked_id.empty()) << "Test case index: " << i; | 466 EXPECT_TRUE(cracked_id.empty()) << "Test case index: " << i; |
481 } | 467 } |
482 } | 468 } |
483 | 469 |
484 TEST(ExternalMountPointsTest, MountOption) { | 470 TEST(ExternalMountPointsTest, MountOption) { |
485 scoped_refptr<fileapi::ExternalMountPoints> mount_points( | 471 scoped_refptr<storage::ExternalMountPoints> mount_points( |
486 fileapi::ExternalMountPoints::CreateRefCounted()); | 472 storage::ExternalMountPoints::CreateRefCounted()); |
487 | 473 |
488 mount_points->RegisterFileSystem( | 474 mount_points->RegisterFileSystem( |
489 "nosync", | 475 "nosync", |
490 fileapi::kFileSystemTypeNativeLocal, | 476 storage::kFileSystemTypeNativeLocal, |
491 fileapi::FileSystemMountOption(fileapi::COPY_SYNC_OPTION_NO_SYNC), | 477 storage::FileSystemMountOption(storage::COPY_SYNC_OPTION_NO_SYNC), |
492 base::FilePath(DRIVE FPL("/nosync"))); | 478 base::FilePath(DRIVE FPL("/nosync"))); |
493 mount_points->RegisterFileSystem( | 479 mount_points->RegisterFileSystem( |
494 "sync", | 480 "sync", |
495 fileapi::kFileSystemTypeNativeLocal, | 481 storage::kFileSystemTypeNativeLocal, |
496 fileapi::FileSystemMountOption(fileapi::COPY_SYNC_OPTION_SYNC), | 482 storage::FileSystemMountOption(storage::COPY_SYNC_OPTION_SYNC), |
497 base::FilePath(DRIVE FPL("/sync"))); | 483 base::FilePath(DRIVE FPL("/sync"))); |
498 | 484 |
499 std::string name; | 485 std::string name; |
500 fileapi::FileSystemType type; | 486 storage::FileSystemType type; |
501 std::string cracked_id; | 487 std::string cracked_id; |
502 fileapi::FileSystemMountOption option; | 488 storage::FileSystemMountOption option; |
503 base::FilePath path; | 489 base::FilePath path; |
504 EXPECT_TRUE(mount_points->CrackVirtualPath( | 490 EXPECT_TRUE(mount_points->CrackVirtualPath( |
505 base::FilePath(FPL("nosync/file")), &name, &type, &cracked_id, &path, | 491 base::FilePath(FPL("nosync/file")), &name, &type, &cracked_id, &path, |
506 &option)); | 492 &option)); |
507 EXPECT_EQ(fileapi::COPY_SYNC_OPTION_NO_SYNC, option.copy_sync_option()); | 493 EXPECT_EQ(storage::COPY_SYNC_OPTION_NO_SYNC, option.copy_sync_option()); |
508 EXPECT_TRUE(mount_points->CrackVirtualPath( | 494 EXPECT_TRUE(mount_points->CrackVirtualPath( |
509 base::FilePath(FPL("sync/file")), &name, &type, &cracked_id, &path, | 495 base::FilePath(FPL("sync/file")), &name, &type, &cracked_id, &path, |
510 &option)); | 496 &option)); |
511 EXPECT_EQ(fileapi::COPY_SYNC_OPTION_SYNC, option.copy_sync_option()); | 497 EXPECT_EQ(storage::COPY_SYNC_OPTION_SYNC, option.copy_sync_option()); |
512 } | 498 } |
513 | 499 |
514 } // namespace content | 500 } // namespace content |
515 | 501 |
OLD | NEW |