Chromium Code Reviews| Index: webkit/quota/quota_database_unittest.cc |
| diff --git a/webkit/quota/quota_database_unittest.cc b/webkit/quota/quota_database_unittest.cc |
| index f126f31dda0ad4bc8beb2fc679c9e95ae76db2e6..4b9aaa28e807bfdb518f4b48e75b36623680e436 100644 |
| --- a/webkit/quota/quota_database_unittest.cc |
| +++ b/webkit/quota/quota_database_unittest.cc |
| @@ -38,9 +38,9 @@ class QuotaDatabaseTest : public testing::Test { |
| protected: |
| typedef QuotaDatabase::QuotaTableEntry QuotaTableEntry; |
| typedef QuotaDatabase::QuotaTableCallback QuotaTableCallback; |
| - typedef QuotaDatabase::LastAccessTimeTableEntry LastAccessTimeTableEntry; |
| - typedef QuotaDatabase::LastAccessTimeTableCallback |
| - LastAccessTimeTableCallback; |
| + typedef QuotaDatabase::OriginInfoTableEntry OriginInfoTableEntry; |
| + typedef QuotaDatabase::OriginInfoTableCallback |
| + OriginInfoTableCallback; |
| template <typename Iterator> |
| bool AssignQuotaTable( |
| @@ -71,16 +71,16 @@ class QuotaDatabaseTest : public testing::Test { |
| } |
| template <typename Iterator> |
| - bool AssignLastAccessTimeTable( |
| + bool AssignOriginInfoTable( |
| QuotaDatabase* quota_database, Iterator itr, Iterator end) { |
| if (!quota_database->LazyOpen(true)) |
| return false; |
| for (; itr != end; ++itr) { |
| const char* kSql = |
| - "INSERT INTO OriginLastAccessTable" |
| - " (origin, type, used_count, last_access_time)" |
| - " VALUES (?, ?, ?, ?)"; |
| + "INSERT INTO OriginInfoTable" |
| + " (origin, type, used_count, last_access_time, last_modified_time)" |
| + " VALUES (?, ?, ?, ?, ?)"; |
| sql::Statement statement; |
| statement.Assign( |
| quota_database->db_->GetCachedStatement( |
| @@ -91,6 +91,7 @@ class QuotaDatabaseTest : public testing::Test { |
| statement.BindInt(1, static_cast<int>(itr->type)); |
| statement.BindInt(2, itr->used_count); |
| statement.BindInt64(3, itr->last_access_time.ToInternalValue()); |
| + statement.BindInt64(4, itr->last_modified_time.ToInternalValue()); |
| if (!statement.Run()) |
| return false; |
| } |
| @@ -223,7 +224,7 @@ class QuotaDatabaseTest : public testing::Test { |
| kOrigin1, kStorageTypeTemporary, base::Time::Now())); |
| // Delete origin/type last access time information. |
| - EXPECT_TRUE(db.DeleteOriginLastAccessTime(kOrigin3, kStorageTypeTemporary)); |
| + EXPECT_TRUE(db.DeleteOriginInfo(kOrigin3, kStorageTypeTemporary)); |
| // Querying again to see if the deletion has worked. |
| exceptions.clear(); |
| @@ -238,6 +239,58 @@ class QuotaDatabaseTest : public testing::Test { |
| EXPECT_TRUE(origin.is_empty()); |
| } |
| + void OriginLastModifiedSince(const FilePath& kDbFile) { |
| + QuotaDatabase db(kDbFile); |
| + ASSERT_TRUE(db.LazyOpen(true)); |
| + |
| + std::set<GURL> origins; |
| + EXPECT_TRUE(db.GetOriginsModifiedSince( |
| + kStorageTypeTemporary, &origins, base::Time())); |
| + EXPECT_TRUE(origins.empty()); |
| + |
| + const GURL kOrigin1("http://a/"); |
| + const GURL kOrigin2("http://b/"); |
| + const GURL kOrigin3("http://c/"); |
| + |
| + // Report last mod time for the test origins. |
| + EXPECT_TRUE(db.SetOriginLastModifiedTime( |
| + kOrigin1, kStorageTypeTemporary, base::Time::FromInternalValue(10))); |
| + EXPECT_TRUE(db.SetOriginLastModifiedTime( |
| + kOrigin2, kStorageTypeTemporary, base::Time::FromInternalValue(20))); |
| + EXPECT_TRUE(db.SetOriginLastModifiedTime( |
| + kOrigin3, kStorageTypeTemporary, base::Time::FromInternalValue(30))); |
| + |
| + EXPECT_TRUE(db.GetOriginsModifiedSince( |
| + kStorageTypeTemporary, &origins, base::Time::FromInternalValue(15))); |
| + EXPECT_EQ(2U, origins.size()); |
| + EXPECT_EQ(0U, origins.count(kOrigin1)); |
| + EXPECT_EQ(1U, origins.count(kOrigin2)); |
| + EXPECT_EQ(1U, origins.count(kOrigin3)); |
| + |
| + EXPECT_TRUE(db.GetOriginsModifiedSince( |
| + kStorageTypeTemporary, &origins, base::Time::FromInternalValue(25))); |
| + EXPECT_EQ(1U, origins.size()); |
| + EXPECT_EQ(0U, origins.count(kOrigin1)); |
| + EXPECT_EQ(0U, origins.count(kOrigin2)); |
| + EXPECT_EQ(1U, origins.count(kOrigin3)); |
| + |
| + EXPECT_TRUE(db.GetOriginsModifiedSince( |
| + kStorageTypeTemporary, &origins, base::Time::FromInternalValue(35))); |
| + EXPECT_TRUE(origins.empty()); |
| + |
| + // Update origin1's mod time but for persistent storage. |
| + EXPECT_TRUE(db.SetOriginLastModifiedTime( |
| + kOrigin1, kStorageTypePersistent, base::Time::FromInternalValue(40))); |
|
Mike West
2011/06/16 09:39:33
This is the only place you do anything with persis
kinuko
2011/06/16 12:09:06
Done.
|
| + |
| + // Must have no effects on temporary origins info. |
| + EXPECT_TRUE(db.GetOriginsModifiedSince( |
| + kStorageTypeTemporary, &origins, base::Time::FromInternalValue(15))); |
| + EXPECT_EQ(2U, origins.size()); |
| + EXPECT_EQ(0U, origins.count(kOrigin1)); |
| + EXPECT_EQ(1U, origins.count(kOrigin2)); |
| + EXPECT_EQ(1U, origins.count(kOrigin3)); |
| + } |
| + |
| void RegisterOrigins(const FilePath& kDbFile) { |
| QuotaDatabase db(kDbFile); |
| @@ -312,24 +365,23 @@ class QuotaDatabaseTest : public testing::Test { |
| EXPECT_TRUE(verifier.table.empty()); |
| } |
| - void DumpLastAccessTimeTable(const FilePath& kDbFile) { |
| + void DumpOriginInfoTable(const FilePath& kDbFile) { |
| base::Time now(base::Time::Now()); |
| - LastAccessTimeTableEntry kTableEntries[] = { |
| - {GURL("http://go/"), kStorageTypeTemporary, 2147483647, now}, |
| - {GURL("http://oo/"), kStorageTypeTemporary, 0, now}, |
| - {GURL("http://gle/"), kStorageTypeTemporary, 1, now}, |
| + OriginInfoTableEntry kTableEntries[] = { |
| + {GURL("http://go/"), kStorageTypeTemporary, 2147483647, now, now}, |
| + {GURL("http://oo/"), kStorageTypeTemporary, 0, now, now}, |
| + {GURL("http://gle/"), kStorageTypeTemporary, 1, now, now}, |
| }; |
| - LastAccessTimeTableEntry* begin = kTableEntries; |
| - LastAccessTimeTableEntry* end = kTableEntries + |
| - ARRAYSIZE_UNSAFE(kTableEntries); |
| + OriginInfoTableEntry* begin = kTableEntries; |
| + OriginInfoTableEntry* end = kTableEntries + ARRAYSIZE_UNSAFE(kTableEntries); |
| QuotaDatabase db(kDbFile); |
| - EXPECT_TRUE(AssignLastAccessTimeTable(&db, begin, end)); |
| + EXPECT_TRUE(AssignOriginInfoTable(&db, begin, end)); |
| - typedef EntryVerifier<LastAccessTimeTableEntry> Verifier; |
| + typedef EntryVerifier<OriginInfoTableEntry> Verifier; |
| Verifier verifier(begin, end); |
| - EXPECT_TRUE(db.DumpLastAccessTimeTable( |
| - new LastAccessTimeTableCallback( |
| + EXPECT_TRUE(db.DumpOriginInfoTable( |
| + new OriginInfoTableCallback( |
| base::Bind(&Verifier::Run, |
| base::Unretained(&verifier))))); |
| EXPECT_TRUE(verifier.table.empty()); |
| @@ -368,6 +420,14 @@ TEST_F(QuotaDatabaseTest, OriginLastAccessTimeLRU) { |
| OriginLastAccessTimeLRU(FilePath()); |
| } |
| +TEST_F(QuotaDatabaseTest, OriginLastModifiedSince) { |
| + ScopedTempDir data_dir; |
| + ASSERT_TRUE(data_dir.CreateUniqueTempDir()); |
| + const FilePath kDbFile = data_dir.path().AppendASCII("quota_manager.db"); |
| + OriginLastModifiedSince(kDbFile); |
| + OriginLastModifiedSince(FilePath()); |
| +} |
| + |
| TEST_F(QuotaDatabaseTest, BootstrapFlag) { |
| ScopedTempDir data_dir; |
| ASSERT_TRUE(data_dir.CreateUniqueTempDir()); |
| @@ -398,11 +458,11 @@ TEST_F(QuotaDatabaseTest, DumpQuotaTable) { |
| DumpQuotaTable(FilePath()); |
| } |
| -TEST_F(QuotaDatabaseTest, DumpLastAccessTimeTable) { |
| +TEST_F(QuotaDatabaseTest, DumpOriginInfoTable) { |
| ScopedTempDir data_dir; |
| ASSERT_TRUE(data_dir.CreateUniqueTempDir()); |
| const FilePath kDbFile = data_dir.path().AppendASCII("quota_manager.db"); |
| - DumpLastAccessTimeTable(kDbFile); |
| - DumpLastAccessTimeTable(FilePath()); |
| + DumpOriginInfoTable(kDbFile); |
| + DumpOriginInfoTable(FilePath()); |
| } |
| } // namespace quota |