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/browser/dom_storage/dom_storage_database.h" | 5 #include "webkit/browser/dom_storage/dom_storage_database.h" |
6 | 6 |
7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
9 #include "base/files/scoped_temp_dir.h" | 9 #include "base/files/scoped_temp_dir.h" |
10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 ValuesMap storage; | 115 ValuesMap storage; |
116 CreateMapWithValues(&storage); | 116 CreateMapWithValues(&storage); |
117 | 117 |
118 // First test the case that explicitly clearing the database will | 118 // First test the case that explicitly clearing the database will |
119 // trigger its deletion from disk. | 119 // trigger its deletion from disk. |
120 { | 120 { |
121 DomStorageDatabase db(file_name); | 121 DomStorageDatabase db(file_name); |
122 EXPECT_EQ(file_name, db.file_path()); | 122 EXPECT_EQ(file_name, db.file_path()); |
123 ASSERT_TRUE(db.CommitChanges(false, storage)); | 123 ASSERT_TRUE(db.CommitChanges(false, storage)); |
124 } | 124 } |
125 EXPECT_TRUE(file_util::PathExists(file_name)); | 125 EXPECT_TRUE(base::PathExists(file_name)); |
126 | 126 |
127 { | 127 { |
128 // Check that reading an existing db with data in it | 128 // Check that reading an existing db with data in it |
129 // keeps the DB on disk on close. | 129 // keeps the DB on disk on close. |
130 DomStorageDatabase db(file_name); | 130 DomStorageDatabase db(file_name); |
131 ValuesMap values; | 131 ValuesMap values; |
132 db.ReadAllValues(&values); | 132 db.ReadAllValues(&values); |
133 EXPECT_EQ(storage.size(), values.size()); | 133 EXPECT_EQ(storage.size(), values.size()); |
134 } | 134 } |
135 | 135 |
136 EXPECT_TRUE(file_util::PathExists(file_name)); | 136 EXPECT_TRUE(base::PathExists(file_name)); |
137 storage.clear(); | 137 storage.clear(); |
138 | 138 |
139 { | 139 { |
140 DomStorageDatabase db(file_name); | 140 DomStorageDatabase db(file_name); |
141 ASSERT_TRUE(db.CommitChanges(true, storage)); | 141 ASSERT_TRUE(db.CommitChanges(true, storage)); |
142 } | 142 } |
143 EXPECT_FALSE(file_util::PathExists(file_name)); | 143 EXPECT_FALSE(base::PathExists(file_name)); |
144 | 144 |
145 // Now ensure that a series of updates and removals whose net effect | 145 // Now ensure that a series of updates and removals whose net effect |
146 // is an empty database also triggers deletion. | 146 // is an empty database also triggers deletion. |
147 CreateMapWithValues(&storage); | 147 CreateMapWithValues(&storage); |
148 { | 148 { |
149 DomStorageDatabase db(file_name); | 149 DomStorageDatabase db(file_name); |
150 ASSERT_TRUE(db.CommitChanges(false, storage)); | 150 ASSERT_TRUE(db.CommitChanges(false, storage)); |
151 } | 151 } |
152 | 152 |
153 EXPECT_TRUE(file_util::PathExists(file_name)); | 153 EXPECT_TRUE(base::PathExists(file_name)); |
154 | 154 |
155 { | 155 { |
156 DomStorageDatabase db(file_name); | 156 DomStorageDatabase db(file_name); |
157 ASSERT_TRUE(db.CommitChanges(false, storage)); | 157 ASSERT_TRUE(db.CommitChanges(false, storage)); |
158 ValuesMap::iterator it = storage.begin(); | 158 ValuesMap::iterator it = storage.begin(); |
159 for (; it != storage.end(); ++it) | 159 for (; it != storage.end(); ++it) |
160 it->second = base::NullableString16(); | 160 it->second = base::NullableString16(); |
161 ASSERT_TRUE(db.CommitChanges(false, storage)); | 161 ASSERT_TRUE(db.CommitChanges(false, storage)); |
162 } | 162 } |
163 EXPECT_FALSE(file_util::PathExists(file_name)); | 163 EXPECT_FALSE(base::PathExists(file_name)); |
164 } | 164 } |
165 | 165 |
166 TEST(DomStorageDatabaseTest, TestLazyOpenIsLazy) { | 166 TEST(DomStorageDatabaseTest, TestLazyOpenIsLazy) { |
167 // This test needs to operate with a file on disk to ensure that we will | 167 // This test needs to operate with a file on disk to ensure that we will |
168 // open a file that already exists when only invoking ReadAllValues. | 168 // open a file that already exists when only invoking ReadAllValues. |
169 base::ScopedTempDir temp_dir; | 169 base::ScopedTempDir temp_dir; |
170 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 170 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
171 base::FilePath file_name = | 171 base::FilePath file_name = |
172 temp_dir.path().AppendASCII("TestDomStorageDatabase.db"); | 172 temp_dir.path().AppendASCII("TestDomStorageDatabase.db"); |
173 | 173 |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
306 | 306 |
307 TEST(DomStorageDatabaseTest, TestCanOpenAndReadWebCoreDatabase) { | 307 TEST(DomStorageDatabaseTest, TestCanOpenAndReadWebCoreDatabase) { |
308 base::FilePath webcore_database; | 308 base::FilePath webcore_database; |
309 PathService::Get(base::DIR_SOURCE_ROOT, &webcore_database); | 309 PathService::Get(base::DIR_SOURCE_ROOT, &webcore_database); |
310 webcore_database = webcore_database.AppendASCII("webkit"); | 310 webcore_database = webcore_database.AppendASCII("webkit"); |
311 webcore_database = webcore_database.AppendASCII("data"); | 311 webcore_database = webcore_database.AppendASCII("data"); |
312 webcore_database = webcore_database.AppendASCII("dom_storage"); | 312 webcore_database = webcore_database.AppendASCII("dom_storage"); |
313 webcore_database = | 313 webcore_database = |
314 webcore_database.AppendASCII("webcore_test_database.localstorage"); | 314 webcore_database.AppendASCII("webcore_test_database.localstorage"); |
315 | 315 |
316 ASSERT_TRUE(file_util::PathExists(webcore_database)); | 316 ASSERT_TRUE(base::PathExists(webcore_database)); |
317 | 317 |
318 DomStorageDatabase db(webcore_database); | 318 DomStorageDatabase db(webcore_database); |
319 ValuesMap values; | 319 ValuesMap values; |
320 db.ReadAllValues(&values); | 320 db.ReadAllValues(&values); |
321 EXPECT_TRUE(db.IsOpen()); | 321 EXPECT_TRUE(db.IsOpen()); |
322 EXPECT_EQ(2u, values.size()); | 322 EXPECT_EQ(2u, values.size()); |
323 | 323 |
324 ValuesMap::const_iterator it = | 324 ValuesMap::const_iterator it = |
325 values.find(ASCIIToUTF16("value")); | 325 values.find(ASCIIToUTF16("value")); |
326 EXPECT_TRUE(it != values.end()); | 326 EXPECT_TRUE(it != values.end()); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 EXPECT_FALSE(db.CommitChanges(true, values)); | 367 EXPECT_FALSE(db.CommitChanges(true, values)); |
368 EXPECT_FALSE(db.CommitChanges(false, values)); | 368 EXPECT_FALSE(db.CommitChanges(false, values)); |
369 EXPECT_FALSE(db.IsOpen()); | 369 EXPECT_FALSE(db.IsOpen()); |
370 | 370 |
371 values.clear(); | 371 values.clear(); |
372 | 372 |
373 db.ReadAllValues(&values); | 373 db.ReadAllValues(&values); |
374 EXPECT_EQ(0u, values.size()); | 374 EXPECT_EQ(0u, values.size()); |
375 EXPECT_FALSE(db.IsOpen()); | 375 EXPECT_FALSE(db.IsOpen()); |
376 | 376 |
377 EXPECT_TRUE(file_util::PathExists(temp_dir.path())); | 377 EXPECT_TRUE(base::PathExists(temp_dir.path())); |
378 } | 378 } |
379 } | 379 } |
380 | 380 |
381 } // namespace dom_storage | 381 } // namespace dom_storage |
OLD | NEW |