Chromium Code Reviews| Index: webkit/quota/quota_manager_unittest.cc |
| diff --git a/webkit/quota/quota_manager_unittest.cc b/webkit/quota/quota_manager_unittest.cc |
| index 92b69896b770aaf77f05462b4c391cdcb442e55c..22707cff93114279281a1aba3ff0a632c366e055 100644 |
| --- a/webkit/quota/quota_manager_unittest.cc |
| +++ b/webkit/quota/quota_manager_unittest.cc |
| @@ -2,6 +2,7 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| +#include <set> |
| #include <sstream> |
| #include <vector> |
| @@ -37,8 +38,8 @@ class QuotaManagerTest : public testing::Test { |
| protected: |
| typedef QuotaManager::QuotaTableEntry QuotaTableEntry; |
| typedef QuotaManager::QuotaTableEntries QuotaTableEntries; |
| - typedef QuotaManager::LastAccessTimeTableEntry LastAccessTimeTableEntry; |
| - typedef QuotaManager::LastAccessTimeTableEntries LastAccessTimeTableEntries; |
| + typedef QuotaManager::OriginInfoTableEntry OriginInfoTableEntry; |
| + typedef QuotaManager::OriginInfoTableEntries OriginInfoTableEntries; |
| public: |
| QuotaManagerTest() |
| @@ -215,6 +216,13 @@ class QuotaManagerTest : public testing::Test { |
| quota_manager_->NotifyOriginNoLongerInUse(origin); |
| } |
| + void GetOriginsModifiedSince(StorageType type, base::Time modified_since) { |
| + modified_origins_.clear(); |
| + quota_manager_->GetOriginsModifiedSince(type, modified_since, |
| + callback_factory_.NewCallback( |
| + &QuotaManagerTest::DidGetModifiedOrigins)); |
| + } |
| + |
| void DumpQuotaTable() { |
| quota_table_.clear(); |
| quota_manager_->DumpQuotaTable( |
| @@ -222,11 +230,11 @@ class QuotaManagerTest : public testing::Test { |
| &QuotaManagerTest::DidDumpQuotaTable)); |
| } |
| - void DumpLastAccessTimeTable() { |
| + void DumpOriginInfoTable() { |
| last_access_time_table_.clear(); |
| - quota_manager_->DumpLastAccessTimeTable( |
| + quota_manager_->DumpOriginInfoTable( |
| callback_factory_.NewCallback( |
| - &QuotaManagerTest::DidDumpLastAccessTimeTable)); |
| + &QuotaManagerTest::DidDumpOriginInfoTable)); |
| } |
| void DidGetUsageAndQuota(QuotaStatusCode status, int64 usage, int64 quota) { |
| @@ -294,11 +302,15 @@ class QuotaManagerTest : public testing::Test { |
| lru_origin_ = origin; |
| } |
| + void DidGetModifiedOrigins(const std::set<GURL>& origins) { |
| + modified_origins_.insert(origins.begin(), origins.end()); |
|
michaeln
2011/07/01 00:17:39
would an assignment work here?
kinuko
2011/07/04 07:43:52
Done.
|
| + } |
| + |
| void DidDumpQuotaTable(const QuotaTableEntries& entries) { |
| quota_table_ = entries; |
| } |
| - void DidDumpLastAccessTimeTable(const LastAccessTimeTableEntries& entries) { |
| + void DidDumpOriginInfoTable(const OriginInfoTableEntries& entries) { |
| last_access_time_table_ = entries; |
| } |
| @@ -328,8 +340,9 @@ class QuotaManagerTest : public testing::Test { |
| int64 quota() const { return quota_; } |
| int64 available_space() const { return available_space_; } |
| const GURL& lru_origin() const { return lru_origin_; } |
| + const std::set<GURL>& modified_origins() const { return modified_origins_; } |
| const QuotaTableEntries& quota_table() const { return quota_table_; } |
| - const LastAccessTimeTableEntries& last_access_time_table() const { |
| + const OriginInfoTableEntries& last_access_time_table() const { |
| return last_access_time_table_; |
| } |
| FilePath profile_path() const { return data_dir_.path(); } |
| @@ -354,8 +367,9 @@ class QuotaManagerTest : public testing::Test { |
| int64 quota_; |
| int64 available_space_; |
| GURL lru_origin_; |
| + std::set<GURL> modified_origins_; |
| QuotaTableEntries quota_table_; |
| - LastAccessTimeTableEntries last_access_time_table_; |
| + OriginInfoTableEntries last_access_time_table_; |
| int additional_callback_count_; |
| @@ -1040,10 +1054,10 @@ TEST_F(QuotaManagerTest, EvictOriginData) { |
| EvictOriginData(GURL("http://foo.com/"), kTemp); |
| MessageLoop::current()->RunAllPending(); |
| - DumpLastAccessTimeTable(); |
| + DumpOriginInfoTable(); |
| MessageLoop::current()->RunAllPending(); |
| - typedef LastAccessTimeTableEntries::const_iterator iterator; |
| + typedef OriginInfoTableEntries::const_iterator iterator; |
| for (iterator itr(last_access_time_table().begin()), |
| end(last_access_time_table().end()); |
| itr != end; ++itr) { |
| @@ -1101,11 +1115,11 @@ TEST_F(QuotaManagerTest, EvictOriginDataWithDeletionError) { |
| EXPECT_EQ(kQuotaErrorInvalidModification, status()); |
| } |
| - DumpLastAccessTimeTable(); |
| + DumpOriginInfoTable(); |
| MessageLoop::current()->RunAllPending(); |
| bool found_origin_in_database = false; |
| - typedef LastAccessTimeTableEntries::const_iterator iterator; |
| + typedef OriginInfoTableEntries::const_iterator iterator; |
| for (iterator itr(last_access_time_table().begin()), |
| end(last_access_time_table().end()); |
| itr != end; ++itr) { |
| @@ -1306,6 +1320,53 @@ TEST_F(QuotaManagerTest, GetLRUOriginWithOriginInUse) { |
| EXPECT_EQ("http://a.com/", lru_origin().spec()); |
| } |
| +TEST_F(QuotaManagerTest, GetOriginsModifiedSince) { |
| + static const MockOriginData kData[] = { |
| + { "http://a.com/", kTemp, 0 }, |
| + { "http://a.com:1/", kTemp, 0 }, |
| + { "https://a.com/", kTemp, 0 }, |
| + { "http://b.com/", kPerm, 0 }, // persistent |
| + { "http://c.com/", kTemp, 0 }, |
| + }; |
| + MockStorageClient* client = CreateClient(kData, ARRAYSIZE_UNSAFE(kData)); |
| + RegisterClient(client); |
| + |
| + GetOriginsModifiedSince(kTemp, base::Time()); |
| + MessageLoop::current()->RunAllPending(); |
| + EXPECT_TRUE(modified_origins().empty()); |
| + |
| + base::Time time1 = client->GetCurrentMockTime(); |
| + client->ModifyOriginAndNotify(GURL("http://a.com/"), kTemp, 10); |
| + client->ModifyOriginAndNotify(GURL("http://a.com:1/"), kTemp, 10); |
|
michaeln
2011/07/01 00:17:39
maybe modify the kPerm origin here to ensure it do
kinuko
2011/07/04 07:43:52
Done.
|
| + base::Time time2 = client->GetCurrentMockTime(); |
| + client->ModifyOriginAndNotify(GURL("https://a.com/"), kTemp, 10); |
| + client->ModifyOriginAndNotify(GURL("http://c.com/"), kTemp, 10); |
| + base::Time time3 = client->GetCurrentMockTime(); |
| + |
| + GetOriginsModifiedSince(kTemp, time1); |
| + MessageLoop::current()->RunAllPending(); |
| + EXPECT_EQ(4U, modified_origins().size()); |
| + for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kData); ++i) { |
| + if (kData[i].type == kTemp) |
| + EXPECT_EQ(1U, modified_origins().count(GURL(kData[i].origin))); |
| + } |
| + |
| + GetOriginsModifiedSince(kTemp, time2); |
| + MessageLoop::current()->RunAllPending(); |
| + EXPECT_EQ(2U, modified_origins().size()); |
| + |
| + GetOriginsModifiedSince(kTemp, time3); |
| + MessageLoop::current()->RunAllPending(); |
| + EXPECT_TRUE(modified_origins().empty()); |
| + |
| + client->ModifyOriginAndNotify(GURL("http://a.com/"), kTemp, 10); |
| + |
| + GetOriginsModifiedSince(kTemp, time3); |
| + MessageLoop::current()->RunAllPending(); |
| + EXPECT_EQ(1U, modified_origins().size()); |
| + EXPECT_EQ(1U, modified_origins().count(GURL("http://a.com/"))); |
| +} |
| + |
| TEST_F(QuotaManagerTest, DumpQuotaTable) { |
| SetPersistentHostQuota("example1.com", 1); |
| SetPersistentHostQuota("example2.com", 20); |
| @@ -1334,7 +1395,7 @@ TEST_F(QuotaManagerTest, DumpQuotaTable) { |
| EXPECT_TRUE(entries.empty()); |
| } |
| -TEST_F(QuotaManagerTest, DumpLastAccessTimeTable) { |
| +TEST_F(QuotaManagerTest, DumpOriginInfoTable) { |
| using std::make_pair; |
| quota_manager()->NotifyStorageAccessed( |
| @@ -1351,7 +1412,7 @@ TEST_F(QuotaManagerTest, DumpLastAccessTimeTable) { |
| kPerm); |
| MessageLoop::current()->RunAllPending(); |
| - DumpLastAccessTimeTable(); |
| + DumpOriginInfoTable(); |
| MessageLoop::current()->RunAllPending(); |
| typedef std::pair<GURL, StorageType> TypedOrigin; |
| @@ -1363,7 +1424,7 @@ TEST_F(QuotaManagerTest, DumpLastAccessTimeTable) { |
| std::set<Entry> entries |
| (kEntries, kEntries + ARRAYSIZE_UNSAFE(kEntries)); |
| - typedef LastAccessTimeTableEntries::const_iterator iterator; |
| + typedef OriginInfoTableEntries::const_iterator iterator; |
| for (iterator itr(last_access_time_table().begin()), |
| end(last_access_time_table().end()); |
| itr != end; ++itr) { |