| 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 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 | 61 |
| 62 base::ScopedTempDir temp_dir_; | 62 base::ScopedTempDir temp_dir_; |
| 63 scoped_refptr<SessionStorageDatabase> db_; | 63 scoped_refptr<SessionStorageDatabase> db_; |
| 64 | 64 |
| 65 // Test data. | 65 // Test data. |
| 66 const GURL kOrigin1; | 66 const GURL kOrigin1; |
| 67 const GURL kOrigin2; | 67 const GURL kOrigin2; |
| 68 const std::string kNamespace1; | 68 const std::string kNamespace1; |
| 69 const std::string kNamespace2; | 69 const std::string kNamespace2; |
| 70 const std::string kNamespaceClone; | 70 const std::string kNamespaceClone; |
| 71 const string16 kKey1; | 71 const base::string16 kKey1; |
| 72 const string16 kKey2; | 72 const base::string16 kKey2; |
| 73 const string16 kKey3; | 73 const base::string16 kKey3; |
| 74 const NullableString16 kValue1; | 74 const NullableString16 kValue1; |
| 75 const NullableString16 kValue2; | 75 const NullableString16 kValue2; |
| 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() |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 EXPECT_EQ(valid_keys, data.size()); | 295 EXPECT_EQ(valid_keys, data.size()); |
| 296 } | 296 } |
| 297 | 297 |
| 298 void SessionStorageDatabaseTest::DumpData() const { | 298 void SessionStorageDatabaseTest::DumpData() const { |
| 299 LOG(WARNING) << "---- Session storage contents"; | 299 LOG(WARNING) << "---- Session storage contents"; |
| 300 scoped_ptr<leveldb::Iterator> it( | 300 scoped_ptr<leveldb::Iterator> it( |
| 301 db_->db_->NewIterator(leveldb::ReadOptions())); | 301 db_->db_->NewIterator(leveldb::ReadOptions())); |
| 302 for (it->SeekToFirst(); it->Valid(); it->Next()) { | 302 for (it->SeekToFirst(); it->Valid(); it->Next()) { |
| 303 int64 dummy_map_id; | 303 int64 dummy_map_id; |
| 304 if (IsMapValueKey(it->key().ToString(), &dummy_map_id)) { | 304 if (IsMapValueKey(it->key().ToString(), &dummy_map_id)) { |
| 305 // Convert the value back to string16. | 305 // Convert the value back to base::string16. |
| 306 string16 value; | 306 base::string16 value; |
| 307 size_t len = it->value().size() / sizeof(char16); | 307 size_t len = it->value().size() / sizeof(char16); |
| 308 value.resize(len); | 308 value.resize(len); |
| 309 value.assign(reinterpret_cast<const char16*>(it->value().data()), len); | 309 value.assign(reinterpret_cast<const char16*>(it->value().data()), len); |
| 310 LOG(WARNING) << it->key().ToString() << ": " << value; | 310 LOG(WARNING) << it->key().ToString() << ": " << value; |
| 311 } else { | 311 } else { |
| 312 LOG(WARNING) << it->key().ToString() << ": " << it->value().ToString(); | 312 LOG(WARNING) << it->key().ToString() << ": " << it->value().ToString(); |
| 313 } | 313 } |
| 314 } | 314 } |
| 315 LOG(WARNING) << "----"; | 315 LOG(WARNING) << "----"; |
| 316 } | 316 } |
| 317 | 317 |
| 318 void SessionStorageDatabaseTest::CheckAreaData( | 318 void SessionStorageDatabaseTest::CheckAreaData( |
| 319 const std::string& namespace_id, const GURL& origin, | 319 const std::string& namespace_id, const GURL& origin, |
| 320 const ValuesMap& reference) const { | 320 const ValuesMap& reference) const { |
| 321 ValuesMap values; | 321 ValuesMap values; |
| 322 db_->ReadAreaValues(namespace_id, origin, &values); | 322 db_->ReadAreaValues(namespace_id, origin, &values); |
| 323 CompareValuesMaps(values, reference); | 323 CompareValuesMaps(values, reference); |
| 324 } | 324 } |
| 325 | 325 |
| 326 void SessionStorageDatabaseTest::CompareValuesMaps( | 326 void SessionStorageDatabaseTest::CompareValuesMaps( |
| 327 const ValuesMap& map1, | 327 const ValuesMap& map1, |
| 328 const ValuesMap& map2) const { | 328 const ValuesMap& map2) const { |
| 329 ASSERT_EQ(map2.size(), map1.size()); | 329 ASSERT_EQ(map2.size(), map1.size()); |
| 330 for (ValuesMap::const_iterator it = map1.begin(); it != map1.end(); ++it) { | 330 for (ValuesMap::const_iterator it = map1.begin(); it != map1.end(); ++it) { |
| 331 string16 key = it->first; | 331 base::string16 key = it->first; |
| 332 ASSERT_TRUE(map2.find(key) != map2.end()); | 332 ASSERT_TRUE(map2.find(key) != map2.end()); |
| 333 NullableString16 val1 = it->second; | 333 NullableString16 val1 = it->second; |
| 334 NullableString16 val2 = map2.find(key)->second; | 334 NullableString16 val2 = map2.find(key)->second; |
| 335 EXPECT_EQ(val2.is_null(), val1.is_null()); | 335 EXPECT_EQ(val2.is_null(), val1.is_null()); |
| 336 EXPECT_EQ(val2.string(), val1.string()); | 336 EXPECT_EQ(val2.string(), val1.string()); |
| 337 } | 337 } |
| 338 } | 338 } |
| 339 | 339 |
| 340 void SessionStorageDatabaseTest::CheckNamespaceIds( | 340 void SessionStorageDatabaseTest::CheckNamespaceIds( |
| 341 const std::set<std::string>& expected_namespace_ids) const { | 341 const std::set<std::string>& expected_namespace_ids) const { |
| (...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 691 CheckAreaData(kNamespace1, kOrigin2, data2); | 691 CheckAreaData(kNamespace1, kOrigin2, data2); |
| 692 // But the copy persists. | 692 // But the copy persists. |
| 693 CheckAreaData(kNamespaceClone, kOrigin1, data1); | 693 CheckAreaData(kNamespaceClone, kOrigin1, data1); |
| 694 CheckAreaData(kNamespaceClone, kOrigin2, data2); | 694 CheckAreaData(kNamespaceClone, kOrigin2, data2); |
| 695 } | 695 } |
| 696 | 696 |
| 697 TEST_F(SessionStorageDatabaseTest, WriteRawBytes) { | 697 TEST_F(SessionStorageDatabaseTest, WriteRawBytes) { |
| 698 // Write data which is not valid utf8 and contains null bytes. | 698 // Write data which is not valid utf8 and contains null bytes. |
| 699 unsigned char raw_data[10] = {255, 0, 0, 0, 1, 2, 3, 4, 5, 0}; | 699 unsigned char raw_data[10] = {255, 0, 0, 0, 1, 2, 3, 4, 5, 0}; |
| 700 ValuesMap changes; | 700 ValuesMap changes; |
| 701 string16 string_with_raw_data; | 701 base::string16 string_with_raw_data; |
| 702 string_with_raw_data.assign(reinterpret_cast<char16*>(raw_data), 5); | 702 string_with_raw_data.assign(reinterpret_cast<char16*>(raw_data), 5); |
| 703 changes[kKey1] = NullableString16(string_with_raw_data, false); | 703 changes[kKey1] = NullableString16(string_with_raw_data, false); |
| 704 EXPECT_TRUE(db_->CommitAreaChanges(kNamespace1, kOrigin1, false, changes)); | 704 EXPECT_TRUE(db_->CommitAreaChanges(kNamespace1, kOrigin1, false, changes)); |
| 705 CheckDatabaseConsistency(); | 705 CheckDatabaseConsistency(); |
| 706 ValuesMap values; | 706 ValuesMap values; |
| 707 db_->ReadAreaValues(kNamespace1, kOrigin1, &values); | 707 db_->ReadAreaValues(kNamespace1, kOrigin1, &values); |
| 708 const unsigned char* data = | 708 const unsigned char* data = |
| 709 reinterpret_cast<const unsigned char*>(values[kKey1].string().data()); | 709 reinterpret_cast<const unsigned char*>(values[kKey1].string().data()); |
| 710 for (int i = 0; i < 10; ++i) | 710 for (int i = 0; i < 10; ++i) |
| 711 EXPECT_EQ(raw_data[i], data[i]); | 711 EXPECT_EQ(raw_data[i], data[i]); |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 789 ASSERT_TRUE(db_->CommitAreaChanges(kNamespace1, kOrigin2, false, data2)); | 789 ASSERT_TRUE(db_->CommitAreaChanges(kNamespace1, kOrigin2, false, data2)); |
| 790 | 790 |
| 791 EXPECT_TRUE(db_->DeleteArea(kNamespace1, kOrigin1)); | 791 EXPECT_TRUE(db_->DeleteArea(kNamespace1, kOrigin1)); |
| 792 EXPECT_TRUE(db_->DeleteArea(kNamespace1, kOrigin2)); | 792 EXPECT_TRUE(db_->DeleteArea(kNamespace1, kOrigin2)); |
| 793 // Check that also the namespace start key was deleted. | 793 // Check that also the namespace start key was deleted. |
| 794 CheckDatabaseConsistency(); | 794 CheckDatabaseConsistency(); |
| 795 } | 795 } |
| 796 | 796 |
| 797 | 797 |
| 798 } // namespace dom_storage | 798 } // namespace dom_storage |
| OLD | NEW |