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