| Index: webkit/database/database_tracker_unittest.cc
|
| diff --git a/webkit/database/database_tracker_unittest.cc b/webkit/database/database_tracker_unittest.cc
|
| index e46e16b046a07da04d7a4d6c18ad786f29a9db73..4d4923dd75bfb441cc8cccf5b0ec08e3478c715e 100644
|
| --- a/webkit/database/database_tracker_unittest.cc
|
| +++ b/webkit/database/database_tracker_unittest.cc
|
| @@ -687,6 +687,83 @@ class DatabaseTracker_TestHelper_Test {
|
| EXPECT_FALSE(file_util::PathExists(origin2_db_dir));
|
| }
|
|
|
| + static void DatabaseTrackerSaveSessionState() {
|
| + int64 database_size = 0;
|
| + const string16 kOrigin1 =
|
| + DatabaseUtil::GetOriginIdentifier(GURL(kOrigin1Url));
|
| + const string16 kOrigin2 =
|
| + DatabaseUtil::GetOriginIdentifier(GURL(kOrigin2Url));
|
| + const string16 kDB1 = ASCIIToUTF16("db1");
|
| + const string16 kDB2 = ASCIIToUTF16("db2");
|
| + const string16 kDescription = ASCIIToUTF16("database_description");
|
| +
|
| + // Initialize the tracker database.
|
| + ScopedTempDir temp_dir;
|
| + ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
|
| + FilePath origin1_db_dir;
|
| + FilePath origin2_db_dir;
|
| + {
|
| + scoped_refptr<quota::MockSpecialStoragePolicy> special_storage_policy =
|
| + new quota::MockSpecialStoragePolicy;
|
| + special_storage_policy->AddSessionOnly(GURL(kOrigin2Url));
|
| + scoped_refptr<DatabaseTracker> tracker(
|
| + new DatabaseTracker(
|
| + temp_dir.path(), false, true /*clear_local_state_on_exit*/,
|
| + special_storage_policy, NULL,
|
| + base::MessageLoopProxy::current()));
|
| + tracker->SaveSessionState();
|
| +
|
| + // Open two new databases.
|
| + tracker->DatabaseOpened(kOrigin1, kDB1, kDescription, 0,
|
| + &database_size);
|
| + EXPECT_EQ(0, database_size);
|
| + tracker->DatabaseOpened(kOrigin2, kDB2, kDescription, 0,
|
| + &database_size);
|
| + EXPECT_EQ(0, database_size);
|
| +
|
| + // Write some data to each file.
|
| + FilePath db_file;
|
| + db_file = tracker->GetFullDBFilePath(kOrigin1, kDB1);
|
| + EXPECT_TRUE(file_util::CreateDirectory(db_file.DirName()));
|
| + EXPECT_TRUE(EnsureFileOfSize(db_file, 1));
|
| +
|
| + db_file = tracker->GetFullDBFilePath(kOrigin2, kDB2);
|
| + EXPECT_TRUE(file_util::CreateDirectory(db_file.DirName()));
|
| + EXPECT_TRUE(EnsureFileOfSize(db_file, 2));
|
| +
|
| + // Store the origin database directories as long as they still exist.
|
| + origin1_db_dir = tracker->GetFullDBFilePath(kOrigin1, kDB1).DirName();
|
| + origin2_db_dir = tracker->GetFullDBFilePath(kOrigin2, kDB2).DirName();
|
| +
|
| + tracker->DatabaseModified(kOrigin1, kDB1);
|
| + tracker->DatabaseModified(kOrigin2, kDB2);
|
| +
|
| + // Close all databases.
|
| + tracker->DatabaseClosed(kOrigin1, kDB1);
|
| + tracker->DatabaseClosed(kOrigin2, kDB2);
|
| +
|
| + tracker->Shutdown();
|
| + }
|
| +
|
| + // At this point, the database tracker should be gone. Create a new one.
|
| + scoped_refptr<DatabaseTracker> tracker(
|
| + new DatabaseTracker(temp_dir.path(), false, false,
|
| + NULL, NULL, NULL));
|
| +
|
| + // Get all data for all origins.
|
| + std::vector<OriginInfo> origins_info;
|
| + EXPECT_TRUE(tracker->GetAllOriginsInfo(&origins_info));
|
| + // No origins were deleted.
|
| + EXPECT_EQ(size_t(2), origins_info.size());
|
| + EXPECT_TRUE(
|
| + file_util::PathExists(tracker->GetFullDBFilePath(kOrigin1, kDB1)));
|
| + EXPECT_TRUE(
|
| + file_util::PathExists(tracker->GetFullDBFilePath(kOrigin2, kDB2)));
|
| +
|
| + EXPECT_TRUE(file_util::PathExists(origin1_db_dir));
|
| + EXPECT_TRUE(file_util::PathExists(origin2_db_dir));
|
| + }
|
| +
|
| static void EmptyDatabaseNameIsValid() {
|
| const GURL kOrigin(kOrigin1Url);
|
| const string16 kOriginId = DatabaseUtil::GetOriginIdentifier(kOrigin);
|
| @@ -766,6 +843,11 @@ TEST(DatabaseTrackerTest, DatabaseTrackerClearSessionOnlyDatabasesOnExit) {
|
| DatabaseTrackerClearSessionOnlyDatabasesOnExit();
|
| }
|
|
|
| +TEST(DatabaseTrackerTest, DatabaseTrackerSaveSessionState) {
|
| + // Only works for regular mode.
|
| + DatabaseTracker_TestHelper_Test::DatabaseTrackerSaveSessionState();
|
| +}
|
| +
|
| TEST(DatabaseTrackerTest, EmptyDatabaseNameIsValid) {
|
| DatabaseTracker_TestHelper_Test::EmptyDatabaseNameIsValid();
|
| }
|
|
|