Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(108)

Unified Diff: webkit/appcache/appcache_host_unittest.cc

Issue 7720022: Third-party appcache blocking. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: MockAppCachePolicy fixes. Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698