| Index: webkit/quota/quota_manager_unittest.cc
|
| diff --git a/webkit/quota/quota_manager_unittest.cc b/webkit/quota/quota_manager_unittest.cc
|
| index 171f6b40c0aae2bacb82533c11d2016546cf724d..2002e844c18901684aa75b206eace617dfc195d9 100644
|
| --- a/webkit/quota/quota_manager_unittest.cc
|
| +++ b/webkit/quota/quota_manager_unittest.cc
|
| @@ -33,6 +33,11 @@ const StorageType kPerm = kStorageTypePersistent;
|
|
|
| const int kAllClients = QuotaClient::kAllClientsMask;
|
|
|
| +// Returns a deterministic value for the amount of available disk space.
|
| +int64 GetAvailableDiskSpaceForTest(const FilePath&) {
|
| + return 13377331;
|
| +}
|
| +
|
| class QuotaManagerTest : public testing::Test {
|
| protected:
|
| typedef QuotaManager::QuotaTableEntry QuotaTableEntry;
|
| @@ -56,6 +61,8 @@ class QuotaManagerTest : public testing::Test {
|
| mock_special_storage_policy_);
|
| // Don't (automatically) start the eviction for testing.
|
| quota_manager_->eviction_disabled_ = true;
|
| + // Don't query the hard disk for remaining capacity.
|
| + quota_manager_->get_disk_space_fn_ = &GetAvailableDiskSpaceForTest;
|
| additional_callback_count_ = 0;
|
| }
|
|
|
| @@ -85,14 +92,14 @@ class QuotaManagerTest : public testing::Test {
|
| weak_factory_.GetWeakPtr()));
|
| }
|
|
|
| - void GetUsageAndQuota(const GURL& origin, StorageType type) {
|
| + void GetUsageAndQuota(const GURL& origin,
|
| + StorageType type) {
|
| quota_status_ = kQuotaStatusUnknown;
|
| usage_ = -1;
|
| quota_ = -1;
|
| quota_manager_->GetUsageAndQuota(
|
| - origin, type,
|
| - base::Bind(&QuotaManagerTest::DidGetUsageAndQuota,
|
| - weak_factory_.GetWeakPtr()));
|
| + origin, type, base::Bind(&QuotaManagerTest::DidGetUsageAndQuota,
|
| + weak_factory_.GetWeakPtr()));
|
| }
|
|
|
| void GetTemporaryGlobalQuota() {
|
| @@ -162,8 +169,8 @@ class QuotaManagerTest : public testing::Test {
|
| }
|
|
|
| void DeleteClientOriginData(QuotaClient* client,
|
| - const GURL& origin,
|
| - StorageType type) {
|
| + const GURL& origin,
|
| + StorageType type) {
|
| DCHECK(client);
|
| quota_status_ = kQuotaStatusUnknown;
|
| client->DeleteOriginData(
|
| @@ -595,17 +602,20 @@ TEST_F(QuotaManagerTest, GetTemporaryUsageAndQuota_MultiOrigins) {
|
|
|
| TEST_F(QuotaManagerTest, GetUsage_MultipleClients) {
|
| static const MockOriginData kData1[] = {
|
| - { "http://foo.com/", kTemp, 10 },
|
| - { "http://bar.com/", kTemp, 20 },
|
| + { "http://foo.com/", kTemp, 10 },
|
| + { "http://bar.com/", kTemp, 20 },
|
| { "http://bar.com/", kPerm, 50 },
|
| - { "http://unlimited/", kPerm, 1 },
|
| + { "http://unlimited/", kPerm, 1 },
|
| + { "http://installed/", kPerm, 1 },
|
| };
|
| static const MockOriginData kData2[] = {
|
| - { "https://foo.com/", kTemp, 30 },
|
| + { "https://foo.com/", kTemp, 30 },
|
| { "http://example.com/", kPerm, 40 },
|
| - { "http://unlimited/", kTemp, 1 },
|
| + { "http://unlimited/", kTemp, 1 },
|
| + { "http://installed/", kTemp, 1 },
|
| };
|
| mock_special_storage_policy()->AddUnlimited(GURL("http://unlimited/"));
|
| + mock_special_storage_policy()->AddInstalledApp(GURL("http://installed/"));
|
| RegisterClient(CreateClient(kData1, ARRAYSIZE_UNSAFE(kData1),
|
| QuotaClient::kFileSystem));
|
| RegisterClient(CreateClient(kData2, ARRAYSIZE_UNSAFE(kData2),
|
| @@ -625,25 +635,42 @@ TEST_F(QuotaManagerTest, GetUsage_MultipleClients) {
|
| MessageLoop::current()->RunAllPending();
|
| EXPECT_EQ(kQuotaStatusOk, status());
|
| EXPECT_EQ(1, usage());
|
| - EXPECT_EQ(kint64max, quota());
|
| + EXPECT_EQ(QuotaManager::kNoLimit, quota());
|
|
|
| GetUsageAndQuota(GURL("http://unlimited/"), kPerm);
|
| MessageLoop::current()->RunAllPending();
|
| EXPECT_EQ(kQuotaStatusOk, status());
|
| EXPECT_EQ(1, usage());
|
| - EXPECT_EQ(kint64max, quota());
|
| + EXPECT_EQ(QuotaManager::kNoLimit, quota());
|
| +
|
| + GetAvailableSpace();
|
| + MessageLoop::current()->RunAllPending();
|
| + EXPECT_EQ(kQuotaStatusOk, status());
|
| + EXPECT_LE(0, available_space());
|
| +
|
| + GetUsageAndQuota(GURL("http://installed/"), kTemp);
|
| + MessageLoop::current()->RunAllPending();
|
| + EXPECT_EQ(kQuotaStatusOk, status());
|
| + EXPECT_EQ(1, usage());
|
| + EXPECT_EQ(available_space(), quota());
|
| +
|
| + GetUsageAndQuota(GURL("http://installed/"), kPerm);
|
| + MessageLoop::current()->RunAllPending();
|
| + EXPECT_EQ(kQuotaStatusOk, status());
|
| + EXPECT_EQ(1, usage());
|
| + EXPECT_EQ(available_space(), quota());
|
|
|
| GetGlobalUsage(kTemp);
|
| MessageLoop::current()->RunAllPending();
|
| EXPECT_EQ(kQuotaStatusOk, status());
|
| - EXPECT_EQ(10 + 20 + 30 + 1, usage());
|
| - EXPECT_EQ(1, unlimited_usage());
|
| + EXPECT_EQ(10 + 20 + 30 + 1 + 1, usage());
|
| + EXPECT_EQ(2, unlimited_usage());
|
|
|
| GetGlobalUsage(kPerm);
|
| MessageLoop::current()->RunAllPending();
|
| EXPECT_EQ(kQuotaStatusOk, status());
|
| - EXPECT_EQ(40 + 50 + 1, usage());
|
| - EXPECT_EQ(1, unlimited_usage());
|
| + EXPECT_EQ(40 + 50 + 1 + 1, usage());
|
| + EXPECT_EQ(2, unlimited_usage());
|
| }
|
|
|
| void QuotaManagerTest::GetUsage_WithModifyTestBody(const StorageType type) {
|
| @@ -712,8 +739,7 @@ TEST_F(QuotaManagerTest, GetTemporaryUsageAndQuota_WithAdditionalTasks) {
|
| RunAdditionalUsageAndQuotaTask(GURL("http://foo.com/"),
|
| kTemp);
|
| GetUsageAndQuota(GURL("http://foo.com/"), kTemp);
|
| - RunAdditionalUsageAndQuotaTask(GURL("http://bar.com/"),
|
| - kTemp);
|
| + RunAdditionalUsageAndQuotaTask(GURL("http://bar.com/"), kTemp);
|
| MessageLoop::current()->RunAllPending();
|
| EXPECT_EQ(kQuotaStatusOk, status());
|
| EXPECT_EQ(10 + 20, usage());
|
| @@ -820,7 +846,7 @@ TEST_F(QuotaManagerTest, GetTemporaryUsageAndQuota_Unlimited) {
|
| MessageLoop::current()->RunAllPending();
|
| EXPECT_EQ(kQuotaStatusOk, status());
|
| EXPECT_EQ(4000, usage());
|
| - EXPECT_EQ(kint64max, quota());
|
| + EXPECT_EQ(QuotaManager::kNoLimit, quota());
|
|
|
| // Test when overbugdet.
|
| SetTemporaryGlobalQuota(100);
|
| @@ -845,7 +871,7 @@ TEST_F(QuotaManagerTest, GetTemporaryUsageAndQuota_Unlimited) {
|
| MessageLoop::current()->RunAllPending();
|
| EXPECT_EQ(kQuotaStatusOk, status());
|
| EXPECT_EQ(4000, usage());
|
| - EXPECT_EQ(kint64max, quota());
|
| + EXPECT_EQ(QuotaManager::kNoLimit, quota());
|
|
|
| // Revoke the unlimited rights and make sure the change is noticed.
|
| mock_special_storage_policy()->Reset();
|
| @@ -985,8 +1011,7 @@ TEST_F(QuotaManagerTest, GetPersistentUsageAndQuota_WithAdditionalTasks) {
|
| RunAdditionalUsageAndQuotaTask(GURL("http://foo.com/"),
|
| kPerm);
|
| GetUsageAndQuota(GURL("http://foo.com/"), kPerm);
|
| - RunAdditionalUsageAndQuotaTask(GURL("http://bar.com/"),
|
| - kPerm);
|
| + RunAdditionalUsageAndQuotaTask(GURL("http://bar.com/"), kPerm);
|
| MessageLoop::current()->RunAllPending();
|
| EXPECT_EQ(kQuotaStatusOk, status());
|
| EXPECT_EQ(10 + 20, usage());
|
| @@ -1006,10 +1031,8 @@ TEST_F(QuotaManagerTest, GetPersistentUsageAndQuota_NukeManager) {
|
|
|
| set_additional_callback_count(0);
|
| GetUsageAndQuota(GURL("http://foo.com/"), kPerm);
|
| - RunAdditionalUsageAndQuotaTask(GURL("http://foo.com/"),
|
| - kPerm);
|
| - RunAdditionalUsageAndQuotaTask(GURL("http://bar.com/"),
|
| - kPerm);
|
| + RunAdditionalUsageAndQuotaTask(GURL("http://foo.com/"), kPerm);
|
| + RunAdditionalUsageAndQuotaTask(GURL("http://bar.com/"), kPerm);
|
|
|
| // Nuke before waiting for callbacks.
|
| set_quota_manager(NULL);
|
|
|