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 "webkit/fileapi/file_system_directory_database.h" | 5 #include "webkit/fileapi/file_system_directory_database.h" |
6 | 6 |
7 #include <math.h> | 7 #include <math.h> |
8 #include <limits> | 8 #include <limits> |
9 | 9 |
10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
11 #include "base/files/scoped_temp_dir.h" | 11 #include "base/files/scoped_temp_dir.h" |
12 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
13 #include "base/platform_file.h" | 13 #include "base/platform_file.h" |
14 #include "base/string_number_conversions.h" | 14 #include "base/string_number_conversions.h" |
15 #include "base/string_util.h" | 15 #include "base/string_util.h" |
16 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
17 #include "third_party/leveldatabase/src/include/leveldb/db.h" | 17 #include "third_party/leveldatabase/src/include/leveldb/db.h" |
18 #include "webkit/fileapi/file_system_database_test_helper.h" | 18 #include "webkit/fileapi/file_system_database_test_helper.h" |
19 #include "webkit/fileapi/file_system_util.h" | 19 #include "webkit/fileapi/file_system_util.h" |
20 | 20 |
21 #define FPL(x) FILE_PATH_LITERAL(x) | 21 #define FPL(x) FILE_PATH_LITERAL(x) |
22 | 22 |
23 namespace fileapi { | 23 namespace fileapi { |
24 | 24 |
25 namespace { | 25 namespace { |
26 const FilePath::CharType kDirectoryDatabaseName[] = FPL("Paths"); | 26 const base::FilePath::CharType kDirectoryDatabaseName[] = FPL("Paths"); |
27 } | 27 } |
28 | 28 |
29 class FileSystemDirectoryDatabaseTest : public testing::Test { | 29 class FileSystemDirectoryDatabaseTest : public testing::Test { |
30 public: | 30 public: |
31 typedef FileSystemDirectoryDatabase::FileId FileId; | 31 typedef FileSystemDirectoryDatabase::FileId FileId; |
32 typedef FileSystemDirectoryDatabase::FileInfo FileInfo; | 32 typedef FileSystemDirectoryDatabase::FileInfo FileInfo; |
33 | 33 |
34 FileSystemDirectoryDatabaseTest() { | 34 FileSystemDirectoryDatabaseTest() { |
35 EXPECT_TRUE(base_.CreateUniqueTempDir()); | 35 EXPECT_TRUE(base_.CreateUniqueTempDir()); |
36 InitDatabase(); | 36 InitDatabase(); |
37 } | 37 } |
38 | 38 |
39 FileSystemDirectoryDatabase* db() { | 39 FileSystemDirectoryDatabase* db() { |
40 return db_.get(); | 40 return db_.get(); |
41 } | 41 } |
42 | 42 |
43 void InitDatabase() { | 43 void InitDatabase() { |
44 // Call CloseDatabase() to avoid having multiple database instances for | 44 // Call CloseDatabase() to avoid having multiple database instances for |
45 // single directory at once. | 45 // single directory at once. |
46 CloseDatabase(); | 46 CloseDatabase(); |
47 db_.reset(new FileSystemDirectoryDatabase(path())); | 47 db_.reset(new FileSystemDirectoryDatabase(path())); |
48 } | 48 } |
49 | 49 |
50 void CloseDatabase() { | 50 void CloseDatabase() { |
51 db_.reset(); | 51 db_.reset(); |
52 } | 52 } |
53 | 53 |
54 bool AddFileInfo(FileId parent_id, const FilePath::StringType& name) { | 54 bool AddFileInfo(FileId parent_id, const base::FilePath::StringType& name) { |
55 FileId file_id; | 55 FileId file_id; |
56 FileInfo info; | 56 FileInfo info; |
57 info.parent_id = parent_id; | 57 info.parent_id = parent_id; |
58 info.name = name; | 58 info.name = name; |
59 return db_->AddFileInfo(info, &file_id); | 59 return db_->AddFileInfo(info, &file_id); |
60 } | 60 } |
61 | 61 |
62 void CreateDirectory(FileId parent_id, | 62 void CreateDirectory(FileId parent_id, |
63 const FilePath::StringType& name, | 63 const base::FilePath::StringType& name, |
64 FileId* file_id_out) { | 64 FileId* file_id_out) { |
65 FileInfo info; | 65 FileInfo info; |
66 info.parent_id = parent_id; | 66 info.parent_id = parent_id; |
67 info.name = name; | 67 info.name = name; |
68 ASSERT_TRUE(db_->AddFileInfo(info, file_id_out)); | 68 ASSERT_TRUE(db_->AddFileInfo(info, file_id_out)); |
69 } | 69 } |
70 | 70 |
71 void CreateFile(FileId parent_id, | 71 void CreateFile(FileId parent_id, |
72 const FilePath::StringType& name, | 72 const base::FilePath::StringType& name, |
73 const FilePath::StringType& data_path, | 73 const base::FilePath::StringType& data_path, |
74 FileId* file_id_out) { | 74 FileId* file_id_out) { |
75 FileId file_id; | 75 FileId file_id; |
76 | 76 |
77 FileInfo info; | 77 FileInfo info; |
78 info.parent_id = parent_id; | 78 info.parent_id = parent_id; |
79 info.name = name; | 79 info.name = name; |
80 info.data_path = FilePath(data_path).NormalizePathSeparators(); | 80 info.data_path = base::FilePath(data_path).NormalizePathSeparators(); |
81 ASSERT_TRUE(db_->AddFileInfo(info, &file_id)); | 81 ASSERT_TRUE(db_->AddFileInfo(info, &file_id)); |
82 | 82 |
83 FilePath local_path = path().Append(data_path); | 83 base::FilePath local_path = path().Append(data_path); |
84 if (!file_util::DirectoryExists(local_path.DirName())) | 84 if (!file_util::DirectoryExists(local_path.DirName())) |
85 ASSERT_TRUE(file_util::CreateDirectory(local_path.DirName())); | 85 ASSERT_TRUE(file_util::CreateDirectory(local_path.DirName())); |
86 | 86 |
87 bool created = false; | 87 bool created = false; |
88 base::PlatformFileError error = base::PLATFORM_FILE_ERROR_FAILED; | 88 base::PlatformFileError error = base::PLATFORM_FILE_ERROR_FAILED; |
89 base::PlatformFile file = base::CreatePlatformFile( | 89 base::PlatformFile file = base::CreatePlatformFile( |
90 local_path, | 90 local_path, |
91 base::PLATFORM_FILE_CREATE | base::PLATFORM_FILE_WRITE, | 91 base::PLATFORM_FILE_CREATE | base::PLATFORM_FILE_WRITE, |
92 &created, &error); | 92 &created, &error); |
93 ASSERT_EQ(base::PLATFORM_FILE_OK, error); | 93 ASSERT_EQ(base::PLATFORM_FILE_OK, error); |
94 ASSERT_TRUE(created); | 94 ASSERT_TRUE(created); |
95 ASSERT_TRUE(base::ClosePlatformFile(file)); | 95 ASSERT_TRUE(base::ClosePlatformFile(file)); |
96 | 96 |
97 if (file_id_out) | 97 if (file_id_out) |
98 *file_id_out = file_id; | 98 *file_id_out = file_id; |
99 } | 99 } |
100 | 100 |
101 void ClearDatabaseAndDirectory() { | 101 void ClearDatabaseAndDirectory() { |
102 db_.reset(); | 102 db_.reset(); |
103 ASSERT_TRUE(file_util::Delete(path(), true /* recursive */)); | 103 ASSERT_TRUE(file_util::Delete(path(), true /* recursive */)); |
104 ASSERT_TRUE(file_util::CreateDirectory(path())); | 104 ASSERT_TRUE(file_util::CreateDirectory(path())); |
105 db_.reset(new FileSystemDirectoryDatabase(path())); | 105 db_.reset(new FileSystemDirectoryDatabase(path())); |
106 } | 106 } |
107 | 107 |
108 bool RepairDatabase() { | 108 bool RepairDatabase() { |
109 return db()->RepairDatabase( | 109 return db()->RepairDatabase( |
110 FilePathToString(path().Append(kDirectoryDatabaseName))); | 110 FilePathToString(path().Append(kDirectoryDatabaseName))); |
111 } | 111 } |
112 | 112 |
113 const FilePath& path() { | 113 const base::FilePath& path() { |
114 return base_.path(); | 114 return base_.path(); |
115 } | 115 } |
116 | 116 |
117 // Makes link from |parent_id| to |child_id| with |name|. | 117 // Makes link from |parent_id| to |child_id| with |name|. |
118 void MakeHierarchyLink(FileId parent_id, | 118 void MakeHierarchyLink(FileId parent_id, |
119 FileId child_id, | 119 FileId child_id, |
120 const FilePath::StringType& name) { | 120 const base::FilePath::StringType& name) { |
121 ASSERT_TRUE(db()->db_->Put( | 121 ASSERT_TRUE(db()->db_->Put( |
122 leveldb::WriteOptions(), | 122 leveldb::WriteOptions(), |
123 "CHILD_OF:" + base::Int64ToString(parent_id) + ":" + | 123 "CHILD_OF:" + base::Int64ToString(parent_id) + ":" + |
124 FilePathToString(FilePath(name)), | 124 FilePathToString(base::FilePath(name)), |
125 base::Int64ToString(child_id)).ok()); | 125 base::Int64ToString(child_id)).ok()); |
126 } | 126 } |
127 | 127 |
128 // Deletes link from parent of |file_id| to |file_id|. | 128 // Deletes link from parent of |file_id| to |file_id|. |
129 void DeleteHierarchyLink(FileId file_id) { | 129 void DeleteHierarchyLink(FileId file_id) { |
130 FileInfo file_info; | 130 FileInfo file_info; |
131 ASSERT_TRUE(db()->GetFileInfo(file_id, &file_info)); | 131 ASSERT_TRUE(db()->GetFileInfo(file_id, &file_info)); |
132 ASSERT_TRUE(db()->db_->Delete( | 132 ASSERT_TRUE(db()->db_->Delete( |
133 leveldb::WriteOptions(), | 133 leveldb::WriteOptions(), |
134 "CHILD_OF:" + base::Int64ToString(file_info.parent_id) + ":" + | 134 "CHILD_OF:" + base::Int64ToString(file_info.parent_id) + ":" + |
135 FilePathToString(FilePath(file_info.name))).ok()); | 135 FilePathToString(base::FilePath(file_info.name))).ok()); |
136 } | 136 } |
137 | 137 |
138 protected: | 138 protected: |
139 // Common temp base for nondestructive uses. | 139 // Common temp base for nondestructive uses. |
140 base::ScopedTempDir base_; | 140 base::ScopedTempDir base_; |
141 scoped_ptr<FileSystemDirectoryDatabase> db_; | 141 scoped_ptr<FileSystemDirectoryDatabase> db_; |
142 | 142 |
143 DISALLOW_COPY_AND_ASSIGN(FileSystemDirectoryDatabaseTest); | 143 DISALLOW_COPY_AND_ASSIGN(FileSystemDirectoryDatabaseTest); |
144 }; | 144 }; |
145 | 145 |
(...skipping 18 matching lines...) Expand all Loading... |
164 } | 164 } |
165 | 165 |
166 TEST_F(FileSystemDirectoryDatabaseTest, TestAddNameClash) { | 166 TEST_F(FileSystemDirectoryDatabaseTest, TestAddNameClash) { |
167 FileInfo info; | 167 FileInfo info; |
168 FileId file_id; | 168 FileId file_id; |
169 info.parent_id = 0; | 169 info.parent_id = 0; |
170 info.name = FILE_PATH_LITERAL("dir 0"); | 170 info.name = FILE_PATH_LITERAL("dir 0"); |
171 EXPECT_TRUE(db()->AddFileInfo(info, &file_id)); | 171 EXPECT_TRUE(db()->AddFileInfo(info, &file_id)); |
172 | 172 |
173 // Check for name clash in the root directory. | 173 // Check for name clash in the root directory. |
174 FilePath::StringType name = info.name; | 174 base::FilePath::StringType name = info.name; |
175 EXPECT_FALSE(AddFileInfo(0, name)); | 175 EXPECT_FALSE(AddFileInfo(0, name)); |
176 name = FILE_PATH_LITERAL("dir 1"); | 176 name = FILE_PATH_LITERAL("dir 1"); |
177 EXPECT_TRUE(AddFileInfo(0, name)); | 177 EXPECT_TRUE(AddFileInfo(0, name)); |
178 | 178 |
179 name = FILE_PATH_LITERAL("subdir 0"); | 179 name = FILE_PATH_LITERAL("subdir 0"); |
180 EXPECT_TRUE(AddFileInfo(file_id, name)); | 180 EXPECT_TRUE(AddFileInfo(file_id, name)); |
181 | 181 |
182 // Check for name clash in a subdirectory. | 182 // Check for name clash in a subdirectory. |
183 EXPECT_FALSE(AddFileInfo(file_id, name)); | 183 EXPECT_FALSE(AddFileInfo(file_id, name)); |
184 name = FILE_PATH_LITERAL("subdir 1"); | 184 name = FILE_PATH_LITERAL("subdir 1"); |
185 EXPECT_TRUE(AddFileInfo(file_id, name)); | 185 EXPECT_TRUE(AddFileInfo(file_id, name)); |
186 } | 186 } |
187 | 187 |
188 TEST_F(FileSystemDirectoryDatabaseTest, TestRenameNoMoveNameClash) { | 188 TEST_F(FileSystemDirectoryDatabaseTest, TestRenameNoMoveNameClash) { |
189 FileInfo info; | 189 FileInfo info; |
190 FileId file_id0; | 190 FileId file_id0; |
191 FilePath::StringType name0 = FILE_PATH_LITERAL("foo"); | 191 base::FilePath::StringType name0 = FILE_PATH_LITERAL("foo"); |
192 FilePath::StringType name1 = FILE_PATH_LITERAL("bar"); | 192 base::FilePath::StringType name1 = FILE_PATH_LITERAL("bar"); |
193 FilePath::StringType name2 = FILE_PATH_LITERAL("bas"); | 193 base::FilePath::StringType name2 = FILE_PATH_LITERAL("bas"); |
194 info.parent_id = 0; | 194 info.parent_id = 0; |
195 info.name = name0; | 195 info.name = name0; |
196 EXPECT_TRUE(db()->AddFileInfo(info, &file_id0)); | 196 EXPECT_TRUE(db()->AddFileInfo(info, &file_id0)); |
197 EXPECT_TRUE(AddFileInfo(0, name1)); | 197 EXPECT_TRUE(AddFileInfo(0, name1)); |
198 info.name = name1; | 198 info.name = name1; |
199 EXPECT_FALSE(db()->UpdateFileInfo(file_id0, info)); | 199 EXPECT_FALSE(db()->UpdateFileInfo(file_id0, info)); |
200 info.name = name2; | 200 info.name = name2; |
201 EXPECT_TRUE(db()->UpdateFileInfo(file_id0, info)); | 201 EXPECT_TRUE(db()->UpdateFileInfo(file_id0, info)); |
202 } | 202 } |
203 | 203 |
204 TEST_F(FileSystemDirectoryDatabaseTest, TestMoveSameNameNameClash) { | 204 TEST_F(FileSystemDirectoryDatabaseTest, TestMoveSameNameNameClash) { |
205 FileInfo info; | 205 FileInfo info; |
206 FileId file_id0; | 206 FileId file_id0; |
207 FileId file_id1; | 207 FileId file_id1; |
208 FilePath::StringType name0 = FILE_PATH_LITERAL("foo"); | 208 base::FilePath::StringType name0 = FILE_PATH_LITERAL("foo"); |
209 FilePath::StringType name1 = FILE_PATH_LITERAL("bar"); | 209 base::FilePath::StringType name1 = FILE_PATH_LITERAL("bar"); |
210 info.parent_id = 0; | 210 info.parent_id = 0; |
211 info.name = name0; | 211 info.name = name0; |
212 EXPECT_TRUE(db()->AddFileInfo(info, &file_id0)); | 212 EXPECT_TRUE(db()->AddFileInfo(info, &file_id0)); |
213 info.parent_id = file_id0; | 213 info.parent_id = file_id0; |
214 EXPECT_TRUE(db()->AddFileInfo(info, &file_id1)); | 214 EXPECT_TRUE(db()->AddFileInfo(info, &file_id1)); |
215 info.parent_id = 0; | 215 info.parent_id = 0; |
216 EXPECT_FALSE(db()->UpdateFileInfo(file_id1, info)); | 216 EXPECT_FALSE(db()->UpdateFileInfo(file_id1, info)); |
217 info.name = name1; | 217 info.name = name1; |
218 EXPECT_TRUE(db()->UpdateFileInfo(file_id1, info)); | 218 EXPECT_TRUE(db()->UpdateFileInfo(file_id1, info)); |
219 } | 219 } |
220 | 220 |
221 TEST_F(FileSystemDirectoryDatabaseTest, TestMoveRenameNameClash) { | 221 TEST_F(FileSystemDirectoryDatabaseTest, TestMoveRenameNameClash) { |
222 FileInfo info; | 222 FileInfo info; |
223 FileId file_id0; | 223 FileId file_id0; |
224 FileId file_id1; | 224 FileId file_id1; |
225 FilePath::StringType name0 = FILE_PATH_LITERAL("foo"); | 225 base::FilePath::StringType name0 = FILE_PATH_LITERAL("foo"); |
226 FilePath::StringType name1 = FILE_PATH_LITERAL("bar"); | 226 base::FilePath::StringType name1 = FILE_PATH_LITERAL("bar"); |
227 FilePath::StringType name2 = FILE_PATH_LITERAL("bas"); | 227 base::FilePath::StringType name2 = FILE_PATH_LITERAL("bas"); |
228 info.parent_id = 0; | 228 info.parent_id = 0; |
229 info.name = name0; | 229 info.name = name0; |
230 EXPECT_TRUE(db()->AddFileInfo(info, &file_id0)); | 230 EXPECT_TRUE(db()->AddFileInfo(info, &file_id0)); |
231 info.parent_id = file_id0; | 231 info.parent_id = file_id0; |
232 info.name = name1; | 232 info.name = name1; |
233 EXPECT_TRUE(db()->AddFileInfo(info, &file_id1)); | 233 EXPECT_TRUE(db()->AddFileInfo(info, &file_id1)); |
234 info.parent_id = 0; | 234 info.parent_id = 0; |
235 info.name = name0; | 235 info.name = name0; |
236 EXPECT_FALSE(db()->UpdateFileInfo(file_id1, info)); | 236 EXPECT_FALSE(db()->UpdateFileInfo(file_id1, info)); |
237 info.name = name1; | 237 info.name = name1; |
(...skipping 15 matching lines...) Expand all Loading... |
253 EXPECT_TRUE(db()->AddFileInfo(info, &file_id1)); | 253 EXPECT_TRUE(db()->AddFileInfo(info, &file_id1)); |
254 EXPECT_FALSE(db()->RemoveFileInfo(file_id0)); | 254 EXPECT_FALSE(db()->RemoveFileInfo(file_id0)); |
255 EXPECT_TRUE(db()->RemoveFileInfo(file_id1)); | 255 EXPECT_TRUE(db()->RemoveFileInfo(file_id1)); |
256 EXPECT_TRUE(db()->RemoveFileInfo(file_id0)); | 256 EXPECT_TRUE(db()->RemoveFileInfo(file_id0)); |
257 } | 257 } |
258 | 258 |
259 TEST_F(FileSystemDirectoryDatabaseTest, TestGetChildWithName) { | 259 TEST_F(FileSystemDirectoryDatabaseTest, TestGetChildWithName) { |
260 FileInfo info; | 260 FileInfo info; |
261 FileId file_id0; | 261 FileId file_id0; |
262 FileId file_id1; | 262 FileId file_id1; |
263 FilePath::StringType name0 = FILE_PATH_LITERAL("foo"); | 263 base::FilePath::StringType name0 = FILE_PATH_LITERAL("foo"); |
264 FilePath::StringType name1 = FILE_PATH_LITERAL("bar"); | 264 base::FilePath::StringType name1 = FILE_PATH_LITERAL("bar"); |
265 info.parent_id = 0; | 265 info.parent_id = 0; |
266 info.name = name0; | 266 info.name = name0; |
267 EXPECT_TRUE(db()->AddFileInfo(info, &file_id0)); | 267 EXPECT_TRUE(db()->AddFileInfo(info, &file_id0)); |
268 info.parent_id = file_id0; | 268 info.parent_id = file_id0; |
269 info.name = name1; | 269 info.name = name1; |
270 EXPECT_TRUE(db()->AddFileInfo(info, &file_id1)); | 270 EXPECT_TRUE(db()->AddFileInfo(info, &file_id1)); |
271 EXPECT_NE(file_id0, file_id1); | 271 EXPECT_NE(file_id0, file_id1); |
272 | 272 |
273 FileId check_file_id; | 273 FileId check_file_id; |
274 EXPECT_FALSE(db()->GetChildWithName(0, name1, &check_file_id)); | 274 EXPECT_FALSE(db()->GetChildWithName(0, name1, &check_file_id)); |
275 EXPECT_TRUE(db()->GetChildWithName(0, name0, &check_file_id)); | 275 EXPECT_TRUE(db()->GetChildWithName(0, name0, &check_file_id)); |
276 EXPECT_EQ(file_id0, check_file_id); | 276 EXPECT_EQ(file_id0, check_file_id); |
277 EXPECT_FALSE(db()->GetChildWithName(file_id0, name0, &check_file_id)); | 277 EXPECT_FALSE(db()->GetChildWithName(file_id0, name0, &check_file_id)); |
278 EXPECT_TRUE(db()->GetChildWithName(file_id0, name1, &check_file_id)); | 278 EXPECT_TRUE(db()->GetChildWithName(file_id0, name1, &check_file_id)); |
279 EXPECT_EQ(file_id1, check_file_id); | 279 EXPECT_EQ(file_id1, check_file_id); |
280 } | 280 } |
281 | 281 |
282 TEST_F(FileSystemDirectoryDatabaseTest, TestGetFileWithPath) { | 282 TEST_F(FileSystemDirectoryDatabaseTest, TestGetFileWithPath) { |
283 FileInfo info; | 283 FileInfo info; |
284 FileId file_id0; | 284 FileId file_id0; |
285 FileId file_id1; | 285 FileId file_id1; |
286 FileId file_id2; | 286 FileId file_id2; |
287 FilePath::StringType name0 = FILE_PATH_LITERAL("foo"); | 287 base::FilePath::StringType name0 = FILE_PATH_LITERAL("foo"); |
288 FilePath::StringType name1 = FILE_PATH_LITERAL("bar"); | 288 base::FilePath::StringType name1 = FILE_PATH_LITERAL("bar"); |
289 FilePath::StringType name2 = FILE_PATH_LITERAL("dog"); | 289 base::FilePath::StringType name2 = FILE_PATH_LITERAL("dog"); |
290 | 290 |
291 info.parent_id = 0; | 291 info.parent_id = 0; |
292 info.name = name0; | 292 info.name = name0; |
293 EXPECT_TRUE(db()->AddFileInfo(info, &file_id0)); | 293 EXPECT_TRUE(db()->AddFileInfo(info, &file_id0)); |
294 info.parent_id = file_id0; | 294 info.parent_id = file_id0; |
295 info.name = name1; | 295 info.name = name1; |
296 EXPECT_TRUE(db()->AddFileInfo(info, &file_id1)); | 296 EXPECT_TRUE(db()->AddFileInfo(info, &file_id1)); |
297 EXPECT_NE(file_id0, file_id1); | 297 EXPECT_NE(file_id0, file_id1); |
298 info.parent_id = file_id1; | 298 info.parent_id = file_id1; |
299 info.name = name2; | 299 info.name = name2; |
300 EXPECT_TRUE(db()->AddFileInfo(info, &file_id2)); | 300 EXPECT_TRUE(db()->AddFileInfo(info, &file_id2)); |
301 EXPECT_NE(file_id0, file_id2); | 301 EXPECT_NE(file_id0, file_id2); |
302 EXPECT_NE(file_id1, file_id2); | 302 EXPECT_NE(file_id1, file_id2); |
303 | 303 |
304 FileId check_file_id; | 304 FileId check_file_id; |
305 FilePath path = FilePath(name0); | 305 base::FilePath path = base::FilePath(name0); |
306 EXPECT_TRUE(db()->GetFileWithPath(path, &check_file_id)); | 306 EXPECT_TRUE(db()->GetFileWithPath(path, &check_file_id)); |
307 EXPECT_EQ(file_id0, check_file_id); | 307 EXPECT_EQ(file_id0, check_file_id); |
308 | 308 |
309 path = path.Append(name1); | 309 path = path.Append(name1); |
310 EXPECT_TRUE(db()->GetFileWithPath(path, &check_file_id)); | 310 EXPECT_TRUE(db()->GetFileWithPath(path, &check_file_id)); |
311 EXPECT_EQ(file_id1, check_file_id); | 311 EXPECT_EQ(file_id1, check_file_id); |
312 | 312 |
313 path = path.Append(name2); | 313 path = path.Append(name2); |
314 EXPECT_TRUE(db()->GetFileWithPath(path, &check_file_id)); | 314 EXPECT_TRUE(db()->GetFileWithPath(path, &check_file_id)); |
315 EXPECT_EQ(file_id2, check_file_id); | 315 EXPECT_EQ(file_id2, check_file_id); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
369 EXPECT_EQ(children[1], file_id2); | 369 EXPECT_EQ(children[1], file_id2); |
370 EXPECT_EQ(children[0], file_id3); | 370 EXPECT_EQ(children[0], file_id3); |
371 } | 371 } |
372 } | 372 } |
373 | 373 |
374 TEST_F(FileSystemDirectoryDatabaseTest, TestUpdateModificationTime) { | 374 TEST_F(FileSystemDirectoryDatabaseTest, TestUpdateModificationTime) { |
375 FileInfo info0; | 375 FileInfo info0; |
376 FileId file_id; | 376 FileId file_id; |
377 info0.parent_id = 0; | 377 info0.parent_id = 0; |
378 info0.name = FILE_PATH_LITERAL("name"); | 378 info0.name = FILE_PATH_LITERAL("name"); |
379 info0.data_path = FilePath(FILE_PATH_LITERAL("fake path")); | 379 info0.data_path = base::FilePath(FILE_PATH_LITERAL("fake path")); |
380 info0.modification_time = base::Time::Now(); | 380 info0.modification_time = base::Time::Now(); |
381 EXPECT_TRUE(db()->AddFileInfo(info0, &file_id)); | 381 EXPECT_TRUE(db()->AddFileInfo(info0, &file_id)); |
382 FileInfo info1; | 382 FileInfo info1; |
383 EXPECT_TRUE(db()->GetFileInfo(file_id, &info1)); | 383 EXPECT_TRUE(db()->GetFileInfo(file_id, &info1)); |
384 EXPECT_EQ(info0.name, info1.name); | 384 EXPECT_EQ(info0.name, info1.name); |
385 EXPECT_EQ(info0.parent_id, info1.parent_id); | 385 EXPECT_EQ(info0.parent_id, info1.parent_id); |
386 EXPECT_EQ(info0.data_path, info1.data_path); | 386 EXPECT_EQ(info0.data_path, info1.data_path); |
387 EXPECT_EQ( | 387 EXPECT_EQ( |
388 floor(info0.modification_time.ToDoubleT()), | 388 floor(info0.modification_time.ToDoubleT()), |
389 info1.modification_time.ToDoubleT()); | 389 info1.modification_time.ToDoubleT()); |
390 | 390 |
391 EXPECT_TRUE(db()->UpdateModificationTime(file_id, base::Time::UnixEpoch())); | 391 EXPECT_TRUE(db()->UpdateModificationTime(file_id, base::Time::UnixEpoch())); |
392 EXPECT_TRUE(db()->GetFileInfo(file_id, &info1)); | 392 EXPECT_TRUE(db()->GetFileInfo(file_id, &info1)); |
393 EXPECT_EQ(info0.name, info1.name); | 393 EXPECT_EQ(info0.name, info1.name); |
394 EXPECT_EQ(info0.parent_id, info1.parent_id); | 394 EXPECT_EQ(info0.parent_id, info1.parent_id); |
395 EXPECT_EQ(info0.data_path, info1.data_path); | 395 EXPECT_EQ(info0.data_path, info1.data_path); |
396 EXPECT_NE(info0.modification_time, info1.modification_time); | 396 EXPECT_NE(info0.modification_time, info1.modification_time); |
397 EXPECT_EQ( | 397 EXPECT_EQ( |
398 info1.modification_time.ToDoubleT(), | 398 info1.modification_time.ToDoubleT(), |
399 floor(base::Time::UnixEpoch().ToDoubleT())); | 399 floor(base::Time::UnixEpoch().ToDoubleT())); |
400 | 400 |
401 EXPECT_FALSE(db()->UpdateModificationTime(999, base::Time::UnixEpoch())); | 401 EXPECT_FALSE(db()->UpdateModificationTime(999, base::Time::UnixEpoch())); |
402 } | 402 } |
403 | 403 |
404 TEST_F(FileSystemDirectoryDatabaseTest, TestSimpleFileOperations) { | 404 TEST_F(FileSystemDirectoryDatabaseTest, TestSimpleFileOperations) { |
405 FileId file_id = 888; | 405 FileId file_id = 888; |
406 FileInfo info0; | 406 FileInfo info0; |
407 EXPECT_FALSE(db()->GetFileInfo(file_id, &info0)); | 407 EXPECT_FALSE(db()->GetFileInfo(file_id, &info0)); |
408 info0.parent_id = 0; | 408 info0.parent_id = 0; |
409 info0.data_path = FilePath(FILE_PATH_LITERAL("foo")); | 409 info0.data_path = base::FilePath(FILE_PATH_LITERAL("foo")); |
410 info0.name = FILE_PATH_LITERAL("file name"); | 410 info0.name = FILE_PATH_LITERAL("file name"); |
411 info0.modification_time = base::Time::Now(); | 411 info0.modification_time = base::Time::Now(); |
412 EXPECT_TRUE(db()->AddFileInfo(info0, &file_id)); | 412 EXPECT_TRUE(db()->AddFileInfo(info0, &file_id)); |
413 FileInfo info1; | 413 FileInfo info1; |
414 EXPECT_TRUE(db()->GetFileInfo(file_id, &info1)); | 414 EXPECT_TRUE(db()->GetFileInfo(file_id, &info1)); |
415 EXPECT_EQ(info0.parent_id, info1.parent_id); | 415 EXPECT_EQ(info0.parent_id, info1.parent_id); |
416 EXPECT_EQ(info0.data_path, info1.data_path); | 416 EXPECT_EQ(info0.data_path, info1.data_path); |
417 EXPECT_EQ(info0.name, info1.name); | 417 EXPECT_EQ(info0.name, info1.name); |
418 EXPECT_EQ( | 418 EXPECT_EQ( |
419 floor(info0.modification_time.ToDoubleT()), | 419 floor(info0.modification_time.ToDoubleT()), |
420 info1.modification_time.ToDoubleT()); | 420 info1.modification_time.ToDoubleT()); |
421 } | 421 } |
422 | 422 |
423 TEST_F(FileSystemDirectoryDatabaseTest, TestOverwritingMoveFileSrcDirectory) { | 423 TEST_F(FileSystemDirectoryDatabaseTest, TestOverwritingMoveFileSrcDirectory) { |
424 FileId directory_id; | 424 FileId directory_id; |
425 FileInfo info0; | 425 FileInfo info0; |
426 info0.parent_id = 0; | 426 info0.parent_id = 0; |
427 info0.name = FILE_PATH_LITERAL("directory"); | 427 info0.name = FILE_PATH_LITERAL("directory"); |
428 info0.modification_time = base::Time::Now(); | 428 info0.modification_time = base::Time::Now(); |
429 EXPECT_TRUE(db()->AddFileInfo(info0, &directory_id)); | 429 EXPECT_TRUE(db()->AddFileInfo(info0, &directory_id)); |
430 | 430 |
431 FileId file_id; | 431 FileId file_id; |
432 FileInfo info1; | 432 FileInfo info1; |
433 info1.parent_id = 0; | 433 info1.parent_id = 0; |
434 info1.data_path = FilePath(FILE_PATH_LITERAL("bar")); | 434 info1.data_path = base::FilePath(FILE_PATH_LITERAL("bar")); |
435 info1.name = FILE_PATH_LITERAL("file"); | 435 info1.name = FILE_PATH_LITERAL("file"); |
436 info1.modification_time = base::Time::UnixEpoch(); | 436 info1.modification_time = base::Time::UnixEpoch(); |
437 EXPECT_TRUE(db()->AddFileInfo(info1, &file_id)); | 437 EXPECT_TRUE(db()->AddFileInfo(info1, &file_id)); |
438 | 438 |
439 EXPECT_FALSE(db()->OverwritingMoveFile(directory_id, file_id)); | 439 EXPECT_FALSE(db()->OverwritingMoveFile(directory_id, file_id)); |
440 } | 440 } |
441 | 441 |
442 TEST_F(FileSystemDirectoryDatabaseTest, TestOverwritingMoveFileDestDirectory) { | 442 TEST_F(FileSystemDirectoryDatabaseTest, TestOverwritingMoveFileDestDirectory) { |
443 FileId file_id; | 443 FileId file_id; |
444 FileInfo info0; | 444 FileInfo info0; |
445 info0.parent_id = 0; | 445 info0.parent_id = 0; |
446 info0.name = FILE_PATH_LITERAL("file"); | 446 info0.name = FILE_PATH_LITERAL("file"); |
447 info0.data_path = FilePath(FILE_PATH_LITERAL("bar")); | 447 info0.data_path = base::FilePath(FILE_PATH_LITERAL("bar")); |
448 info0.modification_time = base::Time::Now(); | 448 info0.modification_time = base::Time::Now(); |
449 EXPECT_TRUE(db()->AddFileInfo(info0, &file_id)); | 449 EXPECT_TRUE(db()->AddFileInfo(info0, &file_id)); |
450 | 450 |
451 FileId directory_id; | 451 FileId directory_id; |
452 FileInfo info1; | 452 FileInfo info1; |
453 info1.parent_id = 0; | 453 info1.parent_id = 0; |
454 info1.name = FILE_PATH_LITERAL("directory"); | 454 info1.name = FILE_PATH_LITERAL("directory"); |
455 info1.modification_time = base::Time::UnixEpoch(); | 455 info1.modification_time = base::Time::UnixEpoch(); |
456 EXPECT_TRUE(db()->AddFileInfo(info1, &directory_id)); | 456 EXPECT_TRUE(db()->AddFileInfo(info1, &directory_id)); |
457 | 457 |
458 EXPECT_FALSE(db()->OverwritingMoveFile(file_id, directory_id)); | 458 EXPECT_FALSE(db()->OverwritingMoveFile(file_id, directory_id)); |
459 } | 459 } |
460 | 460 |
461 TEST_F(FileSystemDirectoryDatabaseTest, TestOverwritingMoveFileSuccess) { | 461 TEST_F(FileSystemDirectoryDatabaseTest, TestOverwritingMoveFileSuccess) { |
462 FileId file_id0; | 462 FileId file_id0; |
463 FileInfo info0; | 463 FileInfo info0; |
464 info0.parent_id = 0; | 464 info0.parent_id = 0; |
465 info0.data_path = FilePath(FILE_PATH_LITERAL("foo")); | 465 info0.data_path = base::FilePath(FILE_PATH_LITERAL("foo")); |
466 info0.name = FILE_PATH_LITERAL("file name 0"); | 466 info0.name = FILE_PATH_LITERAL("file name 0"); |
467 info0.modification_time = base::Time::Now(); | 467 info0.modification_time = base::Time::Now(); |
468 EXPECT_TRUE(db()->AddFileInfo(info0, &file_id0)); | 468 EXPECT_TRUE(db()->AddFileInfo(info0, &file_id0)); |
469 | 469 |
470 FileInfo dir_info; | 470 FileInfo dir_info; |
471 FileId dir_id; | 471 FileId dir_id; |
472 dir_info.parent_id = 0; | 472 dir_info.parent_id = 0; |
473 dir_info.name = FILE_PATH_LITERAL("directory name"); | 473 dir_info.name = FILE_PATH_LITERAL("directory name"); |
474 EXPECT_TRUE(db()->AddFileInfo(dir_info, &dir_id)); | 474 EXPECT_TRUE(db()->AddFileInfo(dir_info, &dir_id)); |
475 | 475 |
476 FileId file_id1; | 476 FileId file_id1; |
477 FileInfo info1; | 477 FileInfo info1; |
478 info1.parent_id = dir_id; | 478 info1.parent_id = dir_id; |
479 info1.data_path = FilePath(FILE_PATH_LITERAL("bar")); | 479 info1.data_path = base::FilePath(FILE_PATH_LITERAL("bar")); |
480 info1.name = FILE_PATH_LITERAL("file name 1"); | 480 info1.name = FILE_PATH_LITERAL("file name 1"); |
481 info1.modification_time = base::Time::UnixEpoch(); | 481 info1.modification_time = base::Time::UnixEpoch(); |
482 EXPECT_TRUE(db()->AddFileInfo(info1, &file_id1)); | 482 EXPECT_TRUE(db()->AddFileInfo(info1, &file_id1)); |
483 | 483 |
484 EXPECT_TRUE(db()->OverwritingMoveFile(file_id0, file_id1)); | 484 EXPECT_TRUE(db()->OverwritingMoveFile(file_id0, file_id1)); |
485 | 485 |
486 FileInfo check_info; | 486 FileInfo check_info; |
487 FileId check_id; | 487 FileId check_id; |
488 | 488 |
489 EXPECT_FALSE(db()->GetFileWithPath(FilePath(info0.name), &check_id)); | 489 EXPECT_FALSE(db()->GetFileWithPath(base::FilePath(info0.name), &check_id)); |
490 EXPECT_TRUE(db()->GetFileWithPath( | 490 EXPECT_TRUE(db()->GetFileWithPath( |
491 FilePath(dir_info.name).Append(info1.name), &check_id)); | 491 base::FilePath(dir_info.name).Append(info1.name), &check_id)); |
492 EXPECT_TRUE(db()->GetFileInfo(check_id, &check_info)); | 492 EXPECT_TRUE(db()->GetFileInfo(check_id, &check_info)); |
493 | 493 |
494 EXPECT_EQ(info0.data_path, check_info.data_path); | 494 EXPECT_EQ(info0.data_path, check_info.data_path); |
495 } | 495 } |
496 | 496 |
497 TEST_F(FileSystemDirectoryDatabaseTest, TestGetNextInteger) { | 497 TEST_F(FileSystemDirectoryDatabaseTest, TestGetNextInteger) { |
498 int64 next = -1; | 498 int64 next = -1; |
499 EXPECT_TRUE(db()->GetNextInteger(&next)); | 499 EXPECT_TRUE(db()->GetNextInteger(&next)); |
500 EXPECT_EQ(0, next); | 500 EXPECT_EQ(0, next); |
501 EXPECT_TRUE(db()->GetNextInteger(&next)); | 501 EXPECT_TRUE(db()->GetNextInteger(&next)); |
(...skipping 22 matching lines...) Expand all Loading... |
524 CreateFile(0, FPL("foo"), FPL("hoge"), NULL); | 524 CreateFile(0, FPL("foo"), FPL("hoge"), NULL); |
525 CreateDirectory(0, FPL("bar"), &dir_id); | 525 CreateDirectory(0, FPL("bar"), &dir_id); |
526 CreateFile(dir_id, FPL("baz"), FPL("fuga"), NULL); | 526 CreateFile(dir_id, FPL("baz"), FPL("fuga"), NULL); |
527 CreateFile(dir_id, FPL("fizz"), FPL("buzz"), NULL); | 527 CreateFile(dir_id, FPL("fizz"), FPL("buzz"), NULL); |
528 | 528 |
529 EXPECT_TRUE(db()->IsFileSystemConsistent()); | 529 EXPECT_TRUE(db()->IsFileSystemConsistent()); |
530 } | 530 } |
531 | 531 |
532 TEST_F(FileSystemDirectoryDatabaseTest, | 532 TEST_F(FileSystemDirectoryDatabaseTest, |
533 TestConsistencyCheck_BackingMultiEntry) { | 533 TestConsistencyCheck_BackingMultiEntry) { |
534 const FilePath::CharType kBackingFileName[] = FPL("the celeb"); | 534 const base::FilePath::CharType kBackingFileName[] = FPL("the celeb"); |
535 CreateFile(0, FPL("foo"), kBackingFileName, NULL); | 535 CreateFile(0, FPL("foo"), kBackingFileName, NULL); |
536 | 536 |
537 EXPECT_TRUE(db()->IsFileSystemConsistent()); | 537 EXPECT_TRUE(db()->IsFileSystemConsistent()); |
538 ASSERT_TRUE(file_util::Delete(path().Append(kBackingFileName), false)); | 538 ASSERT_TRUE(file_util::Delete(path().Append(kBackingFileName), false)); |
539 CreateFile(0, FPL("bar"), kBackingFileName, NULL); | 539 CreateFile(0, FPL("bar"), kBackingFileName, NULL); |
540 EXPECT_FALSE(db()->IsFileSystemConsistent()); | 540 EXPECT_FALSE(db()->IsFileSystemConsistent()); |
541 } | 541 } |
542 | 542 |
543 TEST_F(FileSystemDirectoryDatabaseTest, TestConsistencyCheck_FileLost) { | 543 TEST_F(FileSystemDirectoryDatabaseTest, TestConsistencyCheck_FileLost) { |
544 const FilePath::CharType kBackingFileName[] = FPL("hoge"); | 544 const base::FilePath::CharType kBackingFileName[] = FPL("hoge"); |
545 CreateFile(0, FPL("foo"), kBackingFileName, NULL); | 545 CreateFile(0, FPL("foo"), kBackingFileName, NULL); |
546 | 546 |
547 EXPECT_TRUE(db()->IsFileSystemConsistent()); | 547 EXPECT_TRUE(db()->IsFileSystemConsistent()); |
548 ASSERT_TRUE(file_util::Delete(path().Append(kBackingFileName), false)); | 548 ASSERT_TRUE(file_util::Delete(path().Append(kBackingFileName), false)); |
549 EXPECT_TRUE(db()->IsFileSystemConsistent()); | 549 EXPECT_TRUE(db()->IsFileSystemConsistent()); |
550 } | 550 } |
551 | 551 |
552 TEST_F(FileSystemDirectoryDatabaseTest, TestConsistencyCheck_OrphanFile) { | 552 TEST_F(FileSystemDirectoryDatabaseTest, TestConsistencyCheck_OrphanFile) { |
553 CreateFile(0, FPL("foo"), FPL("hoge"), NULL); | 553 CreateFile(0, FPL("foo"), FPL("hoge"), NULL); |
554 | 554 |
(...skipping 14 matching lines...) Expand all Loading... |
569 | 569 |
570 TEST_F(FileSystemDirectoryDatabaseTest, TestConsistencyCheck_RootLoop) { | 570 TEST_F(FileSystemDirectoryDatabaseTest, TestConsistencyCheck_RootLoop) { |
571 EXPECT_TRUE(db()->IsFileSystemConsistent()); | 571 EXPECT_TRUE(db()->IsFileSystemConsistent()); |
572 MakeHierarchyLink(0, 0, FPL("")); | 572 MakeHierarchyLink(0, 0, FPL("")); |
573 EXPECT_FALSE(db()->IsFileSystemConsistent()); | 573 EXPECT_FALSE(db()->IsFileSystemConsistent()); |
574 } | 574 } |
575 | 575 |
576 TEST_F(FileSystemDirectoryDatabaseTest, TestConsistencyCheck_DirectoryLoop) { | 576 TEST_F(FileSystemDirectoryDatabaseTest, TestConsistencyCheck_DirectoryLoop) { |
577 FileId dir1_id; | 577 FileId dir1_id; |
578 FileId dir2_id; | 578 FileId dir2_id; |
579 FilePath::StringType dir1_name = FPL("foo"); | 579 base::FilePath::StringType dir1_name = FPL("foo"); |
580 CreateDirectory(0, dir1_name, &dir1_id); | 580 CreateDirectory(0, dir1_name, &dir1_id); |
581 CreateDirectory(dir1_id, FPL("bar"), &dir2_id); | 581 CreateDirectory(dir1_id, FPL("bar"), &dir2_id); |
582 | 582 |
583 EXPECT_TRUE(db()->IsFileSystemConsistent()); | 583 EXPECT_TRUE(db()->IsFileSystemConsistent()); |
584 MakeHierarchyLink(dir2_id, dir1_id, dir1_name); | 584 MakeHierarchyLink(dir2_id, dir1_id, dir1_name); |
585 EXPECT_FALSE(db()->IsFileSystemConsistent()); | 585 EXPECT_FALSE(db()->IsFileSystemConsistent()); |
586 } | 586 } |
587 | 587 |
588 TEST_F(FileSystemDirectoryDatabaseTest, TestConsistencyCheck_NameMismatch) { | 588 TEST_F(FileSystemDirectoryDatabaseTest, TestConsistencyCheck_NameMismatch) { |
589 FileId dir_id; | 589 FileId dir_id; |
(...skipping 13 matching lines...) Expand all Loading... |
603 CreateDirectory(0, FPL("foo"), &dir1_id); | 603 CreateDirectory(0, FPL("foo"), &dir1_id); |
604 CreateDirectory(dir1_id, FPL("bar"), &dir2_id); | 604 CreateDirectory(dir1_id, FPL("bar"), &dir2_id); |
605 CreateFile(dir2_id, FPL("baz"), FPL("fizz/buzz"), NULL); | 605 CreateFile(dir2_id, FPL("baz"), FPL("fizz/buzz"), NULL); |
606 | 606 |
607 EXPECT_TRUE(db()->IsFileSystemConsistent()); | 607 EXPECT_TRUE(db()->IsFileSystemConsistent()); |
608 DeleteHierarchyLink(dir2_id); // Delete link from |dir1_id| to |dir2_id|. | 608 DeleteHierarchyLink(dir2_id); // Delete link from |dir1_id| to |dir2_id|. |
609 EXPECT_FALSE(db()->IsFileSystemConsistent()); | 609 EXPECT_FALSE(db()->IsFileSystemConsistent()); |
610 } | 610 } |
611 | 611 |
612 TEST_F(FileSystemDirectoryDatabaseTest, TestRepairDatabase_Success) { | 612 TEST_F(FileSystemDirectoryDatabaseTest, TestRepairDatabase_Success) { |
613 FilePath::StringType kFileName = FPL("bar"); | 613 base::FilePath::StringType kFileName = FPL("bar"); |
614 | 614 |
615 FileId file_id_prev; | 615 FileId file_id_prev; |
616 CreateFile(0, FPL("foo"), FPL("hoge"), NULL); | 616 CreateFile(0, FPL("foo"), FPL("hoge"), NULL); |
617 CreateFile(0, kFileName, FPL("fuga"), &file_id_prev); | 617 CreateFile(0, kFileName, FPL("fuga"), &file_id_prev); |
618 | 618 |
619 const FilePath kDatabaseDirectory = path().Append(kDirectoryDatabaseName); | 619 const base::FilePath kDatabaseDirectory = path().Append(kDirectoryDatabaseName
); |
620 CloseDatabase(); | 620 CloseDatabase(); |
621 CorruptDatabase(kDatabaseDirectory, leveldb::kDescriptorFile, | 621 CorruptDatabase(kDatabaseDirectory, leveldb::kDescriptorFile, |
622 0, std::numeric_limits<size_t>::max()); | 622 0, std::numeric_limits<size_t>::max()); |
623 InitDatabase(); | 623 InitDatabase(); |
624 EXPECT_FALSE(db()->IsFileSystemConsistent()); | 624 EXPECT_FALSE(db()->IsFileSystemConsistent()); |
625 | 625 |
626 FileId file_id; | 626 FileId file_id; |
627 EXPECT_TRUE(db()->GetChildWithName(0, kFileName, &file_id)); | 627 EXPECT_TRUE(db()->GetChildWithName(0, kFileName, &file_id)); |
628 EXPECT_EQ(file_id_prev, file_id); | 628 EXPECT_EQ(file_id_prev, file_id); |
629 | 629 |
630 EXPECT_TRUE(db()->IsFileSystemConsistent()); | 630 EXPECT_TRUE(db()->IsFileSystemConsistent()); |
631 } | 631 } |
632 | 632 |
633 TEST_F(FileSystemDirectoryDatabaseTest, TestRepairDatabase_Failure) { | 633 TEST_F(FileSystemDirectoryDatabaseTest, TestRepairDatabase_Failure) { |
634 FilePath::StringType kFileName = FPL("bar"); | 634 base::FilePath::StringType kFileName = FPL("bar"); |
635 | 635 |
636 CreateFile(0, FPL("foo"), FPL("hoge"), NULL); | 636 CreateFile(0, FPL("foo"), FPL("hoge"), NULL); |
637 CreateFile(0, kFileName, FPL("fuga"), NULL); | 637 CreateFile(0, kFileName, FPL("fuga"), NULL); |
638 | 638 |
639 const FilePath kDatabaseDirectory = path().Append(kDirectoryDatabaseName); | 639 const base::FilePath kDatabaseDirectory = path().Append(kDirectoryDatabaseName
); |
640 CloseDatabase(); | 640 CloseDatabase(); |
641 CorruptDatabase(kDatabaseDirectory, leveldb::kDescriptorFile, | 641 CorruptDatabase(kDatabaseDirectory, leveldb::kDescriptorFile, |
642 0, std::numeric_limits<size_t>::max()); | 642 0, std::numeric_limits<size_t>::max()); |
643 CorruptDatabase(kDatabaseDirectory, leveldb::kLogFile, | 643 CorruptDatabase(kDatabaseDirectory, leveldb::kLogFile, |
644 -1, 1); | 644 -1, 1); |
645 InitDatabase(); | 645 InitDatabase(); |
646 EXPECT_FALSE(db()->IsFileSystemConsistent()); | 646 EXPECT_FALSE(db()->IsFileSystemConsistent()); |
647 | 647 |
648 FileId file_id; | 648 FileId file_id; |
649 EXPECT_FALSE(db()->GetChildWithName(0, kFileName, &file_id)); | 649 EXPECT_FALSE(db()->GetChildWithName(0, kFileName, &file_id)); |
650 EXPECT_TRUE(db()->IsFileSystemConsistent()); | 650 EXPECT_TRUE(db()->IsFileSystemConsistent()); |
651 } | 651 } |
652 | 652 |
653 } // namespace fileapi | 653 } // namespace fileapi |
OLD | NEW |