diff options
-rw-r--r-- | webkit/quota/mock_storage_client.cc | 6 | ||||
-rw-r--r-- | webkit/quota/quota_manager_unittest.cc | 73 | ||||
-rw-r--r-- | webkit/quota/usage_tracker.cc | 2 |
3 files changed, 33 insertions, 48 deletions
diff --git a/webkit/quota/mock_storage_client.cc b/webkit/quota/mock_storage_client.cc index 39958d1..e6578cd 100644 --- a/webkit/quota/mock_storage_client.cc +++ b/webkit/quota/mock_storage_client.cc @@ -67,10 +67,10 @@ void MockStorageClient::ModifyMockOriginDataSize( if (find == origin_data_.end()) { DCHECK_GE(delta, 0); AddMockOriginData(origin_url, type, delta); - return; + } else { + find->second += delta; + DCHECK_GE(find->second, 0); } - find->second += delta; - DCHECK_GE(find->second, 0); // TODO(tzik): Check quota to prevent usage exceed quota_manager_proxy_->NotifyStorageModified(id(), origin_url, type, delta); diff --git a/webkit/quota/quota_manager_unittest.cc b/webkit/quota/quota_manager_unittest.cc index 0aa91188..6898f1a 100644 --- a/webkit/quota/quota_manager_unittest.cc +++ b/webkit/quota/quota_manager_unittest.cc @@ -298,6 +298,8 @@ class QuotaManagerTest : public testing::Test { last_access_time_table_ = entries; } + void GetUsage_WithModifyTestBody(const StorageType type); + void set_additional_callback_count(int c) { additional_callback_count_ = c; } int additional_callback_count() const { return additional_callback_count_; } void DidGetUsageAndQuotaAdditional( @@ -496,35 +498,45 @@ TEST_F(QuotaManagerTest, GetUsage_MultipleClients) { EXPECT_EQ(40 + 50, usage()); } -TEST_F(QuotaManagerTest, GetTemporaryUsage_WithModify) { - static const MockOriginData kData[] = { - { "http://foo.com/", kStorageTypeTemporary, 10 }, - { "http://foo.com:1/", kStorageTypeTemporary, 20 }, +void QuotaManagerTest::GetUsage_WithModifyTestBody(const StorageType type) { + const MockOriginData data[] = { + { "http://foo.com/", type, 10 }, + { "http://foo.com:1/", type, 20 }, }; - MockStorageClient* client = CreateClient(kData, ARRAYSIZE_UNSAFE(kData)); + MockStorageClient* client = CreateClient(data, ARRAYSIZE_UNSAFE(data)); RegisterClient(client); - GetUsageAndQuota(GURL("http://foo.com/"), kStorageTypeTemporary); + GetUsageAndQuota(GURL("http://foo.com/"), type); MessageLoop::current()->RunAllPending(); EXPECT_EQ(kQuotaStatusOk, status()); EXPECT_EQ(10 + 20, usage()); - client->ModifyMockOriginDataSize( - GURL("http://foo.com/"), kStorageTypeTemporary, 20); - client->ModifyMockOriginDataSize( - GURL("http://foo.com:1/"), kStorageTypeTemporary, -5); - client->ModifyMockOriginDataSize( - GURL("http://bar.com/"), kStorageTypeTemporary, 33); + client->ModifyMockOriginDataSize(GURL("http://foo.com/"), type, 30); + client->ModifyMockOriginDataSize(GURL("http://foo.com:1/"), type, -5); - GetUsageAndQuota(GURL("http://foo.com/"), kStorageTypeTemporary); + // Modifying (adding) a new origin for an existing host. + client->ModifyMockOriginDataSize(GURL("https://foo.com/"), type, 1); + + GetUsageAndQuota(GURL("http://foo.com/"), type); MessageLoop::current()->RunAllPending(); EXPECT_EQ(kQuotaStatusOk, status()); - EXPECT_EQ(10 + 20 + 20 - 5, usage()); + EXPECT_EQ(10 + 20 + 30 - 5 + 1, usage()); + int foo_usage = usage(); - GetUsageAndQuota(GURL("http://bar.com/"), kStorageTypeTemporary); + // Modifying (adding) a new origin. + client->ModifyMockOriginDataSize(GURL("http://bar.com/"), type, 40); + GetUsageAndQuota(GURL("http://bar.com/"), type); MessageLoop::current()->RunAllPending(); EXPECT_EQ(kQuotaStatusOk, status()); - EXPECT_EQ(33, usage()); + EXPECT_EQ(40, usage()); + + GetGlobalUsage(type); + MessageLoop::current()->RunAllPending(); + EXPECT_EQ(foo_usage + 40, usage()); +} + +TEST_F(QuotaManagerTest, GetTemporaryUsage_WithModify) { + GetUsage_WithModifyTestBody(kStorageTypeTemporary); } TEST_F(QuotaManagerTest, GetTemporaryUsageAndQuota_WithAdditionalTasks) { @@ -666,34 +678,7 @@ TEST_F(QuotaManagerTest, GetPersistentUsageAndQuota_MultiOrigins) { } TEST_F(QuotaManagerTest, GetPersistentUsage_WithModify) { - static const MockOriginData kData[] = { - { "http://foo.com/", kStorageTypePersistent, 10 }, - { "http://foo.com:1/", kStorageTypePersistent, 20 }, - }; - MockStorageClient* client = CreateClient(kData, ARRAYSIZE_UNSAFE(kData)); - RegisterClient(client); - - GetUsageAndQuota(GURL("http://foo.com/"), kStorageTypePersistent); - MessageLoop::current()->RunAllPending(); - EXPECT_EQ(kQuotaStatusOk, status()); - EXPECT_EQ(10 + 20, usage()); - - client->ModifyMockOriginDataSize( - GURL("http://foo.com/"), kStorageTypePersistent, 20); - client->ModifyMockOriginDataSize( - GURL("http://foo.com:1/"), kStorageTypePersistent, -5); - client->ModifyMockOriginDataSize( - GURL("http://bar.com/"), kStorageTypePersistent, 33); - - GetUsageAndQuota(GURL("http://foo.com/"), kStorageTypePersistent); - MessageLoop::current()->RunAllPending(); - EXPECT_EQ(kQuotaStatusOk, status()); - EXPECT_EQ(10 + 20 + 20 - 5, usage()); - - GetUsageAndQuota(GURL("http://bar.com/"), kStorageTypePersistent); - MessageLoop::current()->RunAllPending(); - EXPECT_EQ(kQuotaStatusOk, status()); - EXPECT_EQ(33, usage()); + GetUsage_WithModifyTestBody(kStorageTypePersistent); } TEST_F(QuotaManagerTest, GetPersistentUsageAndQuota_WithAdditionalTasks) { diff --git a/webkit/quota/usage_tracker.cc b/webkit/quota/usage_tracker.cc index 53a3616..164a360 100644 --- a/webkit/quota/usage_tracker.cc +++ b/webkit/quota/usage_tracker.cc @@ -352,7 +352,7 @@ void ClientUsageTracker::UpdateUsageCache( host_usage_map_.find(host) != host_usage_map_.end()) { // This might be for a new origin. cached_origins_.insert(origin); - host_usage_map_[host] = delta; + host_usage_map_[host] += delta; global_usage_ += delta; DCHECK_GE(host_usage_map_[host], 0); DCHECK_GE(global_usage_, 0); |