| OLD | NEW |
| 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 <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 #include "webkit/fileapi/isolated_context.h" | 10 #include "webkit/fileapi/isolated_context.h" |
| 11 | 11 |
| 12 #define FPL(x) FILE_PATH_LITERAL(x) | 12 #define FPL(x) FILE_PATH_LITERAL(x) |
| 13 | 13 |
| 14 #if defined(FILE_PATH_USES_DRIVE_LETTERS) | 14 #if defined(FILE_PATH_USES_DRIVE_LETTERS) |
| 15 #define DRIVE FPL("C:") | 15 #define DRIVE FPL("C:") |
| 16 #else | 16 #else |
| 17 #define DRIVE | 17 #define DRIVE |
| 18 #endif | 18 #endif |
| 19 | 19 |
| 20 namespace fileapi { | 20 namespace fileapi { |
| 21 | 21 |
| 22 typedef IsolatedContext::FileInfo FileInfo; | 22 typedef IsolatedContext::MountPointInfo FileInfo; |
| 23 | 23 |
| 24 namespace { | 24 namespace { |
| 25 | 25 |
| 26 const FilePath kTestPaths[] = { | 26 const FilePath kTestPaths[] = { |
| 27 FilePath(DRIVE FPL("/a/b.txt")), | 27 FilePath(DRIVE FPL("/a/b.txt")), |
| 28 FilePath(DRIVE FPL("/c/d/e")), | 28 FilePath(DRIVE FPL("/c/d/e")), |
| 29 FilePath(DRIVE FPL("/h/")), | 29 FilePath(DRIVE FPL("/h/")), |
| 30 FilePath(DRIVE FPL("/")), | 30 FilePath(DRIVE FPL("/")), |
| 31 #if defined(FILE_PATH_USES_WIN_SEPARATORS) | 31 #if defined(FILE_PATH_USES_WIN_SEPARATORS) |
| 32 FilePath(DRIVE FPL("\\foo\\bar")), | 32 FilePath(DRIVE FPL("\\foo\\bar")), |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 88 | 88 |
| 89 // See if the name of each registered kTestPaths (that is what we | 89 // See if the name of each registered kTestPaths (that is what we |
| 90 // register in SetUp() by RegisterDraggedFileSystem) is properly cracked as | 90 // register in SetUp() by RegisterDraggedFileSystem) is properly cracked as |
| 91 // a valid virtual path in the isolated filesystem. | 91 // a valid virtual path in the isolated filesystem. |
| 92 for (size_t i = 0; i < arraysize(kTestPaths); ++i) { | 92 for (size_t i = 0; i < arraysize(kTestPaths); ++i) { |
| 93 FilePath virtual_path = isolated_context()->CreateVirtualRootPath(id_) | 93 FilePath virtual_path = isolated_context()->CreateVirtualRootPath(id_) |
| 94 .AppendASCII(names_[i]); | 94 .AppendASCII(names_[i]); |
| 95 std::string cracked_id; | 95 std::string cracked_id; |
| 96 FilePath cracked_path; | 96 FilePath cracked_path; |
| 97 FileSystemType cracked_type; | 97 FileSystemType cracked_type; |
| 98 ASSERT_TRUE(isolated_context()->CrackIsolatedPath( | 98 ASSERT_TRUE(isolated_context()->CrackVirtualPath( |
| 99 virtual_path, &cracked_id, &cracked_type, &cracked_path)); | 99 virtual_path, &cracked_id, &cracked_type, &cracked_path)); |
| 100 ASSERT_EQ(kTestPaths[i].NormalizePathSeparators().value(), | 100 ASSERT_EQ(kTestPaths[i].NormalizePathSeparators().value(), |
| 101 cracked_path.value()); | 101 cracked_path.value()); |
| 102 ASSERT_EQ(id_, cracked_id); | 102 ASSERT_EQ(id_, cracked_id); |
| 103 ASSERT_EQ(kFileSystemTypeDragged, cracked_type); | 103 ASSERT_EQ(kFileSystemTypeDragged, cracked_type); |
| 104 } | 104 } |
| 105 | 105 |
| 106 // Make sure GetRegisteredPath returns false for id_ since it is | 106 // Make sure GetRegisteredPath returns false for id_ since it is |
| 107 // registered for dragged files. | 107 // registered for dragged files. |
| 108 FilePath path; | 108 FilePath path; |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 for (size_t i = 0; i < arraysize(kTestPaths); ++i) { | 184 for (size_t i = 0; i < arraysize(kTestPaths); ++i) { |
| 185 for (size_t j = 0; j < ARRAYSIZE_UNSAFE(relatives); ++j) { | 185 for (size_t j = 0; j < ARRAYSIZE_UNSAFE(relatives); ++j) { |
| 186 SCOPED_TRACE(testing::Message() << "Testing " | 186 SCOPED_TRACE(testing::Message() << "Testing " |
| 187 << kTestPaths[i].value() << " " << relatives[j].path); | 187 << kTestPaths[i].value() << " " << relatives[j].path); |
| 188 FilePath virtual_path = isolated_context()->CreateVirtualRootPath(id_) | 188 FilePath virtual_path = isolated_context()->CreateVirtualRootPath(id_) |
| 189 .AppendASCII(names_[i]).Append(relatives[j].path); | 189 .AppendASCII(names_[i]).Append(relatives[j].path); |
| 190 std::string cracked_id; | 190 std::string cracked_id; |
| 191 FilePath cracked_path; | 191 FilePath cracked_path; |
| 192 FileSystemType cracked_type; | 192 FileSystemType cracked_type; |
| 193 if (!relatives[j].valid) { | 193 if (!relatives[j].valid) { |
| 194 ASSERT_FALSE(isolated_context()->CrackIsolatedPath( | 194 ASSERT_FALSE(isolated_context()->CrackVirtualPath( |
| 195 virtual_path, &cracked_id, &cracked_type, &cracked_path)); | 195 virtual_path, &cracked_id, &cracked_type, &cracked_path)); |
| 196 continue; | 196 continue; |
| 197 } | 197 } |
| 198 ASSERT_TRUE(isolated_context()->CrackIsolatedPath( | 198 ASSERT_TRUE(isolated_context()->CrackVirtualPath( |
| 199 virtual_path, &cracked_id, &cracked_type, &cracked_path)); | 199 virtual_path, &cracked_id, &cracked_type, &cracked_path)); |
| 200 ASSERT_EQ(kTestPaths[i].Append(relatives[j].path) | 200 ASSERT_EQ(kTestPaths[i].Append(relatives[j].path) |
| 201 .NormalizePathSeparators().value(), | 201 .NormalizePathSeparators().value(), |
| 202 cracked_path.value()); | 202 cracked_path.value()); |
| 203 ASSERT_EQ(id_, cracked_id); | 203 ASSERT_EQ(id_, cracked_id); |
| 204 ASSERT_EQ(kFileSystemTypeDragged, cracked_type); | 204 ASSERT_EQ(kFileSystemTypeDragged, cracked_type); |
| 205 } | 205 } |
| 206 } | 206 } |
| 207 } | 207 } |
| 208 | 208 |
| 209 TEST_F(IsolatedContextTest, TestWithVirtualRoot) { | 209 TEST_F(IsolatedContextTest, TestWithVirtualRoot) { |
| 210 std::string cracked_id; | 210 std::string cracked_id; |
| 211 FilePath cracked_path; | 211 FilePath cracked_path; |
| 212 | 212 |
| 213 // Trying to crack virtual root "/" returns true but with empty cracked path | 213 // Trying to crack virtual root "/" returns true but with empty cracked path |
| 214 // as "/" of the isolated filesystem is a pure virtual directory | 214 // as "/" of the isolated filesystem is a pure virtual directory |
| 215 // that has no corresponding platform directory. | 215 // that has no corresponding platform directory. |
| 216 FilePath virtual_path = isolated_context()->CreateVirtualRootPath(id_); | 216 FilePath virtual_path = isolated_context()->CreateVirtualRootPath(id_); |
| 217 ASSERT_TRUE(isolated_context()->CrackIsolatedPath( | 217 ASSERT_TRUE(isolated_context()->CrackVirtualPath( |
| 218 virtual_path, &cracked_id, NULL, &cracked_path)); | 218 virtual_path, &cracked_id, NULL, &cracked_path)); |
| 219 ASSERT_EQ(FPL(""), cracked_path.value()); | 219 ASSERT_EQ(FPL(""), cracked_path.value()); |
| 220 ASSERT_EQ(id_, cracked_id); | 220 ASSERT_EQ(id_, cracked_id); |
| 221 | 221 |
| 222 // Trying to crack "/foo" should fail (because "foo" is not the one | 222 // Trying to crack "/foo" should fail (because "foo" is not the one |
| 223 // included in the kTestPaths). | 223 // included in the kTestPaths). |
| 224 virtual_path = isolated_context()->CreateVirtualRootPath( | 224 virtual_path = isolated_context()->CreateVirtualRootPath( |
| 225 id_).AppendASCII("foo"); | 225 id_).AppendASCII("foo"); |
| 226 ASSERT_FALSE(isolated_context()->CrackIsolatedPath( | 226 ASSERT_FALSE(isolated_context()->CrackVirtualPath( |
| 227 virtual_path, &cracked_id, NULL, &cracked_path)); | 227 virtual_path, &cracked_id, NULL, &cracked_path)); |
| 228 } | 228 } |
| 229 | 229 |
| 230 } // namespace fileapi | 230 } // namespace fileapi |
| OLD | NEW |