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

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

Issue 9963107: Persist sessionStorage on disk. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Test update. 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 447 matching lines...) Expand 10 before | Expand all | Expand 10 after
458 ValuesMap data1; 458 ValuesMap data1;
459 data1[kKey1] = kValue1; 459 data1[kKey1] = kValue1;
460 data1[kKey2] = kValue2; 460 data1[kKey2] = kValue2;
461 data1[kKey3] = kValue3; 461 data1[kKey3] = kValue3;
462 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data1)); 462 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data1));
463 ValuesMap data2; 463 ValuesMap data2;
464 data2[kKey1] = kValue2; 464 data2[kKey1] = kValue2;
465 data2[kKey3] = kValue1; 465 data2[kKey3] = kValue1;
466 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin2, false, data2)); 466 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin2, false, data2));
467 // Make a shallow copy. 467 // Make a shallow copy.
468 EXPECT_TRUE(db_->CloneNamespace(1, 5)); 468 db_->CloneNamespace(1, 5);
469 // Now both namespaces should have the same data. 469 // Now both namespaces should have the same data.
470 CheckDatabaseConsistency(); 470 CheckDatabaseConsistency();
471 CheckAreaData(1, kOrigin1, data1); 471 CheckAreaData(1, kOrigin1, data1);
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, WriteIntoShallowCopy) { 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 db_->CloneNamespace(1, 5);
488 488
489 // Write data into a shallow copy. 489 // Write data into a shallow copy.
490 ValuesMap changes; 490 ValuesMap changes;
491 ValuesMap reference; 491 ValuesMap reference;
492 changes[kKey1] = kValueNull; 492 changes[kKey1] = kValueNull;
493 changes[kKey2] = kValue4; 493 changes[kKey2] = kValue4;
494 changes[kKey3] = kValue4; 494 changes[kKey3] = kValue4;
495 reference[kKey2] = kValue4; 495 reference[kKey2] = kValue4;
496 reference[kKey3] = kValue4; 496 reference[kKey3] = kValue4;
497 EXPECT_TRUE(db_->CommitAreaChanges(5, kOrigin1, false, changes)); 497 EXPECT_TRUE(db_->CommitAreaChanges(5, kOrigin1, false, changes));
(...skipping 15 matching lines...) Expand all
513 data1[kKey1] = kValue1; 513 data1[kKey1] = kValue1;
514 data1[kKey2] = kValue2; 514 data1[kKey2] = kValue2;
515 data1[kKey3] = kValue3; 515 data1[kKey3] = kValue3;
516 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data1)); 516 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data1));
517 ValuesMap data2; 517 ValuesMap data2;
518 data2[kKey1] = kValue2; 518 data2[kKey1] = kValue2;
519 data2[kKey3] = kValue1; 519 data2[kKey3] = kValue1;
520 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin2, false, data2)); 520 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin2, false, data2));
521 521
522 // Make a two shallow copies. 522 // Make a two shallow copies.
523 EXPECT_TRUE(db_->CloneNamespace(1, 5)); 523 db_->CloneNamespace(1, 5);
524 EXPECT_TRUE(db_->CloneNamespace(1, 6)); 524 db_->CloneNamespace(1, 6);
525 525
526 // Make a shallow copy of a shallow copy. 526 // Make a shallow copy of a shallow copy.
527 EXPECT_TRUE(db_->CloneNamespace(6, 7)); 527 db_->CloneNamespace(6, 7);
528 528
529 // Now all namespaces should have the same data. 529 // Now all namespaces should have the same data.
530 CheckDatabaseConsistency(); 530 CheckDatabaseConsistency();
531 CheckAreaData(1, kOrigin1, data1); 531 CheckAreaData(1, kOrigin1, data1);
532 CheckAreaData(5, kOrigin1, data1); 532 CheckAreaData(5, kOrigin1, data1);
533 CheckAreaData(6, kOrigin1, data1); 533 CheckAreaData(6, kOrigin1, data1);
534 CheckAreaData(7, kOrigin1, data1); 534 CheckAreaData(7, kOrigin1, data1);
535 CheckAreaData(1, kOrigin2, data2); 535 CheckAreaData(1, kOrigin2, data2);
536 CheckAreaData(5, kOrigin2, data2); 536 CheckAreaData(5, kOrigin2, data2);
537 CheckAreaData(6, kOrigin2, data2); 537 CheckAreaData(6, kOrigin2, data2);
(...skipping 10 matching lines...) Expand all
548 // Check the ref counts. 548 // Check the ref counts.
549 EXPECT_EQ(4, GetMapRefCount(GetMapForArea(1, kOrigin1))); 549 EXPECT_EQ(4, GetMapRefCount(GetMapForArea(1, kOrigin1)));
550 EXPECT_EQ(4, GetMapRefCount(GetMapForArea(1, kOrigin2))); 550 EXPECT_EQ(4, GetMapRefCount(GetMapForArea(1, kOrigin2)));
551 } 551 }
552 552
553 TEST_F(SessionStorageDatabaseTest, DisassociateShallowCopy) { 553 TEST_F(SessionStorageDatabaseTest, DisassociateShallowCopy) {
554 ValuesMap data1; 554 ValuesMap data1;
555 data1[kKey1] = kValue1; 555 data1[kKey1] = kValue1;
556 data1[kKey2] = kValue2; 556 data1[kKey2] = kValue2;
557 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data1)); 557 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data1));
558 EXPECT_TRUE(db_->CloneNamespace(1, 5)); 558 db_->CloneNamespace(1, 5);
559 559
560 // Disassoaciate the shallow copy. 560 // Disassoaciate the shallow copy.
561 EXPECT_TRUE(db_->DeleteArea(5, kOrigin1)); 561 db_->DeleteArea(5, kOrigin1);
562 CheckDatabaseConsistency(); 562 CheckDatabaseConsistency();
563 563
564 // Now new data can be written to that map. 564 // Now new data can be written to that map.
565 ValuesMap reference; 565 ValuesMap reference;
566 ValuesMap changes; 566 ValuesMap changes;
567 changes[kKey1] = kValueNull; 567 changes[kKey1] = kValueNull;
568 changes[kKey2] = kValue4; 568 changes[kKey2] = kValue4;
569 changes[kKey3] = kValue4; 569 changes[kKey3] = kValue4;
570 reference[kKey2] = kValue4; 570 reference[kKey2] = kValue4;
571 reference[kKey3] = kValue4; 571 reference[kKey3] = kValue4;
(...skipping 27 matching lines...) Expand all
599 data1[kKey1] = kValue1; 599 data1[kKey1] = kValue1;
600 data1[kKey2] = kValue2; 600 data1[kKey2] = kValue2;
601 data1[kKey3] = kValue3; 601 data1[kKey3] = kValue3;
602 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data1)); 602 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data1));
603 ValuesMap data2; 603 ValuesMap data2;
604 data2[kKey1] = kValue2; 604 data2[kKey1] = kValue2;
605 data2[kKey3] = kValue1; 605 data2[kKey3] = kValue1;
606 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin2, false, data2)); 606 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin2, false, data2));
607 607
608 // Make a shallow copy and delete the original namespace. 608 // Make a shallow copy and delete the original namespace.
609 EXPECT_TRUE(db_->CloneNamespace(1, 5));; 609 db_->CloneNamespace(1, 5);
610 EXPECT_TRUE(db_->DeleteNamespace(1)); 610 EXPECT_TRUE(db_->DeleteNamespace(1));
611 611
612 // The original namespace has no data. 612 // The original namespace has no data.
613 CheckDatabaseConsistency(); 613 CheckDatabaseConsistency();
614 CheckAreaData(1, kOrigin1, ValuesMap()); 614 CheckAreaData(1, kOrigin1, ValuesMap());
615 CheckAreaData(1, kOrigin2, ValuesMap()); 615 CheckAreaData(1, kOrigin2, ValuesMap());
616 // But the copy persists. 616 // But the copy persists.
617 CheckAreaData(5, kOrigin1, data1); 617 CheckAreaData(5, kOrigin1, data1);
618 CheckAreaData(5, kOrigin2, data2); 618 CheckAreaData(5, kOrigin2, data2);
619 } 619 }
620 620
621 TEST_F(SessionStorageDatabaseTest, DeleteArea) { 621 TEST_F(SessionStorageDatabaseTest, DeleteArea) {
622 // Write data for a namespace, for 2 origins. 622 // Write data for a namespace, for 2 origins.
623 ValuesMap data1; 623 ValuesMap data1;
624 data1[kKey1] = kValue1; 624 data1[kKey1] = kValue1;
625 data1[kKey2] = kValue2; 625 data1[kKey2] = kValue2;
626 data1[kKey3] = kValue3; 626 data1[kKey3] = kValue3;
627 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data1)); 627 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data1));
628 ValuesMap data2; 628 ValuesMap data2;
629 data2[kKey1] = kValue2; 629 data2[kKey1] = kValue2;
630 data2[kKey3] = kValue1; 630 data2[kKey3] = kValue1;
631 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin2, false, data2)); 631 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin2, false, data2));
632 632
633 EXPECT_TRUE(db_->DeleteArea(1, kOrigin2)); 633 db_->DeleteArea(1, kOrigin2);
634 CheckDatabaseConsistency(); 634 CheckDatabaseConsistency();
635 // The data for the non-deleted origin persists. 635 // The data for the non-deleted origin persists.
636 CheckAreaData(1, kOrigin1, data1); 636 CheckAreaData(1, kOrigin1, data1);
637 // The data for the deleted origin is gone. 637 // The data for the deleted origin is gone.
638 CheckAreaData(1, kOrigin2, ValuesMap()); 638 CheckAreaData(1, kOrigin2, ValuesMap());
639 } 639 }
640 640
641 TEST_F(SessionStorageDatabaseTest, DeleteAreaWithShallowCopy) { 641 TEST_F(SessionStorageDatabaseTest, DeleteAreaWithShallowCopy) {
642 // Write data for a namespace, for 2 origins. 642 // Write data for a namespace, for 2 origins.
643 ValuesMap data1; 643 ValuesMap data1;
644 data1[kKey1] = kValue1; 644 data1[kKey1] = kValue1;
645 data1[kKey2] = kValue2; 645 data1[kKey2] = kValue2;
646 data1[kKey3] = kValue3; 646 data1[kKey3] = kValue3;
647 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data1)); 647 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data1));
648 ValuesMap data2; 648 ValuesMap data2;
649 data2[kKey1] = kValue2; 649 data2[kKey1] = kValue2;
650 data2[kKey3] = kValue1; 650 data2[kKey3] = kValue1;
651 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin2, false, data2)); 651 ASSERT_TRUE(db_->CommitAreaChanges(1, kOrigin2, false, data2));
652 652
653 // Make a shallow copy and delete an origin from the original namespace. 653 // Make a shallow copy and delete an origin from the original namespace.
654 EXPECT_TRUE(db_->CloneNamespace(1, 5)); 654 db_->CloneNamespace(1, 5);
655 EXPECT_TRUE(db_->DeleteArea(1, kOrigin1)); 655 db_->DeleteArea(1, kOrigin1);
656 CheckDatabaseConsistency(); 656 CheckDatabaseConsistency();
657 657
658 // The original namespace has data for only the non-deleted origin. 658 // The original namespace has data for only the non-deleted origin.
659 CheckAreaData(1, kOrigin1, ValuesMap()); 659 CheckAreaData(1, kOrigin1, ValuesMap());
660 CheckAreaData(1, kOrigin2, data2); 660 CheckAreaData(1, kOrigin2, data2);
661 // But the copy persists. 661 // But the copy persists.
662 CheckAreaData(5, kOrigin1, data1); 662 CheckAreaData(5, kOrigin1, data1);
663 CheckAreaData(5, kOrigin2, data2); 663 CheckAreaData(5, kOrigin2, data2);
664 } 664 }
665 665
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
737 737
738 // Close the database and recreate it. 738 // Close the database and recreate it.
739 ResetDatabase(); 739 ResetDatabase();
740 740
741 // Create another namespace with id 1. 741 // Create another namespace with id 1.
742 ValuesMap data2; 742 ValuesMap data2;
743 data2[kKey1] = kValue3; 743 data2[kKey1] = kValue3;
744 EXPECT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data2)); 744 EXPECT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data2));
745 745
746 // Make a shallow copy of the newly created namespace. 746 // Make a shallow copy of the newly created namespace.
747 EXPECT_TRUE(db_->CloneNamespace(1, 20)); 747 db_->CloneNamespace(1, 20);
748 748
749 // The clone contains values from the newly created namespace. 749 // The clone contains values from the newly created namespace.
750 CheckAreaData(20, kOrigin1, data2); 750 CheckAreaData(20, kOrigin1, data2);
751 CheckAreaData(1, kOrigin1, data2); 751 CheckAreaData(1, kOrigin1, data2);
752 752
753 // The values for the old namespace 1 are still accessible via id -1. 753 // The values for the old namespace 1 are still accessible via id -1.
754 CheckAreaData(-1, kOrigin1, data1); 754 CheckAreaData(-1, kOrigin1, data1);
755 755
756 // Close the database and recreate it. 756 // Close the database and recreate it.
757 ResetDatabase(); 757 ResetDatabase();
(...skipping 13 matching lines...) Expand all
771 771
772 // Close the database and recreate it. 772 // Close the database and recreate it.
773 ResetDatabase(); 773 ResetDatabase();
774 774
775 // Create another namespace with id 1. 775 // Create another namespace with id 1.
776 ValuesMap data2; 776 ValuesMap data2;
777 data2[kKey1] = kValue3; 777 data2[kKey1] = kValue3;
778 EXPECT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data2)); 778 EXPECT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data2));
779 779
780 // Make a shallow copy of the newly created namespace. 780 // Make a shallow copy of the newly created namespace.
781 EXPECT_TRUE(db_->CloneNamespace(1, 20)); 781 db_->CloneNamespace(1, 20);
782 782
783 // Now the values can be altered and a deep copy will be made. 783 // Now the values can be altered and a deep copy will be made.
784 ValuesMap data3; 784 ValuesMap data3;
785 data3[kKey1] = kValue2; 785 data3[kKey1] = kValue2;
786 EXPECT_TRUE(db_->CommitAreaChanges(20, kOrigin1, false, data3)); 786 EXPECT_TRUE(db_->CommitAreaChanges(20, kOrigin1, false, data3));
787 787
788 CheckAreaData(20, kOrigin1, data3); 788 CheckAreaData(20, kOrigin1, data3);
789 CheckAreaData(1, kOrigin1, data2); 789 CheckAreaData(1, kOrigin1, data2);
790 790
791 // 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.
(...skipping 17 matching lines...) Expand all
809 809
810 // Close the database and recreate it. 810 // Close the database and recreate it.
811 ResetDatabase(); 811 ResetDatabase();
812 812
813 // Create another namespace with id 1. 813 // Create another namespace with id 1.
814 ValuesMap data2; 814 ValuesMap data2;
815 data2[kKey1] = kValue3; 815 data2[kKey1] = kValue3;
816 EXPECT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data2)); 816 EXPECT_TRUE(db_->CommitAreaChanges(1, kOrigin1, false, data2));
817 817
818 // Delete kOrigin1 from the newly created namespace. 818 // Delete kOrigin1 from the newly created namespace.
819 EXPECT_TRUE(db_->DeleteArea(1, kOrigin1)); 819 db_->DeleteArea(1, kOrigin1);
820 820
821 // Namespace 1 is empty. 821 // Namespace 1 is empty.
822 CheckAreaData(1, kOrigin1, ValuesMap()); 822 CheckAreaData(1, kOrigin1, ValuesMap());
823 823
824 // The values for the old namespace 1 are still accessible via id -1. 824 // The values for the old namespace 1 are still accessible via id -1.
825 CheckAreaData(-1, kOrigin1, data1); 825 CheckAreaData(-1, kOrigin1, data1);
826 } 826 }
827 827
828 TEST_F(SessionStorageDatabaseTest, NamespaceOffsetDeleteNamespace) { 828 TEST_F(SessionStorageDatabaseTest, NamespaceOffsetDeleteNamespace) {
829 // Create a namespace with id 1. 829 // Create a namespace with id 1.
(...skipping 14 matching lines...) Expand all
844 EXPECT_TRUE(db_->DeleteNamespace(1)); 844 EXPECT_TRUE(db_->DeleteNamespace(1));
845 845
846 // Namespace 1 is empty. 846 // Namespace 1 is empty.
847 CheckAreaData(1, kOrigin1, ValuesMap()); 847 CheckAreaData(1, kOrigin1, ValuesMap());
848 848
849 // 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.
850 CheckAreaData(-1, kOrigin1, data1); 850 CheckAreaData(-1, kOrigin1, data1);
851 } 851 }
852 852
853 } // namespace dom_storage 853 } // namespace dom_storage
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698