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/dom_storage/dom_storage_database.h" | 5 #include "webkit/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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 // as far as the DOM Storage db is concerned. | 47 // as far as the DOM Storage db is concerned. |
48 ASSERT_TRUE(db->is_open()); | 48 ASSERT_TRUE(db->is_open()); |
49 ASSERT_TRUE(db->Execute("DROP TABLE IF EXISTS ItemTable")); | 49 ASSERT_TRUE(db->Execute("DROP TABLE IF EXISTS ItemTable")); |
50 ASSERT_TRUE(db->Execute( | 50 ASSERT_TRUE(db->Execute( |
51 "CREATE TABLE IF NOT EXISTS ItemTable (" | 51 "CREATE TABLE IF NOT EXISTS ItemTable (" |
52 "key TEXT UNIQUE ON CONFLICT REPLACE, " | 52 "key TEXT UNIQUE ON CONFLICT REPLACE, " |
53 "value FLOAT NOT NULL ON CONFLICT FAIL)")); | 53 "value FLOAT NOT NULL ON CONFLICT FAIL)")); |
54 } | 54 } |
55 | 55 |
56 void InsertDataV1(sql::Connection* db, | 56 void InsertDataV1(sql::Connection* db, |
57 const string16& key, | 57 const base::string16& key, |
58 const string16& value) { | 58 const base::string16& value) { |
59 sql::Statement statement(db->GetCachedStatement(SQL_FROM_HERE, | 59 sql::Statement statement(db->GetCachedStatement(SQL_FROM_HERE, |
60 "INSERT INTO ItemTable VALUES (?,?)")); | 60 "INSERT INTO ItemTable VALUES (?,?)")); |
61 statement.BindString16(0, key); | 61 statement.BindString16(0, key); |
62 statement.BindString16(1, value); | 62 statement.BindString16(1, value); |
63 ASSERT_TRUE(statement.is_valid()); | 63 ASSERT_TRUE(statement.is_valid()); |
64 statement.Run(); | 64 statement.Run(); |
65 } | 65 } |
66 | 66 |
67 void CheckValuesMatch(DomStorageDatabase* db, | 67 void CheckValuesMatch(DomStorageDatabase* db, |
68 const ValuesMap& expected) { | 68 const ValuesMap& expected) { |
69 ValuesMap values_read; | 69 ValuesMap values_read; |
70 db->ReadAllValues(&values_read); | 70 db->ReadAllValues(&values_read); |
71 EXPECT_EQ(expected.size(), values_read.size()); | 71 EXPECT_EQ(expected.size(), values_read.size()); |
72 | 72 |
73 ValuesMap::const_iterator it = values_read.begin(); | 73 ValuesMap::const_iterator it = values_read.begin(); |
74 for (; it != values_read.end(); ++it) { | 74 for (; it != values_read.end(); ++it) { |
75 string16 key = it->first; | 75 base::string16 key = it->first; |
76 NullableString16 value = it->second; | 76 NullableString16 value = it->second; |
77 NullableString16 expected_value = expected.find(key)->second; | 77 NullableString16 expected_value = expected.find(key)->second; |
78 EXPECT_EQ(expected_value.string(), value.string()); | 78 EXPECT_EQ(expected_value.string(), value.string()); |
79 EXPECT_EQ(expected_value.is_null(), value.is_null()); | 79 EXPECT_EQ(expected_value.is_null(), value.is_null()); |
80 } | 80 } |
81 } | 81 } |
82 | 82 |
83 void CreateMapWithValues(ValuesMap* values) { | 83 void CreateMapWithValues(ValuesMap* values) { |
84 string16 kCannedKeys[] = { | 84 base::string16 kCannedKeys[] = { |
85 ASCIIToUTF16("test"), | 85 ASCIIToUTF16("test"), |
86 ASCIIToUTF16("company"), | 86 ASCIIToUTF16("company"), |
87 ASCIIToUTF16("date"), | 87 ASCIIToUTF16("date"), |
88 ASCIIToUTF16("empty") | 88 ASCIIToUTF16("empty") |
89 }; | 89 }; |
90 NullableString16 kCannedValues[] = { | 90 NullableString16 kCannedValues[] = { |
91 NullableString16(ASCIIToUTF16("123"), false), | 91 NullableString16(ASCIIToUTF16("123"), false), |
92 NullableString16(ASCIIToUTF16("Google"), false), | 92 NullableString16(ASCIIToUTF16("Google"), false), |
93 NullableString16(ASCIIToUTF16("18-01-2012"), false), | 93 NullableString16(ASCIIToUTF16("18-01-2012"), false), |
94 NullableString16(string16(), false) | 94 NullableString16(base::string16(), false) |
95 }; | 95 }; |
96 for (unsigned i = 0; i < sizeof(kCannedKeys) / sizeof(kCannedKeys[0]); i++) | 96 for (unsigned i = 0; i < sizeof(kCannedKeys) / sizeof(kCannedKeys[0]); i++) |
97 (*values)[kCannedKeys[i]] = kCannedValues[i]; | 97 (*values)[kCannedKeys[i]] = kCannedValues[i]; |
98 } | 98 } |
99 | 99 |
100 TEST(DomStorageDatabaseTest, SimpleOpenAndClose) { | 100 TEST(DomStorageDatabaseTest, SimpleOpenAndClose) { |
101 DomStorageDatabase db; | 101 DomStorageDatabase db; |
102 EXPECT_FALSE(db.IsOpen()); | 102 EXPECT_FALSE(db.IsOpen()); |
103 ASSERT_TRUE(db.LazyOpen(true)); | 103 ASSERT_TRUE(db.LazyOpen(true)); |
104 EXPECT_TRUE(db.IsOpen()); | 104 EXPECT_TRUE(db.IsOpen()); |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
252 ASSERT_TRUE(db.CommitChanges(true, storage)); | 252 ASSERT_TRUE(db.CommitChanges(true, storage)); |
253 CheckValuesMatch(&db, storage); | 253 CheckValuesMatch(&db, storage); |
254 | 254 |
255 // Now clear the values without inserting any new ones. | 255 // Now clear the values without inserting any new ones. |
256 storage.clear(); | 256 storage.clear(); |
257 ASSERT_TRUE(db.CommitChanges(true, storage)); | 257 ASSERT_TRUE(db.CommitChanges(true, storage)); |
258 CheckValuesMatch(&db, storage); | 258 CheckValuesMatch(&db, storage); |
259 } | 259 } |
260 | 260 |
261 TEST(DomStorageDatabaseTest, UpgradeFromV1ToV2WithData) { | 261 TEST(DomStorageDatabaseTest, UpgradeFromV1ToV2WithData) { |
262 const string16 kCannedKey = ASCIIToUTF16("foo"); | 262 const base::string16 kCannedKey = ASCIIToUTF16("foo"); |
263 const NullableString16 kCannedValue(ASCIIToUTF16("bar"), false); | 263 const NullableString16 kCannedValue(ASCIIToUTF16("bar"), false); |
264 ValuesMap expected; | 264 ValuesMap expected; |
265 expected[kCannedKey] = kCannedValue; | 265 expected[kCannedKey] = kCannedValue; |
266 | 266 |
267 DomStorageDatabase db; | 267 DomStorageDatabase db; |
268 db.db_.reset(new sql::Connection()); | 268 db.db_.reset(new sql::Connection()); |
269 ASSERT_TRUE(db.db_->OpenInMemory()); | 269 ASSERT_TRUE(db.db_->OpenInMemory()); |
270 CreateV1Table(db.db_.get()); | 270 CreateV1Table(db.db_.get()); |
271 InsertDataV1(db.db_.get(), kCannedKey, kCannedValue.string()); | 271 InsertDataV1(db.db_.get(), kCannedKey, kCannedValue.string()); |
272 | 272 |
273 ASSERT_TRUE(db.UpgradeVersion1To2()); | 273 ASSERT_TRUE(db.UpgradeVersion1To2()); |
274 | 274 |
275 EXPECT_EQ(DomStorageDatabase::V2, db.DetectSchemaVersion()); | 275 EXPECT_EQ(DomStorageDatabase::V2, db.DetectSchemaVersion()); |
276 | 276 |
277 CheckValuesMatch(&db, expected); | 277 CheckValuesMatch(&db, expected); |
278 } | 278 } |
279 | 279 |
280 TEST(DomStorageDatabaseTest, TestSimpleRemoveOneValue) { | 280 TEST(DomStorageDatabaseTest, TestSimpleRemoveOneValue) { |
281 DomStorageDatabase db; | 281 DomStorageDatabase db; |
282 | 282 |
283 ASSERT_TRUE(db.LazyOpen(true)); | 283 ASSERT_TRUE(db.LazyOpen(true)); |
284 const string16 kCannedKey = ASCIIToUTF16("test"); | 284 const base::string16 kCannedKey = ASCIIToUTF16("test"); |
285 const NullableString16 kCannedValue(ASCIIToUTF16("data"), false); | 285 const NullableString16 kCannedValue(ASCIIToUTF16("data"), false); |
286 ValuesMap expected; | 286 ValuesMap expected; |
287 expected[kCannedKey] = kCannedValue; | 287 expected[kCannedKey] = kCannedValue; |
288 | 288 |
289 // First write some data into the database. | 289 // First write some data into the database. |
290 ASSERT_TRUE(db.CommitChanges(false, expected)); | 290 ASSERT_TRUE(db.CommitChanges(false, expected)); |
291 CheckValuesMatch(&db, expected); | 291 CheckValuesMatch(&db, expected); |
292 | 292 |
293 ValuesMap values; | 293 ValuesMap values; |
294 // A null string in the map should mean that that key gets | 294 // A null string in the map should mean that that key gets |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 | 367 |
368 db.ReadAllValues(&values); | 368 db.ReadAllValues(&values); |
369 EXPECT_EQ(0u, values.size()); | 369 EXPECT_EQ(0u, values.size()); |
370 EXPECT_FALSE(db.IsOpen()); | 370 EXPECT_FALSE(db.IsOpen()); |
371 | 371 |
372 EXPECT_TRUE(file_util::PathExists(temp_dir.path())); | 372 EXPECT_TRUE(file_util::PathExists(temp_dir.path())); |
373 } | 373 } |
374 } | 374 } |
375 | 375 |
376 } // namespace dom_storage | 376 } // namespace dom_storage |
OLD | NEW |