Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(658)

Side by Side Diff: webkit/fileapi/sandbox_directory_database_unittest.cc

Issue 14885021: Cleanup: Prefix HTML5 Sandbox FileSystem related files with 'sandbox_' (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « webkit/fileapi/sandbox_directory_database.cc ('k') | webkit/fileapi/sandbox_origin_database.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/sandbox_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_util.h" 14 #include "base/string_util.h"
15 #include "base/strings/string_number_conversions.h" 15 #include "base/strings/string_number_conversions.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"
19 #include "webkit/fileapi/file_system_util.h" 18 #include "webkit/fileapi/file_system_util.h"
19 #include "webkit/fileapi/sandbox_database_test_helper.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 base::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 SandboxDirectoryDatabaseTest : public testing::Test {
30 public: 30 public:
31 typedef FileSystemDirectoryDatabase::FileId FileId; 31 typedef SandboxDirectoryDatabase::FileId FileId;
32 typedef FileSystemDirectoryDatabase::FileInfo FileInfo; 32 typedef SandboxDirectoryDatabase::FileInfo FileInfo;
33 33
34 FileSystemDirectoryDatabaseTest() { 34 SandboxDirectoryDatabaseTest() {
35 EXPECT_TRUE(base_.CreateUniqueTempDir()); 35 EXPECT_TRUE(base_.CreateUniqueTempDir());
36 InitDatabase(); 36 InitDatabase();
37 } 37 }
38 38
39 FileSystemDirectoryDatabase* db() { 39 SandboxDirectoryDatabase* 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 SandboxDirectoryDatabase(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 base::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;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 SandboxDirectoryDatabase(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 base::FilePath& path() { 113 const base::FilePath& path() {
114 return base_.path(); 114 return base_.path();
115 } 115 }
(...skipping 15 matching lines...) Expand all
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(base::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<SandboxDirectoryDatabase> db_;
142 142
143 DISALLOW_COPY_AND_ASSIGN(FileSystemDirectoryDatabaseTest); 143 DISALLOW_COPY_AND_ASSIGN(SandboxDirectoryDatabaseTest);
144 }; 144 };
145 145
146 TEST_F(FileSystemDirectoryDatabaseTest, TestMissingFileGetInfo) { 146 TEST_F(SandboxDirectoryDatabaseTest, TestMissingFileGetInfo) {
147 FileId file_id = 888; 147 FileId file_id = 888;
148 FileInfo info; 148 FileInfo info;
149 EXPECT_FALSE(db()->GetFileInfo(file_id, &info)); 149 EXPECT_FALSE(db()->GetFileInfo(file_id, &info));
150 } 150 }
151 151
152 TEST_F(FileSystemDirectoryDatabaseTest, TestGetRootFileInfoBeforeCreate) { 152 TEST_F(SandboxDirectoryDatabaseTest, TestGetRootFileInfoBeforeCreate) {
153 FileId file_id = 0; 153 FileId file_id = 0;
154 FileInfo info; 154 FileInfo info;
155 EXPECT_TRUE(db()->GetFileInfo(file_id, &info)); 155 EXPECT_TRUE(db()->GetFileInfo(file_id, &info));
156 EXPECT_EQ(0, info.parent_id); 156 EXPECT_EQ(0, info.parent_id);
157 EXPECT_TRUE(info.name.empty()); 157 EXPECT_TRUE(info.name.empty());
158 EXPECT_TRUE(info.data_path.empty()); 158 EXPECT_TRUE(info.data_path.empty());
159 } 159 }
160 160
161 TEST_F(FileSystemDirectoryDatabaseTest, TestMissingParentAddFileInfo) { 161 TEST_F(SandboxDirectoryDatabaseTest, TestMissingParentAddFileInfo) {
162 FileId parent_id = 7; 162 FileId parent_id = 7;
163 EXPECT_FALSE(AddFileInfo(parent_id, FILE_PATH_LITERAL("foo"))); 163 EXPECT_FALSE(AddFileInfo(parent_id, FILE_PATH_LITERAL("foo")));
164 } 164 }
165 165
166 TEST_F(FileSystemDirectoryDatabaseTest, TestAddNameClash) { 166 TEST_F(SandboxDirectoryDatabaseTest, 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 base::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(SandboxDirectoryDatabaseTest, TestRenameNoMoveNameClash) {
189 FileInfo info; 189 FileInfo info;
190 FileId file_id0; 190 FileId file_id0;
191 base::FilePath::StringType name0 = FILE_PATH_LITERAL("foo"); 191 base::FilePath::StringType name0 = FILE_PATH_LITERAL("foo");
192 base::FilePath::StringType name1 = FILE_PATH_LITERAL("bar"); 192 base::FilePath::StringType name1 = FILE_PATH_LITERAL("bar");
193 base::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(SandboxDirectoryDatabaseTest, TestMoveSameNameNameClash) {
205 FileInfo info; 205 FileInfo info;
206 FileId file_id0; 206 FileId file_id0;
207 FileId file_id1; 207 FileId file_id1;
208 base::FilePath::StringType name0 = FILE_PATH_LITERAL("foo"); 208 base::FilePath::StringType name0 = FILE_PATH_LITERAL("foo");
209 base::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(SandboxDirectoryDatabaseTest, TestMoveRenameNameClash) {
222 FileInfo info; 222 FileInfo info;
223 FileId file_id0; 223 FileId file_id0;
224 FileId file_id1; 224 FileId file_id1;
225 base::FilePath::StringType name0 = FILE_PATH_LITERAL("foo"); 225 base::FilePath::StringType name0 = FILE_PATH_LITERAL("foo");
226 base::FilePath::StringType name1 = FILE_PATH_LITERAL("bar"); 226 base::FilePath::StringType name1 = FILE_PATH_LITERAL("bar");
227 base::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;
238 EXPECT_TRUE(db()->UpdateFileInfo(file_id1, info)); 238 EXPECT_TRUE(db()->UpdateFileInfo(file_id1, info));
239 // Also test a successful move+rename. 239 // Also test a successful move+rename.
240 info.parent_id = file_id0; 240 info.parent_id = file_id0;
241 info.name = name2; 241 info.name = name2;
242 EXPECT_TRUE(db()->UpdateFileInfo(file_id1, info)); 242 EXPECT_TRUE(db()->UpdateFileInfo(file_id1, info));
243 } 243 }
244 244
245 TEST_F(FileSystemDirectoryDatabaseTest, TestRemoveWithChildren) { 245 TEST_F(SandboxDirectoryDatabaseTest, TestRemoveWithChildren) {
246 FileInfo info; 246 FileInfo info;
247 FileId file_id0; 247 FileId file_id0;
248 FileId file_id1; 248 FileId file_id1;
249 info.parent_id = 0; 249 info.parent_id = 0;
250 info.name = FILE_PATH_LITERAL("foo"); 250 info.name = FILE_PATH_LITERAL("foo");
251 EXPECT_TRUE(db()->AddFileInfo(info, &file_id0)); 251 EXPECT_TRUE(db()->AddFileInfo(info, &file_id0));
252 info.parent_id = file_id0; 252 info.parent_id = file_id0;
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(SandboxDirectoryDatabaseTest, TestGetChildWithName) {
260 FileInfo info; 260 FileInfo info;
261 FileId file_id0; 261 FileId file_id0;
262 FileId file_id1; 262 FileId file_id1;
263 base::FilePath::StringType name0 = FILE_PATH_LITERAL("foo"); 263 base::FilePath::StringType name0 = FILE_PATH_LITERAL("foo");
264 base::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(SandboxDirectoryDatabaseTest, 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 base::FilePath::StringType name0 = FILE_PATH_LITERAL("foo"); 287 base::FilePath::StringType name0 = FILE_PATH_LITERAL("foo");
288 base::FilePath::StringType name1 = FILE_PATH_LITERAL("bar"); 288 base::FilePath::StringType name1 = FILE_PATH_LITERAL("bar");
289 base::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;
(...skipping 15 matching lines...) Expand all
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);
316 } 316 }
317 317
318 TEST_F(FileSystemDirectoryDatabaseTest, TestListChildren) { 318 TEST_F(SandboxDirectoryDatabaseTest, TestListChildren) {
319 // No children in the root. 319 // No children in the root.
320 std::vector<FileId> children; 320 std::vector<FileId> children;
321 EXPECT_TRUE(db()->ListChildren(0, &children)); 321 EXPECT_TRUE(db()->ListChildren(0, &children));
322 EXPECT_TRUE(children.empty()); 322 EXPECT_TRUE(children.empty());
323 323
324 // One child in the root. 324 // One child in the root.
325 FileId file_id0; 325 FileId file_id0;
326 FileInfo info; 326 FileInfo info;
327 info.parent_id = 0; 327 info.parent_id = 0;
328 info.name = FILE_PATH_LITERAL("foo"); 328 info.name = FILE_PATH_LITERAL("foo");
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 EXPECT_TRUE(db()->ListChildren(file_id0, &children)); 364 EXPECT_TRUE(db()->ListChildren(file_id0, &children));
365 EXPECT_EQ(2UL, children.size()); 365 EXPECT_EQ(2UL, children.size());
366 if (children[0] == file_id2) { 366 if (children[0] == file_id2) {
367 EXPECT_EQ(children[1], file_id3); 367 EXPECT_EQ(children[1], file_id3);
368 } else { 368 } else {
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(SandboxDirectoryDatabaseTest, 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 = base::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(SandboxDirectoryDatabaseTest, 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 = base::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(SandboxDirectoryDatabaseTest, 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 = base::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(SandboxDirectoryDatabaseTest, 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 = base::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(SandboxDirectoryDatabaseTest, 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 = base::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;
(...skipping 15 matching lines...) Expand all
487 FileId check_id; 487 FileId check_id;
488 488
489 EXPECT_FALSE(db()->GetFileWithPath(base::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 base::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(SandboxDirectoryDatabaseTest, 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));
502 EXPECT_EQ(1, next); 502 EXPECT_EQ(1, next);
503 InitDatabase(); 503 InitDatabase();
504 EXPECT_TRUE(db()->GetNextInteger(&next)); 504 EXPECT_TRUE(db()->GetNextInteger(&next));
505 EXPECT_EQ(2, next); 505 EXPECT_EQ(2, next);
506 EXPECT_TRUE(db()->GetNextInteger(&next)); 506 EXPECT_TRUE(db()->GetNextInteger(&next));
507 EXPECT_EQ(3, next); 507 EXPECT_EQ(3, next);
508 InitDatabase(); 508 InitDatabase();
509 EXPECT_TRUE(db()->GetNextInteger(&next)); 509 EXPECT_TRUE(db()->GetNextInteger(&next));
510 EXPECT_EQ(4, next); 510 EXPECT_EQ(4, next);
511 } 511 }
512 512
513 TEST_F(FileSystemDirectoryDatabaseTest, TestConsistencyCheck_Empty) { 513 TEST_F(SandboxDirectoryDatabaseTest, TestConsistencyCheck_Empty) {
514 EXPECT_TRUE(db()->IsFileSystemConsistent()); 514 EXPECT_TRUE(db()->IsFileSystemConsistent());
515 515
516 int64 next = -1; 516 int64 next = -1;
517 EXPECT_TRUE(db()->GetNextInteger(&next)); 517 EXPECT_TRUE(db()->GetNextInteger(&next));
518 EXPECT_EQ(0, next); 518 EXPECT_EQ(0, next);
519 EXPECT_TRUE(db()->IsFileSystemConsistent()); 519 EXPECT_TRUE(db()->IsFileSystemConsistent());
520 } 520 }
521 521
522 TEST_F(FileSystemDirectoryDatabaseTest, TestConsistencyCheck_Consistent) { 522 TEST_F(SandboxDirectoryDatabaseTest, TestConsistencyCheck_Consistent) {
523 FileId dir_id; 523 FileId dir_id;
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(SandboxDirectoryDatabaseTest,
533 TestConsistencyCheck_BackingMultiEntry) { 533 TestConsistencyCheck_BackingMultiEntry) {
534 const base::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(SandboxDirectoryDatabaseTest, TestConsistencyCheck_FileLost) {
544 const base::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(SandboxDirectoryDatabaseTest, TestConsistencyCheck_OrphanFile) {
553 CreateFile(0, FPL("foo"), FPL("hoge"), NULL); 553 CreateFile(0, FPL("foo"), FPL("hoge"), NULL);
554 554
555 EXPECT_TRUE(db()->IsFileSystemConsistent()); 555 EXPECT_TRUE(db()->IsFileSystemConsistent());
556 556
557 bool created = false; 557 bool created = false;
558 base::PlatformFileError error = base::PLATFORM_FILE_ERROR_FAILED; 558 base::PlatformFileError error = base::PLATFORM_FILE_ERROR_FAILED;
559 base::PlatformFile file = base::CreatePlatformFile( 559 base::PlatformFile file = base::CreatePlatformFile(
560 path().Append(FPL("Orphan File")), 560 path().Append(FPL("Orphan File")),
561 base::PLATFORM_FILE_CREATE | base::PLATFORM_FILE_WRITE, 561 base::PLATFORM_FILE_CREATE | base::PLATFORM_FILE_WRITE,
562 &created, &error); 562 &created, &error);
563 ASSERT_EQ(base::PLATFORM_FILE_OK, error); 563 ASSERT_EQ(base::PLATFORM_FILE_OK, error);
564 ASSERT_TRUE(created); 564 ASSERT_TRUE(created);
565 ASSERT_TRUE(base::ClosePlatformFile(file)); 565 ASSERT_TRUE(base::ClosePlatformFile(file));
566 566
567 EXPECT_TRUE(db()->IsFileSystemConsistent()); 567 EXPECT_TRUE(db()->IsFileSystemConsistent());
568 } 568 }
569 569
570 TEST_F(FileSystemDirectoryDatabaseTest, TestConsistencyCheck_RootLoop) { 570 TEST_F(SandboxDirectoryDatabaseTest, TestConsistencyCheck_RootLoop) {
571 EXPECT_TRUE(db()->IsFileSystemConsistent()); 571 EXPECT_TRUE(db()->IsFileSystemConsistent());
572 MakeHierarchyLink(0, 0, base::FilePath::StringType()); 572 MakeHierarchyLink(0, 0, base::FilePath::StringType());
573 EXPECT_FALSE(db()->IsFileSystemConsistent()); 573 EXPECT_FALSE(db()->IsFileSystemConsistent());
574 } 574 }
575 575
576 TEST_F(FileSystemDirectoryDatabaseTest, TestConsistencyCheck_DirectoryLoop) { 576 TEST_F(SandboxDirectoryDatabaseTest, TestConsistencyCheck_DirectoryLoop) {
577 FileId dir1_id; 577 FileId dir1_id;
578 FileId dir2_id; 578 FileId dir2_id;
579 base::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(SandboxDirectoryDatabaseTest, TestConsistencyCheck_NameMismatch) {
589 FileId dir_id; 589 FileId dir_id;
590 FileId file_id; 590 FileId file_id;
591 CreateDirectory(0, FPL("foo"), &dir_id); 591 CreateDirectory(0, FPL("foo"), &dir_id);
592 CreateFile(dir_id, FPL("bar"), FPL("hoge/fuga/piyo"), &file_id); 592 CreateFile(dir_id, FPL("bar"), FPL("hoge/fuga/piyo"), &file_id);
593 593
594 EXPECT_TRUE(db()->IsFileSystemConsistent()); 594 EXPECT_TRUE(db()->IsFileSystemConsistent());
595 DeleteHierarchyLink(file_id); 595 DeleteHierarchyLink(file_id);
596 MakeHierarchyLink(dir_id, file_id, FPL("baz")); 596 MakeHierarchyLink(dir_id, file_id, FPL("baz"));
597 EXPECT_FALSE(db()->IsFileSystemConsistent()); 597 EXPECT_FALSE(db()->IsFileSystemConsistent());
598 } 598 }
599 599
600 TEST_F(FileSystemDirectoryDatabaseTest, TestConsistencyCheck_WreckedEntries) { 600 TEST_F(SandboxDirectoryDatabaseTest, TestConsistencyCheck_WreckedEntries) {
601 FileId dir1_id; 601 FileId dir1_id;
602 FileId dir2_id; 602 FileId dir2_id;
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(SandboxDirectoryDatabaseTest, TestRepairDatabase_Success) {
613 base::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 base::FilePath kDatabaseDirectory = path().Append(kDirectoryDatabaseName ); 619 const base::FilePath kDatabaseDirectory =
620 path().Append(kDirectoryDatabaseName);
620 CloseDatabase(); 621 CloseDatabase();
621 CorruptDatabase(kDatabaseDirectory, leveldb::kDescriptorFile, 622 CorruptDatabase(kDatabaseDirectory, leveldb::kDescriptorFile,
622 0, std::numeric_limits<size_t>::max()); 623 0, std::numeric_limits<size_t>::max());
623 InitDatabase(); 624 InitDatabase();
624 EXPECT_FALSE(db()->IsFileSystemConsistent()); 625 EXPECT_FALSE(db()->IsFileSystemConsistent());
625 626
626 FileId file_id; 627 FileId file_id;
627 EXPECT_TRUE(db()->GetChildWithName(0, kFileName, &file_id)); 628 EXPECT_TRUE(db()->GetChildWithName(0, kFileName, &file_id));
628 EXPECT_EQ(file_id_prev, file_id); 629 EXPECT_EQ(file_id_prev, file_id);
629 630
630 EXPECT_TRUE(db()->IsFileSystemConsistent()); 631 EXPECT_TRUE(db()->IsFileSystemConsistent());
631 } 632 }
632 633
633 TEST_F(FileSystemDirectoryDatabaseTest, TestRepairDatabase_Failure) { 634 TEST_F(SandboxDirectoryDatabaseTest, TestRepairDatabase_Failure) {
634 base::FilePath::StringType kFileName = FPL("bar"); 635 base::FilePath::StringType kFileName = FPL("bar");
635 636
636 CreateFile(0, FPL("foo"), FPL("hoge"), NULL); 637 CreateFile(0, FPL("foo"), FPL("hoge"), NULL);
637 CreateFile(0, kFileName, FPL("fuga"), NULL); 638 CreateFile(0, kFileName, FPL("fuga"), NULL);
638 639
639 const base::FilePath kDatabaseDirectory = path().Append(kDirectoryDatabaseName ); 640 const base::FilePath kDatabaseDirectory =
641 path().Append(kDirectoryDatabaseName);
640 CloseDatabase(); 642 CloseDatabase();
641 CorruptDatabase(kDatabaseDirectory, leveldb::kDescriptorFile, 643 CorruptDatabase(kDatabaseDirectory, leveldb::kDescriptorFile,
642 0, std::numeric_limits<size_t>::max()); 644 0, std::numeric_limits<size_t>::max());
643 CorruptDatabase(kDatabaseDirectory, leveldb::kLogFile, 645 CorruptDatabase(kDatabaseDirectory, leveldb::kLogFile,
644 -1, 1); 646 -1, 1);
645 InitDatabase(); 647 InitDatabase();
646 EXPECT_FALSE(db()->IsFileSystemConsistent()); 648 EXPECT_FALSE(db()->IsFileSystemConsistent());
647 649
648 FileId file_id; 650 FileId file_id;
649 EXPECT_FALSE(db()->GetChildWithName(0, kFileName, &file_id)); 651 EXPECT_FALSE(db()->GetChildWithName(0, kFileName, &file_id));
650 EXPECT_TRUE(db()->IsFileSystemConsistent()); 652 EXPECT_TRUE(db()->IsFileSystemConsistent());
651 } 653 }
652 654
653 TEST_F(FileSystemDirectoryDatabaseTest, TestRepairDatabase_MissingManifest) { 655 TEST_F(SandboxDirectoryDatabaseTest, TestRepairDatabase_MissingManifest) {
654 base::FilePath::StringType kFileName = FPL("bar"); 656 base::FilePath::StringType kFileName = FPL("bar");
655 657
656 FileId file_id_prev; 658 FileId file_id_prev;
657 CreateFile(0, FPL("foo"), FPL("hoge"), NULL); 659 CreateFile(0, FPL("foo"), FPL("hoge"), NULL);
658 CreateFile(0, kFileName, FPL("fuga"), &file_id_prev); 660 CreateFile(0, kFileName, FPL("fuga"), &file_id_prev);
659 661
660 const base::FilePath kDatabaseDirectory = 662 const base::FilePath kDatabaseDirectory =
661 path().Append(kDirectoryDatabaseName); 663 path().Append(kDirectoryDatabaseName);
662 CloseDatabase(); 664 CloseDatabase();
663 665
664 DeleteDatabaseFile(kDatabaseDirectory, leveldb::kDescriptorFile); 666 DeleteDatabaseFile(kDatabaseDirectory, leveldb::kDescriptorFile);
665 667
666 InitDatabase(); 668 InitDatabase();
667 EXPECT_FALSE(db()->IsFileSystemConsistent()); 669 EXPECT_FALSE(db()->IsFileSystemConsistent());
668 670
669 FileId file_id; 671 FileId file_id;
670 EXPECT_TRUE(db()->GetChildWithName(0, kFileName, &file_id)); 672 EXPECT_TRUE(db()->GetChildWithName(0, kFileName, &file_id));
671 EXPECT_EQ(file_id_prev, file_id); 673 EXPECT_EQ(file_id_prev, file_id);
672 674
673 EXPECT_TRUE(db()->IsFileSystemConsistent()); 675 EXPECT_TRUE(db()->IsFileSystemConsistent());
674 } 676 }
675 677
676 } // namespace fileapi 678 } // namespace fileapi
OLDNEW
« no previous file with comments | « webkit/fileapi/sandbox_directory_database.cc ('k') | webkit/fileapi/sandbox_origin_database.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698