Chromium Code Reviews| Index: webkit/appcache/appcache_host_unittest.cc |
| diff --git a/webkit/appcache/appcache_host_unittest.cc b/webkit/appcache/appcache_host_unittest.cc |
| index 762ed9c6de0388876d81ff34590034122186aa79..7b3a588e106cdcab9321c461d47a8d205751aa41 100644 |
| --- a/webkit/appcache/appcache_host_unittest.cc |
| +++ b/webkit/appcache/appcache_host_unittest.cc |
| @@ -10,6 +10,7 @@ |
| #include "webkit/appcache/appcache_backend_impl.h" |
| #include "webkit/appcache/appcache_group.h" |
| #include "webkit/appcache/appcache_host.h" |
| +#include "webkit/appcache/mock_appcache_policy.h" |
| #include "webkit/appcache/mock_appcache_service.h" |
| #include "webkit/quota/quota_manager.h" |
| @@ -432,5 +433,82 @@ TEST_F(AppCacheHostTest, ForDedicatedWorker) { |
| EXPECT_EQ(NULL, worker_host->GetParentAppCacheHost()); |
| } |
| -} // namespace appcache |
| +TEST_F(AppCacheHostTest, SelectCacheAllowed) { |
| + scoped_refptr<MockQuotaManagerProxy> mock_quota_proxy( |
| + new MockQuotaManagerProxy); |
| + MockAppCachePolicy mock_appcache_policy; |
| + mock_appcache_policy.can_create_return_value_ = true; |
| + service_.set_quota_manager_proxy(mock_quota_proxy); |
| + service_.set_appcache_policy(&mock_appcache_policy); |
| + |
| + // Reset our mock frontend |
| + mock_frontend_.last_cache_id_ = -333; |
| + mock_frontend_.last_host_id_ = -333; |
| + mock_frontend_.last_status_ = OBSOLETE; |
| + mock_frontend_.last_event_id_ = OBSOLETE_EVENT; |
| + |
| + const GURL kDocAndOriginUrl(GURL("http://whatever/").GetOrigin()); |
| + const GURL kManifestUrl(GURL("http://whatever/cache.manifest")); |
| + { |
| + AppCacheHost host(1, &mock_frontend_, &service_); |
| + host.first_party_url_ = kDocAndOriginUrl; |
| + host.SelectCache(kDocAndOriginUrl, kNoCacheId, kManifestUrl); |
| + EXPECT_EQ(1, mock_quota_proxy->GetInUseCount(kDocAndOriginUrl)); |
| + // MockAppCacheService::LoadOrCreateGroup is asynchronous, so we shouldn't |
| + // have received an OnCacheSelected msg yet. |
| + EXPECT_EQ(-333, mock_frontend_.last_host_id_); |
| + EXPECT_EQ(-333, mock_frontend_.last_cache_id_); |
| + EXPECT_EQ(OBSOLETE, mock_frontend_.last_status_); |
| + // No error events either |
| + EXPECT_EQ(OBSOLETE_EVENT, mock_frontend_.last_event_id_); |
|
michaeln
2011/09/05 19:49:31
does it make sense to also verify that frontend.On
marja
2011/09/06 09:09:28
Done.
|
| + |
| + EXPECT_TRUE(host.is_selection_pending()); |
| + } |
| + EXPECT_EQ(0, mock_quota_proxy->GetInUseCount(kDocAndOriginUrl)); |
| + service_.set_quota_manager_proxy(NULL); |
| +} |
| + |
| +TEST_F(AppCacheHostTest, SelectCacheBlocked) { |
| + scoped_refptr<MockQuotaManagerProxy> mock_quota_proxy( |
| + new MockQuotaManagerProxy); |
| + MockAppCachePolicy mock_appcache_policy; |
| + mock_appcache_policy.can_create_return_value_ = false; |
| + service_.set_quota_manager_proxy(mock_quota_proxy); |
| + service_.set_appcache_policy(&mock_appcache_policy); |
| + |
| + // Reset our mock frontend |
| + mock_frontend_.last_cache_id_ = -333; |
| + mock_frontend_.last_host_id_ = -333; |
| + mock_frontend_.last_status_ = OBSOLETE; |
| + mock_frontend_.last_event_id_ = OBSOLETE_EVENT; |
| + |
| + const GURL kDocAndOriginUrl(GURL("http://whatever/").GetOrigin()); |
| + const GURL kManifestUrl(GURL("http://whatever/cache.manifest")); |
| + { |
| + AppCacheHost host(1, &mock_frontend_, &service_); |
| + host.first_party_url_ = kDocAndOriginUrl; |
| + host.SelectCache(kDocAndOriginUrl, kNoCacheId, kManifestUrl); |
| + EXPECT_EQ(1, mock_quota_proxy->GetInUseCount(kDocAndOriginUrl)); |
| + |
| + // We should have received an OnCacheSelected msg |
| + EXPECT_EQ(1, mock_frontend_.last_host_id_); |
| + EXPECT_EQ(kNoCacheId, mock_frontend_.last_cache_id_); |
| + EXPECT_EQ(UNCACHED, mock_frontend_.last_status_); |
| + |
| + // Also, an error event was raised |
| + EXPECT_EQ(ERROR_EVENT, mock_frontend_.last_event_id_); |
|
michaeln
2011/09/05 19:49:31
similarly verify that frontend.OnContentBlocked ha
marja
2011/09/06 09:09:28
Done.
|
| + |
| + // Otherwise, see that it respond as if there is no cache selected. |
| + EXPECT_EQ(1, host.host_id()); |
| + EXPECT_EQ(&service_, host.service()); |
| + EXPECT_EQ(&mock_frontend_, host.frontend()); |
| + EXPECT_EQ(NULL, host.associated_cache()); |
| + EXPECT_FALSE(host.is_selection_pending()); |
| + EXPECT_TRUE(host.preferred_manifest_url().is_empty()); |
| + } |
| + EXPECT_EQ(0, mock_quota_proxy->GetInUseCount(kDocAndOriginUrl)); |
| + service_.set_quota_manager_proxy(NULL); |
| +} |
| + |
| +} // namespace appcache |