| Index: webkit/appcache/appcache_storage_unittest.cc
|
| ===================================================================
|
| --- webkit/appcache/appcache_storage_unittest.cc (revision 88615)
|
| +++ webkit/appcache/appcache_storage_unittest.cc (working copy)
|
| @@ -17,6 +17,45 @@
|
| class MockStorageDelegate : public AppCacheStorage::Delegate {
|
| public:
|
| };
|
| +
|
| + class MockQuotaManagerProxy : public quota::QuotaManagerProxy {
|
| + public:
|
| + MockQuotaManagerProxy()
|
| + : QuotaManagerProxy(NULL, NULL),
|
| + notify_storage_accessed_count_(0),
|
| + notify_storage_modified_count_(0),
|
| + last_delta_(0) {}
|
| +
|
| + virtual void NotifyStorageAccessed(quota::QuotaClient::ID client_id,
|
| + const GURL& origin,
|
| + quota::StorageType type) {
|
| + EXPECT_EQ(quota::QuotaClient::kAppcache, client_id);
|
| + EXPECT_EQ(quota::kStorageTypeTemporary, type);
|
| + ++notify_storage_accessed_count_;
|
| + last_origin_ = origin;
|
| + }
|
| +
|
| + virtual void NotifyStorageModified(quota::QuotaClient::ID client_id,
|
| + const GURL& origin,
|
| + quota::StorageType type,
|
| + int64 delta) {
|
| + EXPECT_EQ(quota::QuotaClient::kAppcache, client_id);
|
| + EXPECT_EQ(quota::kStorageTypeTemporary, type);
|
| + ++notify_storage_modified_count_;
|
| + last_origin_ = origin;
|
| + last_delta_ = delta;
|
| + }
|
| +
|
| + // Not needed for our tests.
|
| + virtual void RegisterClient(quota::QuotaClient* client) {}
|
| + virtual void NotifyOriginInUse(const GURL& origin) {}
|
| + virtual void NotifyOriginNoLongerInUse(const GURL& origin) {}
|
| +
|
| + int notify_storage_accessed_count_;
|
| + int notify_storage_modified_count_;
|
| + GURL last_origin_;
|
| + int last_delta_;
|
| + };
|
| };
|
|
|
| TEST_F(AppCacheStorageTest, AddRemoveCache) {
|
| @@ -107,4 +146,47 @@
|
| EXPECT_NE(delegate_reference1.get(), delegate_reference2.get());
|
| }
|
|
|
| +TEST_F(AppCacheStorageTest, UsageMap) {
|
| + const GURL kOrigin("http://origin/");
|
| + const GURL kOrigin2("http://origin2/");
|
| +
|
| + MockAppCacheService service;
|
| + scoped_refptr<MockQuotaManagerProxy> mock_proxy(new MockQuotaManagerProxy);
|
| + service.set_quota_manager_proxy(mock_proxy);
|
| +
|
| + service.storage()->UpdateUsageMapAndNotify(kOrigin, 0);
|
| + EXPECT_EQ(0, mock_proxy->notify_storage_modified_count_);
|
| +
|
| + service.storage()->UpdateUsageMapAndNotify(kOrigin, 10);
|
| + EXPECT_EQ(1, mock_proxy->notify_storage_modified_count_);
|
| + EXPECT_EQ(10, mock_proxy->last_delta_);
|
| + EXPECT_EQ(kOrigin, mock_proxy->last_origin_);
|
| +
|
| + service.storage()->UpdateUsageMapAndNotify(kOrigin, 100);
|
| + EXPECT_EQ(2, mock_proxy->notify_storage_modified_count_);
|
| + EXPECT_EQ(90, mock_proxy->last_delta_);
|
| + EXPECT_EQ(kOrigin, mock_proxy->last_origin_);
|
| +
|
| + service.storage()->UpdateUsageMapAndNotify(kOrigin, 0);
|
| + EXPECT_EQ(3, mock_proxy->notify_storage_modified_count_);
|
| + EXPECT_EQ(-100, mock_proxy->last_delta_);
|
| + EXPECT_EQ(kOrigin, mock_proxy->last_origin_);
|
| +
|
| + service.storage()->NotifyStorageAccessed(kOrigin2);
|
| + EXPECT_EQ(0, mock_proxy->notify_storage_accessed_count_);
|
| +
|
| + service.storage()->usage_map_[kOrigin2] = 1;
|
| + service.storage()->NotifyStorageAccessed(kOrigin2);
|
| + EXPECT_EQ(1, mock_proxy->notify_storage_accessed_count_);
|
| + EXPECT_EQ(kOrigin2, mock_proxy->last_origin_);
|
| +
|
| + service.storage()->usage_map_.clear();
|
| + service.storage()->usage_map_[kOrigin] = 5000;
|
| + service.storage()->ClearUsageMapAndNotify();
|
| + EXPECT_EQ(4, mock_proxy->notify_storage_modified_count_);
|
| + EXPECT_EQ(-5000, mock_proxy->last_delta_);
|
| + EXPECT_EQ(kOrigin, mock_proxy->last_origin_);
|
| + EXPECT_TRUE(service.storage()->usage_map_.empty());
|
| +}
|
| +
|
| } // namespace appcache
|
|
|