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

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: Keeping up to date with trunk. 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
« no previous file with comments | « webkit/appcache/appcache_host.cc ('k') | webkit/appcache/appcache_policy.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..462162810190f1e438fe90dcfed68a06b98504b8 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"
@@ -32,7 +33,8 @@ class AppCacheHostTest : public testing::Test {
: last_host_id_(-222), last_cache_id_(-222),
last_status_(appcache::OBSOLETE),
last_status_changed_(appcache::OBSOLETE),
- last_event_id_(appcache::OBSOLETE_EVENT) {
+ last_event_id_(appcache::OBSOLETE_EVENT),
+ content_blocked_(false) {
}
virtual void OnCacheSelected(
@@ -68,6 +70,7 @@ class AppCacheHostTest : public testing::Test {
}
virtual void OnContentBlocked(int host_id, const GURL& manifest_url) {
+ content_blocked_ = true;
}
int last_host_id_;
@@ -75,6 +78,7 @@ class AppCacheHostTest : public testing::Test {
appcache::Status last_status_;
appcache::Status last_status_changed_;
appcache::EventID last_event_id_;
+ bool content_blocked_;
};
class MockQuotaManagerProxy : public quota::QuotaManagerProxy {
@@ -432,5 +436,86 @@ 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;
+ mock_frontend_.content_blocked_ = false;
+
+ 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_);
+ EXPECT_FALSE(mock_frontend_.content_blocked_);
+
+ 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;
+ mock_frontend_.content_blocked_ = false;
+
+ 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_);
+ EXPECT_TRUE(mock_frontend_.content_blocked_);
+
+ // 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
« no previous file with comments | « webkit/appcache/appcache_host.cc ('k') | webkit/appcache/appcache_policy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698