| Index: webkit/quota/quota_database_unittest.cc
|
| diff --git a/webkit/quota/quota_database_unittest.cc b/webkit/quota/quota_database_unittest.cc
|
| deleted file mode 100644
|
| index ac6fdcd4e0c7e818760e15df213fda1b93049ba8..0000000000000000000000000000000000000000
|
| --- a/webkit/quota/quota_database_unittest.cc
|
| +++ /dev/null
|
| @@ -1,579 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include <algorithm>
|
| -#include <iterator>
|
| -#include <set>
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/callback.h"
|
| -#include "base/file_util.h"
|
| -#include "base/files/scoped_temp_dir.h"
|
| -#include "base/message_loop.h"
|
| -#include "googleurl/src/gurl.h"
|
| -#include "sql/connection.h"
|
| -#include "sql/meta_table.h"
|
| -#include "sql/statement.h"
|
| -#include "sql/transaction.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -#include "webkit/quota/mock_special_storage_policy.h"
|
| -#include "webkit/quota/quota_database.h"
|
| -
|
| -namespace quota {
|
| -namespace {
|
| -
|
| -const base::Time kZeroTime;
|
| -
|
| -class TestErrorDelegate : public sql::ErrorDelegate {
|
| - public:
|
| - virtual int OnError(int error,
|
| - sql::Connection* connection,
|
| - sql::Statement* stmt) OVERRIDE {
|
| - return error;
|
| - }
|
| -
|
| - protected:
|
| - virtual ~TestErrorDelegate() {}
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -class QuotaDatabaseTest : public testing::Test {
|
| - protected:
|
| - typedef QuotaDatabase::QuotaTableEntry QuotaTableEntry;
|
| - typedef QuotaDatabase::QuotaTableCallback QuotaTableCallback;
|
| - typedef QuotaDatabase::OriginInfoTableCallback
|
| - OriginInfoTableCallback;
|
| -
|
| - void LazyOpen(const base::FilePath& kDbFile) {
|
| - QuotaDatabase db(kDbFile);
|
| - EXPECT_FALSE(db.LazyOpen(false));
|
| - ASSERT_TRUE(db.LazyOpen(true));
|
| - EXPECT_TRUE(db.db_.get());
|
| - EXPECT_TRUE(kDbFile.empty() || file_util::PathExists(kDbFile));
|
| - }
|
| -
|
| - void UpgradeSchemaV2toV3(const base::FilePath& kDbFile) {
|
| - const QuotaTableEntry entries[] = {
|
| - QuotaTableEntry("a", kStorageTypeTemporary, 1),
|
| - QuotaTableEntry("b", kStorageTypeTemporary, 2),
|
| - QuotaTableEntry("c", kStorageTypePersistent, 3),
|
| - };
|
| -
|
| - CreateV2Database(kDbFile, entries, ARRAYSIZE_UNSAFE(entries));
|
| -
|
| - QuotaDatabase db(kDbFile);
|
| - EXPECT_TRUE(db.LazyOpen(true));
|
| - EXPECT_TRUE(db.db_.get());
|
| -
|
| - typedef EntryVerifier<QuotaTableEntry> Verifier;
|
| - Verifier verifier(entries, entries + ARRAYSIZE_UNSAFE(entries));
|
| - EXPECT_TRUE(db.DumpQuotaTable(
|
| - new QuotaTableCallback(
|
| - base::Bind(&Verifier::Run,
|
| - base::Unretained(&verifier)))));
|
| - EXPECT_TRUE(verifier.table.empty());
|
| - }
|
| -
|
| - void HostQuota(const base::FilePath& kDbFile) {
|
| - QuotaDatabase db(kDbFile);
|
| - ASSERT_TRUE(db.LazyOpen(true));
|
| -
|
| - const char* kHost = "foo.com";
|
| - const int kQuota1 = 13579;
|
| - const int kQuota2 = kQuota1 + 1024;
|
| -
|
| - int64 quota = -1;
|
| - EXPECT_FALSE(db.GetHostQuota(kHost, kStorageTypeTemporary, "a));
|
| - EXPECT_FALSE(db.GetHostQuota(kHost, kStorageTypePersistent, "a));
|
| -
|
| - // Insert quota for temporary.
|
| - EXPECT_TRUE(db.SetHostQuota(kHost, kStorageTypeTemporary, kQuota1));
|
| - EXPECT_TRUE(db.GetHostQuota(kHost, kStorageTypeTemporary, "a));
|
| - EXPECT_EQ(kQuota1, quota);
|
| -
|
| - // Update quota for temporary.
|
| - EXPECT_TRUE(db.SetHostQuota(kHost, kStorageTypeTemporary, kQuota2));
|
| - EXPECT_TRUE(db.GetHostQuota(kHost, kStorageTypeTemporary, "a));
|
| - EXPECT_EQ(kQuota2, quota);
|
| -
|
| - // Quota for persistent must not be updated.
|
| - EXPECT_FALSE(db.GetHostQuota(kHost, kStorageTypePersistent, "a));
|
| -
|
| - // Delete temporary storage quota.
|
| - EXPECT_TRUE(db.DeleteHostQuota(kHost, kStorageTypeTemporary));
|
| - EXPECT_FALSE(db.GetHostQuota(kHost, kStorageTypeTemporary, "a));
|
| - }
|
| -
|
| - void GlobalQuota(const base::FilePath& kDbFile) {
|
| - QuotaDatabase db(kDbFile);
|
| - ASSERT_TRUE(db.LazyOpen(true));
|
| -
|
| - const char* kTempQuotaKey = QuotaDatabase::kTemporaryQuotaOverrideKey;
|
| - const char* kAvailSpaceKey = QuotaDatabase::kDesiredAvailableSpaceKey;
|
| -
|
| - int64 value = 0;
|
| - const int64 kValue1 = 456;
|
| - const int64 kValue2 = 123000;
|
| - EXPECT_FALSE(db.GetQuotaConfigValue(kTempQuotaKey, &value));
|
| - EXPECT_FALSE(db.GetQuotaConfigValue(kAvailSpaceKey, &value));
|
| -
|
| - EXPECT_TRUE(db.SetQuotaConfigValue(kTempQuotaKey, kValue1));
|
| - EXPECT_TRUE(db.GetQuotaConfigValue(kTempQuotaKey, &value));
|
| - EXPECT_EQ(kValue1, value);
|
| -
|
| - EXPECT_TRUE(db.SetQuotaConfigValue(kTempQuotaKey, kValue2));
|
| - EXPECT_TRUE(db.GetQuotaConfigValue(kTempQuotaKey, &value));
|
| - EXPECT_EQ(kValue2, value);
|
| -
|
| - EXPECT_TRUE(db.SetQuotaConfigValue(kAvailSpaceKey, kValue1));
|
| - EXPECT_TRUE(db.GetQuotaConfigValue(kAvailSpaceKey, &value));
|
| - EXPECT_EQ(kValue1, value);
|
| -
|
| - EXPECT_TRUE(db.SetQuotaConfigValue(kAvailSpaceKey, kValue2));
|
| - EXPECT_TRUE(db.GetQuotaConfigValue(kAvailSpaceKey, &value));
|
| - EXPECT_EQ(kValue2, value);
|
| - }
|
| -
|
| - void OriginLastAccessTimeLRU(const base::FilePath& kDbFile) {
|
| - QuotaDatabase db(kDbFile);
|
| - ASSERT_TRUE(db.LazyOpen(true));
|
| -
|
| - std::set<GURL> exceptions;
|
| - GURL origin;
|
| - EXPECT_TRUE(db.GetLRUOrigin(kStorageTypeTemporary, exceptions,
|
| - NULL, &origin));
|
| - EXPECT_TRUE(origin.is_empty());
|
| -
|
| - const GURL kOrigin1("http://a/");
|
| - const GURL kOrigin2("http://b/");
|
| - const GURL kOrigin3("http://c/");
|
| - const GURL kOrigin4("http://p/");
|
| -
|
| - // Adding three temporary storages, and
|
| - EXPECT_TRUE(db.SetOriginLastAccessTime(
|
| - kOrigin1, kStorageTypeTemporary, base::Time::FromInternalValue(10)));
|
| - EXPECT_TRUE(db.SetOriginLastAccessTime(
|
| - kOrigin2, kStorageTypeTemporary, base::Time::FromInternalValue(20)));
|
| - EXPECT_TRUE(db.SetOriginLastAccessTime(
|
| - kOrigin3, kStorageTypeTemporary, base::Time::FromInternalValue(30)));
|
| -
|
| - // one persistent.
|
| - EXPECT_TRUE(db.SetOriginLastAccessTime(
|
| - kOrigin4, kStorageTypePersistent, base::Time::FromInternalValue(40)));
|
| -
|
| - EXPECT_TRUE(db.GetLRUOrigin(kStorageTypeTemporary, exceptions,
|
| - NULL, &origin));
|
| - EXPECT_EQ(kOrigin1.spec(), origin.spec());
|
| -
|
| - // Test that unlimited origins are exluded from eviction, but
|
| - // protected origins are not excluded.
|
| - scoped_refptr<MockSpecialStoragePolicy> policy(
|
| - new MockSpecialStoragePolicy);
|
| - policy->AddUnlimited(kOrigin1);
|
| - policy->AddProtected(kOrigin2);
|
| - EXPECT_TRUE(db.GetLRUOrigin(kStorageTypeTemporary, exceptions,
|
| - policy, &origin));
|
| - EXPECT_EQ(kOrigin2.spec(), origin.spec());
|
| -
|
| - exceptions.insert(kOrigin1);
|
| - EXPECT_TRUE(db.GetLRUOrigin(kStorageTypeTemporary, exceptions,
|
| - NULL, &origin));
|
| - EXPECT_EQ(kOrigin2.spec(), origin.spec());
|
| -
|
| - exceptions.insert(kOrigin2);
|
| - EXPECT_TRUE(db.GetLRUOrigin(kStorageTypeTemporary, exceptions,
|
| - NULL, &origin));
|
| - EXPECT_EQ(kOrigin3.spec(), origin.spec());
|
| -
|
| - exceptions.insert(kOrigin3);
|
| - EXPECT_TRUE(db.GetLRUOrigin(kStorageTypeTemporary, exceptions,
|
| - NULL, &origin));
|
| - EXPECT_TRUE(origin.is_empty());
|
| -
|
| - EXPECT_TRUE(db.SetOriginLastAccessTime(
|
| - kOrigin1, kStorageTypeTemporary, base::Time::Now()));
|
| -
|
| - // Delete origin/type last access time information.
|
| - EXPECT_TRUE(db.DeleteOriginInfo(kOrigin3, kStorageTypeTemporary));
|
| -
|
| - // Querying again to see if the deletion has worked.
|
| - exceptions.clear();
|
| - EXPECT_TRUE(db.GetLRUOrigin(kStorageTypeTemporary, exceptions,
|
| - NULL, &origin));
|
| - EXPECT_EQ(kOrigin2.spec(), origin.spec());
|
| -
|
| - exceptions.insert(kOrigin1);
|
| - exceptions.insert(kOrigin2);
|
| - EXPECT_TRUE(db.GetLRUOrigin(kStorageTypeTemporary, exceptions,
|
| - NULL, &origin));
|
| - EXPECT_TRUE(origin.is_empty());
|
| - }
|
| -
|
| - void OriginLastModifiedSince(const base::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(0)));
|
| - EXPECT_TRUE(db.SetOriginLastModifiedTime(
|
| - kOrigin2, kStorageTypeTemporary, base::Time::FromInternalValue(10)));
|
| - EXPECT_TRUE(db.SetOriginLastModifiedTime(
|
| - kOrigin3, kStorageTypeTemporary, base::Time::FromInternalValue(20)));
|
| -
|
| - EXPECT_TRUE(db.GetOriginsModifiedSince(
|
| - kStorageTypeTemporary, &origins, base::Time()));
|
| - EXPECT_EQ(3U, origins.size());
|
| - EXPECT_EQ(1U, origins.count(kOrigin1));
|
| - EXPECT_EQ(1U, origins.count(kOrigin2));
|
| - EXPECT_EQ(1U, origins.count(kOrigin3));
|
| -
|
| - EXPECT_TRUE(db.GetOriginsModifiedSince(
|
| - kStorageTypeTemporary, &origins, base::Time::FromInternalValue(5)));
|
| - 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(15)));
|
| - 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(25)));
|
| - EXPECT_TRUE(origins.empty());
|
| -
|
| - // Update origin1's mod time but for persistent storage.
|
| - EXPECT_TRUE(db.SetOriginLastModifiedTime(
|
| - kOrigin1, kStorageTypePersistent, base::Time::FromInternalValue(30)));
|
| -
|
| - // Must have no effects on temporary origins info.
|
| - EXPECT_TRUE(db.GetOriginsModifiedSince(
|
| - kStorageTypeTemporary, &origins, base::Time::FromInternalValue(5)));
|
| - EXPECT_EQ(2U, origins.size());
|
| - EXPECT_EQ(0U, origins.count(kOrigin1));
|
| - EXPECT_EQ(1U, origins.count(kOrigin2));
|
| - EXPECT_EQ(1U, origins.count(kOrigin3));
|
| -
|
| - // One more update for persistent origin2.
|
| - EXPECT_TRUE(db.SetOriginLastModifiedTime(
|
| - kOrigin2, kStorageTypePersistent, base::Time::FromInternalValue(40)));
|
| -
|
| - EXPECT_TRUE(db.GetOriginsModifiedSince(
|
| - kStorageTypePersistent, &origins, base::Time::FromInternalValue(25)));
|
| - EXPECT_EQ(2U, origins.size());
|
| - EXPECT_EQ(1U, origins.count(kOrigin1));
|
| - EXPECT_EQ(1U, origins.count(kOrigin2));
|
| - EXPECT_EQ(0U, origins.count(kOrigin3));
|
| -
|
| - EXPECT_TRUE(db.GetOriginsModifiedSince(
|
| - kStorageTypePersistent, &origins, base::Time::FromInternalValue(35)));
|
| - EXPECT_EQ(1U, origins.size());
|
| - EXPECT_EQ(0U, origins.count(kOrigin1));
|
| - EXPECT_EQ(1U, origins.count(kOrigin2));
|
| - EXPECT_EQ(0U, origins.count(kOrigin3));
|
| - }
|
| -
|
| - void RegisterInitialOriginInfo(const base::FilePath& kDbFile) {
|
| - QuotaDatabase db(kDbFile);
|
| -
|
| - const GURL kOrigins[] = {
|
| - GURL("http://a/"),
|
| - GURL("http://b/"),
|
| - GURL("http://c/") };
|
| - std::set<GURL> origins(kOrigins, kOrigins + ARRAYSIZE_UNSAFE(kOrigins));
|
| -
|
| - EXPECT_TRUE(db.RegisterInitialOriginInfo(origins, kStorageTypeTemporary));
|
| -
|
| - int used_count = -1;
|
| - EXPECT_TRUE(db.FindOriginUsedCount(GURL("http://a/"),
|
| - kStorageTypeTemporary,
|
| - &used_count));
|
| - EXPECT_EQ(0, used_count);
|
| -
|
| - EXPECT_TRUE(db.SetOriginLastAccessTime(
|
| - GURL("http://a/"), kStorageTypeTemporary,
|
| - base::Time::FromDoubleT(1.0)));
|
| - used_count = -1;
|
| - EXPECT_TRUE(db.FindOriginUsedCount(GURL("http://a/"),
|
| - kStorageTypeTemporary,
|
| - &used_count));
|
| - EXPECT_EQ(1, used_count);
|
| -
|
| - EXPECT_TRUE(db.RegisterInitialOriginInfo(origins, kStorageTypeTemporary));
|
| -
|
| - used_count = -1;
|
| - EXPECT_TRUE(db.FindOriginUsedCount(GURL("http://a/"),
|
| - kStorageTypeTemporary,
|
| - &used_count));
|
| - EXPECT_EQ(1, used_count);
|
| - }
|
| -
|
| - template <typename EntryType>
|
| - struct EntryVerifier {
|
| - std::set<EntryType> table;
|
| -
|
| - template <typename Iterator>
|
| - EntryVerifier(Iterator itr, Iterator end)
|
| - : table(itr, end) {}
|
| -
|
| - bool Run(const EntryType& entry) {
|
| - EXPECT_EQ(1u, table.erase(entry));
|
| - return true;
|
| - }
|
| - };
|
| -
|
| - void DumpQuotaTable(const base::FilePath& kDbFile) {
|
| - QuotaTableEntry kTableEntries[] = {
|
| - QuotaTableEntry("http://go/", kStorageTypeTemporary, 1),
|
| - QuotaTableEntry("http://oo/", kStorageTypeTemporary, 2),
|
| - QuotaTableEntry("http://gle/", kStorageTypePersistent, 3)
|
| - };
|
| - QuotaTableEntry* begin = kTableEntries;
|
| - QuotaTableEntry* end = kTableEntries + ARRAYSIZE_UNSAFE(kTableEntries);
|
| -
|
| - QuotaDatabase db(kDbFile);
|
| - EXPECT_TRUE(db.LazyOpen(true));
|
| - AssignQuotaTable(db.db_.get(), begin, end);
|
| - db.Commit();
|
| -
|
| - typedef EntryVerifier<QuotaTableEntry> Verifier;
|
| - Verifier verifier(begin, end);
|
| - EXPECT_TRUE(db.DumpQuotaTable(
|
| - new QuotaTableCallback(
|
| - base::Bind(&Verifier::Run,
|
| - base::Unretained(&verifier)))));
|
| - EXPECT_TRUE(verifier.table.empty());
|
| - }
|
| -
|
| - void DumpOriginInfoTable(const base::FilePath& kDbFile) {
|
| - base::Time now(base::Time::Now());
|
| - typedef QuotaDatabase::OriginInfoTableEntry Entry;
|
| - Entry kTableEntries[] = {
|
| - Entry(GURL("http://go/"), kStorageTypeTemporary, 2147483647, now, now),
|
| - Entry(GURL("http://oo/"), kStorageTypeTemporary, 0, now, now),
|
| - Entry(GURL("http://gle/"), kStorageTypeTemporary, 1, now, now),
|
| - };
|
| - Entry* begin = kTableEntries;
|
| - Entry* end = kTableEntries + ARRAYSIZE_UNSAFE(kTableEntries);
|
| -
|
| - QuotaDatabase db(kDbFile);
|
| - EXPECT_TRUE(db.LazyOpen(true));
|
| - AssignOriginInfoTable(db.db_.get(), begin, end);
|
| - db.Commit();
|
| -
|
| - typedef EntryVerifier<Entry> Verifier;
|
| - Verifier verifier(begin, end);
|
| - EXPECT_TRUE(db.DumpOriginInfoTable(
|
| - new OriginInfoTableCallback(
|
| - base::Bind(&Verifier::Run,
|
| - base::Unretained(&verifier)))));
|
| - EXPECT_TRUE(verifier.table.empty());
|
| - }
|
| -
|
| - private:
|
| - template <typename Iterator>
|
| - void AssignQuotaTable(sql::Connection* db, Iterator itr, Iterator end) {
|
| - ASSERT_NE(db, (sql::Connection*)NULL);
|
| - for (; itr != end; ++itr) {
|
| - const char* kSql =
|
| - "INSERT INTO HostQuotaTable"
|
| - " (host, type, quota)"
|
| - " VALUES (?, ?, ?)";
|
| - sql::Statement statement;
|
| - statement.Assign(db->GetCachedStatement(SQL_FROM_HERE, kSql));
|
| - ASSERT_TRUE(statement.is_valid());
|
| -
|
| - statement.BindString(0, itr->host);
|
| - statement.BindInt(1, static_cast<int>(itr->type));
|
| - statement.BindInt64(2, itr->quota);
|
| - EXPECT_TRUE(statement.Run());
|
| - }
|
| - }
|
| -
|
| - template <typename Iterator>
|
| - void AssignOriginInfoTable(sql::Connection* db, Iterator itr, Iterator end) {
|
| - ASSERT_NE(db, (sql::Connection*)NULL);
|
| - for (; itr != end; ++itr) {
|
| - const char* kSql =
|
| - "INSERT INTO OriginInfoTable"
|
| - " (origin, type, used_count, last_access_time, last_modified_time)"
|
| - " VALUES (?, ?, ?, ?, ?)";
|
| - sql::Statement statement;
|
| - statement.Assign(db->GetCachedStatement(SQL_FROM_HERE, kSql));
|
| - ASSERT_TRUE(statement.is_valid());
|
| -
|
| - statement.BindString(0, itr->origin.spec());
|
| - 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());
|
| - EXPECT_TRUE(statement.Run());
|
| - }
|
| - }
|
| -
|
| - bool OpenDatabase(sql::Connection* db, const base::FilePath& kDbFile) {
|
| - if (kDbFile.empty()) {
|
| - return db->OpenInMemory();
|
| - }
|
| - if (!file_util::CreateDirectory(kDbFile.DirName()))
|
| - return false;
|
| - if (!db->Open(kDbFile))
|
| - return false;
|
| - db->Preload();
|
| - return true;
|
| - }
|
| -
|
| - // Create V2 database and populate some data.
|
| - void CreateV2Database(
|
| - const base::FilePath& kDbFile,
|
| - const QuotaTableEntry* entries,
|
| - size_t entries_size) {
|
| - scoped_ptr<sql::Connection> db(new sql::Connection);
|
| - scoped_ptr<sql::MetaTable> meta_table(new sql::MetaTable);
|
| -
|
| - // V2 schema definitions.
|
| - static const int kCurrentVersion = 2;
|
| - static const int kCompatibleVersion = 2;
|
| - static const char kHostQuotaTable[] = "HostQuotaTable";
|
| - static const char kOriginLastAccessTable[] = "OriginLastAccessTable";
|
| - static const QuotaDatabase::TableSchema kTables[] = {
|
| - { kHostQuotaTable,
|
| - "(host TEXT NOT NULL,"
|
| - " type INTEGER NOT NULL,"
|
| - " quota INTEGER,"
|
| - " UNIQUE(host, type))" },
|
| - { kOriginLastAccessTable,
|
| - "(origin TEXT NOT NULL,"
|
| - " type INTEGER NOT NULL,"
|
| - " used_count INTEGER,"
|
| - " last_access_time INTEGER,"
|
| - " UNIQUE(origin, type))" },
|
| - };
|
| - static const QuotaDatabase::IndexSchema kIndexes[] = {
|
| - { "HostIndex",
|
| - kHostQuotaTable,
|
| - "(host)",
|
| - false },
|
| - { "OriginLastAccessIndex",
|
| - kOriginLastAccessTable,
|
| - "(origin, last_access_time)",
|
| - false },
|
| - };
|
| -
|
| - ASSERT_TRUE(OpenDatabase(db.get(), kDbFile));
|
| - EXPECT_TRUE(QuotaDatabase::CreateSchema(
|
| - db.get(), meta_table.get(),
|
| - kCurrentVersion, kCompatibleVersion,
|
| - kTables, ARRAYSIZE_UNSAFE(kTables),
|
| - kIndexes, ARRAYSIZE_UNSAFE(kIndexes)));
|
| -
|
| - // V2 and V3 QuotaTable are compatible, so we can simply use
|
| - // AssignQuotaTable to poplulate v2 database here.
|
| - db->BeginTransaction();
|
| - AssignQuotaTable(db.get(), entries, entries + entries_size);
|
| - db->CommitTransaction();
|
| - }
|
| -
|
| - base::MessageLoop message_loop_;
|
| -};
|
| -
|
| -TEST_F(QuotaDatabaseTest, LazyOpen) {
|
| - base::ScopedTempDir data_dir;
|
| - ASSERT_TRUE(data_dir.CreateUniqueTempDir());
|
| - const base::FilePath kDbFile = data_dir.path().AppendASCII("quota_manager.db");
|
| - LazyOpen(kDbFile);
|
| - LazyOpen(base::FilePath());
|
| -}
|
| -
|
| -TEST_F(QuotaDatabaseTest, UpgradeSchema) {
|
| - base::ScopedTempDir data_dir;
|
| - ASSERT_TRUE(data_dir.CreateUniqueTempDir());
|
| - const base::FilePath kDbFile = data_dir.path().AppendASCII("quota_manager.db");
|
| - UpgradeSchemaV2toV3(kDbFile);
|
| -}
|
| -
|
| -TEST_F(QuotaDatabaseTest, HostQuota) {
|
| - base::ScopedTempDir data_dir;
|
| - ASSERT_TRUE(data_dir.CreateUniqueTempDir());
|
| - const base::FilePath kDbFile = data_dir.path().AppendASCII("quota_manager.db");
|
| - HostQuota(kDbFile);
|
| - HostQuota(base::FilePath());
|
| -}
|
| -
|
| -TEST_F(QuotaDatabaseTest, GlobalQuota) {
|
| - base::ScopedTempDir data_dir;
|
| - ASSERT_TRUE(data_dir.CreateUniqueTempDir());
|
| - const base::FilePath kDbFile = data_dir.path().AppendASCII("quota_manager.db");
|
| - GlobalQuota(kDbFile);
|
| - GlobalQuota(base::FilePath());
|
| -}
|
| -
|
| -TEST_F(QuotaDatabaseTest, OriginLastAccessTimeLRU) {
|
| - base::ScopedTempDir data_dir;
|
| - ASSERT_TRUE(data_dir.CreateUniqueTempDir());
|
| - const base::FilePath kDbFile = data_dir.path().AppendASCII("quota_manager.db");
|
| - OriginLastAccessTimeLRU(kDbFile);
|
| - OriginLastAccessTimeLRU(base::FilePath());
|
| -}
|
| -
|
| -TEST_F(QuotaDatabaseTest, OriginLastModifiedSince) {
|
| - base::ScopedTempDir data_dir;
|
| - ASSERT_TRUE(data_dir.CreateUniqueTempDir());
|
| - const base::FilePath kDbFile = data_dir.path().AppendASCII("quota_manager.db");
|
| - OriginLastModifiedSince(kDbFile);
|
| - OriginLastModifiedSince(base::FilePath());
|
| -}
|
| -
|
| -TEST_F(QuotaDatabaseTest, BootstrapFlag) {
|
| - base::ScopedTempDir data_dir;
|
| - ASSERT_TRUE(data_dir.CreateUniqueTempDir());
|
| -
|
| - const base::FilePath kDbFile = data_dir.path().AppendASCII("quota_manager.db");
|
| - QuotaDatabase db(kDbFile);
|
| -
|
| - EXPECT_FALSE(db.IsOriginDatabaseBootstrapped());
|
| - EXPECT_TRUE(db.SetOriginDatabaseBootstrapped(true));
|
| - EXPECT_TRUE(db.IsOriginDatabaseBootstrapped());
|
| - EXPECT_TRUE(db.SetOriginDatabaseBootstrapped(false));
|
| - EXPECT_FALSE(db.IsOriginDatabaseBootstrapped());
|
| -}
|
| -
|
| -TEST_F(QuotaDatabaseTest, RegisterInitialOriginInfo) {
|
| - base::ScopedTempDir data_dir;
|
| - ASSERT_TRUE(data_dir.CreateUniqueTempDir());
|
| - const base::FilePath kDbFile = data_dir.path().AppendASCII("quota_manager.db");
|
| - RegisterInitialOriginInfo(kDbFile);
|
| - RegisterInitialOriginInfo(base::FilePath());
|
| -}
|
| -
|
| -TEST_F(QuotaDatabaseTest, DumpQuotaTable) {
|
| - base::ScopedTempDir data_dir;
|
| - ASSERT_TRUE(data_dir.CreateUniqueTempDir());
|
| - const base::FilePath kDbFile = data_dir.path().AppendASCII("quota_manager.db");
|
| - DumpQuotaTable(kDbFile);
|
| - DumpQuotaTable(base::FilePath());
|
| -}
|
| -
|
| -TEST_F(QuotaDatabaseTest, DumpOriginInfoTable) {
|
| - base::ScopedTempDir data_dir;
|
| - ASSERT_TRUE(data_dir.CreateUniqueTempDir());
|
| - const base::FilePath kDbFile = data_dir.path().AppendASCII("quota_manager.db");
|
| - DumpOriginInfoTable(kDbFile);
|
| - DumpOriginInfoTable(base::FilePath());
|
| -}
|
| -} // namespace quota
|
|
|