| 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 | 5 |
| 6 #include "webkit/dom_storage/session_storage_database.h" | 6 #include "webkit/dom_storage/session_storage_database.h" |
| 7 | 7 |
| 8 #include <algorithm> | 8 #include <algorithm> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 const NullableString16 kValue3; | 76 const NullableString16 kValue3; |
| 77 const NullableString16 kValue4; | 77 const NullableString16 kValue4; |
| 78 const NullableString16 kValueNull; | 78 const NullableString16 kValueNull; |
| 79 | 79 |
| 80 DISALLOW_COPY_AND_ASSIGN(SessionStorageDatabaseTest); | 80 DISALLOW_COPY_AND_ASSIGN(SessionStorageDatabaseTest); |
| 81 }; | 81 }; |
| 82 | 82 |
| 83 SessionStorageDatabaseTest::SessionStorageDatabaseTest() | 83 SessionStorageDatabaseTest::SessionStorageDatabaseTest() |
| 84 : kOrigin1("http://www.origin1.com"), | 84 : kOrigin1("http://www.origin1.com"), |
| 85 kOrigin2("http://www.origin2.com"), | 85 kOrigin2("http://www.origin2.com"), |
| 86 kNamespace1("1"), | 86 kNamespace1("namespace1"), |
| 87 kNamespace2("namespace2"), | 87 kNamespace2("namespace2"), |
| 88 kNamespaceClone("wascloned"), | 88 kNamespaceClone("wascloned"), |
| 89 kKey1(ASCIIToUTF16("key1")), | 89 kKey1(ASCIIToUTF16("key1")), |
| 90 kKey2(ASCIIToUTF16("key2")), | 90 kKey2(ASCIIToUTF16("key2")), |
| 91 kKey3(ASCIIToUTF16("key3")), | 91 kKey3(ASCIIToUTF16("key3")), |
| 92 kValue1(NullableString16(ASCIIToUTF16("value1"), false)), | 92 kValue1(NullableString16(ASCIIToUTF16("value1"), false)), |
| 93 kValue2(NullableString16(ASCIIToUTF16("value2"), false)), | 93 kValue2(NullableString16(ASCIIToUTF16("value2"), false)), |
| 94 kValue3(NullableString16(ASCIIToUTF16("value3"), false)), | 94 kValue3(NullableString16(ASCIIToUTF16("value3"), false)), |
| 95 kValue4(NullableString16(ASCIIToUTF16("value4"), false)), | 95 kValue4(NullableString16(ASCIIToUTF16("value4"), false)), |
| 96 kValueNull(NullableString16(true)) { } | 96 kValueNull(NullableString16(true)) { } |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 206 // keys. | 206 // keys. |
| 207 for (DataMap::const_iterator it = data.begin(); it != data.end(); ++it) { | 207 for (DataMap::const_iterator it = data.begin(); it != data.end(); ++it) { |
| 208 ASSERT_TRUE(it->first == next_map_id_key); | 208 ASSERT_TRUE(it->first == next_map_id_key); |
| 209 } | 209 } |
| 210 return; | 210 return; |
| 211 } | 211 } |
| 212 ++valid_keys; | 212 ++valid_keys; |
| 213 | 213 |
| 214 // Iterate the "namespace-" keys. | 214 // Iterate the "namespace-" keys. |
| 215 std::set<std::string> found_namespace_ids; | 215 std::set<std::string> found_namespace_ids; |
| 216 std::set<std::string> namespaces_with_areas; |
| 216 std::map<int64, int64> expected_map_refcounts; | 217 std::map<int64, int64> expected_map_refcounts; |
| 217 int64 max_map_id = -1; | 218 int64 max_map_id = -1; |
| 218 | 219 |
| 219 for (DataMap::const_iterator it = data.begin(); it != data.end(); ++it) { | 220 for (DataMap::const_iterator it = data.begin(); it != data.end(); ++it) { |
| 220 std::string namespace_id; | 221 std::string namespace_id; |
| 221 std::string origin; | 222 std::string origin; |
| 222 if (IsNamespaceKey(it->first, &namespace_id)) { | 223 if (IsNamespaceKey(it->first, &namespace_id)) { |
| 223 found_namespace_ids.insert(namespace_id); | 224 found_namespace_ids.insert(namespace_id); |
| 224 ++valid_keys; | 225 ++valid_keys; |
| 225 } else if (IsNamespaceOriginKey( | 226 } else if (IsNamespaceOriginKey( |
| 226 it->first, &namespace_id)) { | 227 it->first, &namespace_id)) { |
| 227 // Check that the corresponding "namespace-<namespaceid>-" key exists. It | 228 // Check that the corresponding "namespace-<namespaceid>-" key exists. It |
| 228 // has been read by now, since the keys are stored in order. | 229 // has been read by now, since the keys are stored in order. |
| 229 ASSERT_TRUE(found_namespace_ids.find(namespace_id) != | 230 ASSERT_TRUE(found_namespace_ids.find(namespace_id) != |
| 230 found_namespace_ids.end()); | 231 found_namespace_ids.end()); |
| 232 namespaces_with_areas.insert(namespace_id); |
| 231 int64 map_id; | 233 int64 map_id; |
| 232 bool conversion_ok = base::StringToInt64(it->second, &map_id); | 234 bool conversion_ok = base::StringToInt64(it->second, &map_id); |
| 233 ASSERT_TRUE(conversion_ok); | 235 ASSERT_TRUE(conversion_ok); |
| 234 ASSERT_GE(map_id, 0); | 236 ASSERT_GE(map_id, 0); |
| 235 ++expected_map_refcounts[map_id]; | 237 ++expected_map_refcounts[map_id]; |
| 236 max_map_id = std::max(map_id, max_map_id); | 238 max_map_id = std::max(map_id, max_map_id); |
| 237 ++valid_keys; | 239 ++valid_keys; |
| 238 } | 240 } |
| 239 } | 241 } |
| 242 // Check that there are no leftover "namespace-namespaceid-" keys without |
| 243 // associated areas. |
| 244 ASSERT_EQ(found_namespace_ids.size(), namespaces_with_areas.size()); |
| 245 |
| 240 if (max_map_id != -1) { | 246 if (max_map_id != -1) { |
| 241 // The database contains maps. | 247 // The database contains maps. |
| 242 ASSERT_TRUE(data.find(next_map_id_key) != data.end()); | 248 ASSERT_TRUE(data.find(next_map_id_key) != data.end()); |
| 243 int64 next_map_id; | 249 int64 next_map_id; |
| 244 bool conversion_ok = | 250 bool conversion_ok = |
| 245 base::StringToInt64(data[next_map_id_key], &next_map_id); | 251 base::StringToInt64(data[next_map_id_key], &next_map_id); |
| 246 ASSERT_TRUE(conversion_ok); | 252 ASSERT_TRUE(conversion_ok); |
| 247 ASSERT_GT(next_map_id, max_map_id); | 253 ASSERT_GT(next_map_id, max_map_id); |
| 248 } | 254 } |
| 249 | 255 |
| (...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 766 ASSERT_TRUE(db_->CloneNamespace(kNamespace1, kNamespaceClone)); | 772 ASSERT_TRUE(db_->CloneNamespace(kNamespace1, kNamespaceClone)); |
| 767 CheckOrigins(kNamespaceClone, expected_origins1); | 773 CheckOrigins(kNamespaceClone, expected_origins1); |
| 768 | 774 |
| 769 ASSERT_TRUE(db_->DeleteArea(kNamespace1, kOrigin2)); | 775 ASSERT_TRUE(db_->DeleteArea(kNamespace1, kOrigin2)); |
| 770 expected_origins1.erase(kOrigin2); | 776 expected_origins1.erase(kOrigin2); |
| 771 CheckOrigins(kNamespace1, expected_origins1); | 777 CheckOrigins(kNamespace1, expected_origins1); |
| 772 | 778 |
| 773 CheckDatabaseConsistency(); | 779 CheckDatabaseConsistency(); |
| 774 } | 780 } |
| 775 | 781 |
| 782 TEST_F(SessionStorageDatabaseTest, DeleteAllOrigins) { |
| 783 // Write data for a namespace, for 2 origins. |
| 784 ValuesMap data1; |
| 785 data1[kKey1] = kValue1; |
| 786 ASSERT_TRUE(db_->CommitAreaChanges(kNamespace1, kOrigin1, false, data1)); |
| 787 ValuesMap data2; |
| 788 data2[kKey1] = kValue2; |
| 789 ASSERT_TRUE(db_->CommitAreaChanges(kNamespace1, kOrigin2, false, data2)); |
| 790 |
| 791 EXPECT_TRUE(db_->DeleteArea(kNamespace1, kOrigin1)); |
| 792 EXPECT_TRUE(db_->DeleteArea(kNamespace1, kOrigin2)); |
| 793 // Check that also the namespace start key was deleted. |
| 794 CheckDatabaseConsistency(); |
| 795 } |
| 796 |
| 797 |
| 776 } // namespace dom_storage | 798 } // namespace dom_storage |
| OLD | NEW |