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) { |