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 |