Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(146)

Side by Side Diff: webkit/dom_storage/session_storage_database_unittest.cc

Issue 10378066: SessionStorageDatabase: Allow writing data into a shallow copy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/session_storage_database.h" 5 #include "webkit/dom_storage/session_storage_database.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 10
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 CheckAreaData(1, kOrigin2, data2); 472 CheckAreaData(1, kOrigin2, data2);
473 CheckAreaData(5, kOrigin1, data1); 473 CheckAreaData(5, kOrigin1, data1);
474 CheckAreaData(5, kOrigin2, data2); 474 CheckAreaData(5, kOrigin2, data2);
475 // Both the namespaces refer to the same maps. 475 // Both the namespaces refer to the same maps.
476 EXPECT_EQ(GetMapForArea(1, kOrigin1), GetMapForArea(5, kOrigin1)); 476 EXPECT_EQ(GetMapForArea(1, kOrigin1), GetMapForArea(5, kOrigin1));
477 EXPECT_EQ(GetMapForArea(1, kOrigin2), GetMapForArea(5, kOrigin2)); 477 EXPECT_EQ(GetMapForArea(1, kOrigin2), GetMapForArea(5, kOrigin2));
478 EXPECT_EQ(2, GetMapRefCount(GetMapForArea(1, kOrigin1))); 478 EXPECT_EQ(2, GetMapRefCount(GetMapForArea(1, kOrigin1)));
479 EXPECT_EQ(2, GetMapRefCount(GetMapForArea(1, kOrigin2))); 479 EXPECT_EQ(2, GetMapRefCount(GetMapForArea(1, kOrigin2)));
480 } 480 }
481 481
482 TEST_F(SessionStorageDatabaseTest, DeepCopy) { 482 TEST_F(SessionStorageDatabaseTest, WriteIntoShallowCopy) {
483 ValuesMap data1; 483 ValuesMap data1;
484 data1[kKey1] = kValue1; 484 data1[kKey1] = kValue1;
485 data1[kKey2] = kValue2; 485 data1[kKey2] = kValue2;
486 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data1)); 486 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data1));
487 EXPECT_TRUE(db_->CloneNamespace(1, 5)); 487 EXPECT_TRUE(db_->CloneNamespace(1, 5));
488 488
489 // Make the shallow copy deep. 489 // Write data into a shallow copy.
490 EXPECT_TRUE(db_->DeepCopyArea(5, kOrigin1));
491
492 // Write data into the deep copy.
493 ValuesMap changes; 490 ValuesMap changes;
494 ValuesMap reference; 491 ValuesMap reference;
495 changes[kKey1] = kValueNull; 492 changes[kKey1] = kValueNull;
496 changes[kKey2] = kValue4; 493 changes[kKey2] = kValue4;
497 changes[kKey3] = kValue4; 494 changes[kKey3] = kValue4;
498 reference[kKey2] = kValue4; 495 reference[kKey2] = kValue4;
499 reference[kKey3] = kValue4; 496 reference[kKey3] = kValue4;
500 EXPECT_TRUE(db_->CommitAreaChanges(5, kOrigin1, false, changes)); 497 EXPECT_TRUE(db_->CommitAreaChanges(5, kOrigin1, false, changes));
501 498
502 // Values in the original namespace were not changed. 499 // Values in the original namespace were not changed.
503 CheckAreaData(1, kOrigin1, data1); 500 CheckAreaData(1, kOrigin1, data1);
504 // But values in the deep copy were. 501 // But values in the copy were.
505 CheckAreaData(5, kOrigin1, reference); 502 CheckAreaData(5, kOrigin1, reference);
506 503
507 // The namespaces no longer refer to the same map. 504 // The namespaces no longer refer to the same map.
508 EXPECT_NE(GetMapForArea(1, kOrigin1), GetMapForArea(5, kOrigin1)); 505 EXPECT_NE(GetMapForArea(1, kOrigin1), GetMapForArea(5, kOrigin1));
509 EXPECT_EQ(1, GetMapRefCount(GetMapForArea(1, kOrigin1))); 506 EXPECT_EQ(1, GetMapRefCount(GetMapForArea(1, kOrigin1)));
510 EXPECT_EQ(1, GetMapRefCount(GetMapForArea(5, kOrigin1))); 507 EXPECT_EQ(1, GetMapRefCount(GetMapForArea(5, kOrigin1)));
511 } 508 }
512 509
513 TEST_F(SessionStorageDatabaseTest, ManyShallowCopies) { 510 TEST_F(SessionStorageDatabaseTest, ManyShallowCopies) {
514 // Write data for a namespace, for 2 origins. 511 // Write data for a namespace, for 2 origins.
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
758 755
759 // Close the database and recreate it. 756 // Close the database and recreate it.
760 ResetDatabase(); 757 ResetDatabase();
761 758
762 // The namespace and the clone are still accessible. 759 // The namespace and the clone are still accessible.
763 CheckAreaData(-1, kOrigin1, data2); 760 CheckAreaData(-1, kOrigin1, data2);
764 CheckAreaData(-20, kOrigin1, data2); 761 CheckAreaData(-20, kOrigin1, data2);
765 CheckAreaData(-22, kOrigin1, data1); 762 CheckAreaData(-22, kOrigin1, data1);
766 } 763 }
767 764
768 TEST_F(SessionStorageDatabaseTest, NamespaceOffsetDeepCopyArea) { 765 TEST_F(SessionStorageDatabaseTest, NamespaceOffsetWriteIntoShallowCopy) {
769 // Create a namespace with id 1. 766 // Create a namespace with id 1.
770 ValuesMap data1; 767 ValuesMap data1;
771 data1[kKey1] = kValue1; 768 data1[kKey1] = kValue1;
772 data1[kKey2] = kValue2; 769 data1[kKey2] = kValue2;
773 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data1)); 770 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data1));
774 771
775 // Close the database and recreate it. 772 // Close the database and recreate it.
776 ResetDatabase(); 773 ResetDatabase();
777 774
778 // Create another namespace with id 1. 775 // Create another namespace with id 1.
779 ValuesMap data2; 776 ValuesMap data2;
780 data2[kKey1] = kValue3; 777 data2[kKey1] = kValue3;
781 EXPECT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data2)); 778 EXPECT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data2));
782 779
783 // Make a shallow copy of the newly created namespace. 780 // Make a shallow copy of the newly created namespace.
784 EXPECT_TRUE(db_->CloneNamespace(1, 20)); 781 EXPECT_TRUE(db_->CloneNamespace(1, 20));
785 // And make it deep.
786 EXPECT_TRUE(db_->DeepCopyArea(20, kOrigin1));
787 782
788 // Now the values can be altered in the deep copy. 783 // Now the values can be altered and a deep copy will be made.
789 ValuesMap data3; 784 ValuesMap data3;
790 data3[kKey1] = kValue2; 785 data3[kKey1] = kValue2;
791 EXPECT_TRUE(db_->CommitAreaChanges(20, kOrigin1, false, data3)); 786 EXPECT_TRUE(db_->CommitAreaChanges(20, kOrigin1, false, data3));
792 787
793 CheckAreaData(20, kOrigin1, data3); 788 CheckAreaData(20, kOrigin1, data3);
794 CheckAreaData(1, kOrigin1, data2); 789 CheckAreaData(1, kOrigin1, data2);
795 790
796 // The values for the old namespace 1 are still accessible via id -1. 791 // The values for the old namespace 1 are still accessible via id -1.
797 CheckAreaData(-1, kOrigin1, data1); 792 CheckAreaData(-1, kOrigin1, data1);
798 793
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
849 EXPECT_TRUE(db_->DeleteNamespace(1)); 844 EXPECT_TRUE(db_->DeleteNamespace(1));
850 845
851 // Namespace 1 is empty. 846 // Namespace 1 is empty.
852 CheckAreaData(1, kOrigin1, ValuesMap()); 847 CheckAreaData(1, kOrigin1, ValuesMap());
853 848
854 // The values for the old namespace 1 are still accessible via id -1. 849 // The values for the old namespace 1 are still accessible via id -1.
855 CheckAreaData(-1, kOrigin1, data1); 850 CheckAreaData(-1, kOrigin1, data1);
856 } 851 }
857 852
858 } // namespace dom_storage 853 } // namespace dom_storage
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698