Index: webkit/quota/quota_database_unittest.cc |
diff --git a/webkit/quota/quota_database_unittest.cc b/webkit/quota/quota_database_unittest.cc |
index 6e80c851555619ac1025fff2c8c6d43ded08aad4..69fca69607585deed10d7a9f27401c23fd3b00aa 100644 |
--- a/webkit/quota/quota_database_unittest.cc |
+++ b/webkit/quota/quota_database_unittest.cc |
@@ -7,6 +7,8 @@ |
#include <set> |
#include "app/sql/connection.h" |
+#include "base/bind.h" |
+#include "base/callback.h" |
#include "base/file_util.h" |
#include "base/scoped_temp_dir.h" |
#include "googleurl/src/gurl.h" |
@@ -192,6 +194,62 @@ class QuotaDatabaseTest : public testing::Test { |
&used_count)); |
EXPECT_EQ(1, used_count); |
} |
+ |
+ template<typename T> |
+ struct EntryVerifier { |
+ std::set<T>* xs; |
+ bool Run(const T& x) { |
+ EXPECT_EQ(1u, xs->erase(x)); |
+ return true; |
+ } |
+ }; |
+ |
+ void DumpQuotaTable(const FilePath& kDbFile) { |
+ typedef QuotaDatabase::QuotaTableEntry QuotaTableEntry; |
+ typedef QuotaDatabase::QuotaTableCallback QuotaTableCallback; |
+ |
+ QuotaTableEntry kQuotaTable[] = { |
+ {"http://go/", kStorageTypeTemporary, 1}, |
+ {"http://oo/", kStorageTypeTemporary, 2}, |
+ {"http://gle/", kStorageTypePersistent, 3} |
+ }; |
+ |
+ std::set<QuotaTableEntry> quota_table( |
+ kQuotaTable, kQuotaTable + ARRAYSIZE_UNSAFE(kQuotaTable)); |
+ QuotaDatabase db(kDbFile); |
+ EXPECT_TRUE(db.AssignQuotaTable(quota_table)); |
+ |
+ typedef EntryVerifier<QuotaTableEntry> Verifier; |
+ Verifier verifier = {"a_table}; |
+ QuotaTableCallback callback = base::Bind(&Verifier::Run, |
+ base::Unretained(&verifier)); |
+ EXPECT_TRUE(db.DumpQuotaTable(&callback)); |
+ EXPECT_TRUE(quota_table.empty()); |
+ } |
+ |
+ void DumpAccessTable(const FilePath& kDbFile) { |
+ typedef QuotaDatabase::AccessTableEntry AccessTableEntry; |
+ typedef QuotaDatabase::AccessTableCallback AccessTableCallback; |
+ |
+ base::Time now(base::Time::Now()); |
+ AccessTableEntry kAccessTable[] = { |
+ {GURL("http://go/"), kStorageTypeTemporary, 2147483647, now}, |
+ {GURL("http://oo/"), kStorageTypeTemporary, 0, now}, |
+ {GURL("http://gle/"), kStorageTypeTemporary, 1, now}, |
+ }; |
+ |
+ std::set<AccessTableEntry> access_table( |
+ kAccessTable, kAccessTable + ARRAYSIZE_UNSAFE(kAccessTable)); |
+ QuotaDatabase db(kDbFile); |
+ EXPECT_TRUE(db.AssignAccessTable(access_table)); |
+ |
+ typedef EntryVerifier<AccessTableEntry> Verifier; |
+ Verifier verifier = {&access_table}; |
+ AccessTableCallback callback = base::Bind(&Verifier::Run, |
+ base::Unretained(&verifier)); |
+ EXPECT_TRUE(db.DumpAccessTable(&callback)); |
+ EXPECT_TRUE(access_table.empty()); |
+ } |
}; |
TEST_F(QuotaDatabaseTest, LazyOpen) { |
@@ -247,4 +305,20 @@ TEST_F(QuotaDatabaseTest, RegisterOrigins) { |
RegisterOrigins(kDbFile); |
RegisterOrigins(FilePath()); |
} |
+ |
+TEST_F(QuotaDatabaseTest, DumpQuotaTable) { |
+ ScopedTempDir data_dir; |
+ ASSERT_TRUE(data_dir.CreateUniqueTempDir()); |
+ const FilePath kDbFile = data_dir.path().AppendASCII("quota_manager.db"); |
+ DumpQuotaTable(kDbFile); |
+ DumpQuotaTable(FilePath()); |
+} |
+ |
+TEST_F(QuotaDatabaseTest, DumpAccessTable) { |
+ ScopedTempDir data_dir; |
+ ASSERT_TRUE(data_dir.CreateUniqueTempDir()); |
+ const FilePath kDbFile = data_dir.path().AppendASCII("quota_manager.db"); |
+ DumpAccessTable(kDbFile); |
+ DumpAccessTable(FilePath()); |
+} |
} // namespace quota |