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 |