summaryrefslogtreecommitdiffstats
path: root/webkit/appcache/appcache_storage_impl_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/appcache/appcache_storage_impl_unittest.cc')
-rw-r--r--webkit/appcache/appcache_storage_impl_unittest.cc42
1 files changed, 37 insertions, 5 deletions
diff --git a/webkit/appcache/appcache_storage_impl_unittest.cc b/webkit/appcache/appcache_storage_impl_unittest.cc
index 116ce47..87df2b0 100644
--- a/webkit/appcache/appcache_storage_impl_unittest.cc
+++ b/webkit/appcache/appcache_storage_impl_unittest.cc
@@ -31,6 +31,8 @@ const GURL kFallbackNamespace("http://blah/fallback_namespace/");
const GURL kFallbackNamespace2("http://blah/fallback_namespace/longer");
const GURL kFallbackTestUrl("http://blah/fallback_namespace/longer/test");
const GURL kOnlineNamespace("http://blah/online_namespace");
+const GURL kOnlineNamespaceWithinFallback(
+ "http://blah/fallback_namespace/online/");
// For the duration of this test case, we hijack the AppCacheThread API
// calls and implement them in terms of the io and db threads created here.
@@ -926,11 +928,19 @@ class AppCacheStorageImplTest : public testing::Test {
void FindMainResponseExclusions(bool drop_from_working_set) {
// Setup some preconditions. Create a complete cache with a
- // foreign entry and an online namespace.
+ // foreign entry, an online namespace, and a second online
+ // namespace nested within a fallback namespace.
MakeCacheAndGroup(kManifestUrl, 1, 1, true);
cache_->AddEntry(kEntryUrl,
AppCacheEntry(AppCacheEntry::EXPLICIT | AppCacheEntry::FOREIGN, 1));
cache_->online_whitelist_namespaces_.push_back(kOnlineNamespace);
+ cache_->AddEntry(kEntryUrl2, AppCacheEntry(AppCacheEntry::FALLBACK, 2));
+ cache_->fallback_namespaces_.push_back(
+ FallbackNamespace(kFallbackNamespace, kEntryUrl2));
+ cache_->online_whitelist_namespaces_.push_back(kOnlineNamespace);
+ cache_->online_whitelist_namespaces_.push_back(
+ kOnlineNamespaceWithinFallback);
+
AppCacheDatabase::EntryRecord entry_record;
entry_record.cache_id = 1;
entry_record.url = kEntryUrl;
@@ -941,6 +951,16 @@ class AppCacheStorageImplTest : public testing::Test {
whitelist_record.cache_id = 1;
whitelist_record.namespace_url = kOnlineNamespace;
EXPECT_TRUE(database()->InsertOnlineWhiteList(&whitelist_record));
+ AppCacheDatabase::FallbackNameSpaceRecord fallback_namespace_record;
+ fallback_namespace_record.cache_id = 1;
+ fallback_namespace_record.fallback_entry_url = kEntryUrl2;
+ fallback_namespace_record.namespace_url = kFallbackNamespace;
+ fallback_namespace_record.origin = kManifestUrl.GetOrigin();
+ EXPECT_TRUE(
+ database()->InsertFallbackNameSpace(&fallback_namespace_record));
+ whitelist_record.cache_id = 1;
+ whitelist_record.namespace_url = kOnlineNamespaceWithinFallback;
+ EXPECT_TRUE(database()->InsertOnlineWhiteList(&whitelist_record));
if (drop_from_working_set) {
cache_ = NULL;
group_ = NULL;
@@ -948,11 +968,12 @@ class AppCacheStorageImplTest : public testing::Test {
// We should not find anything for the foreign entry.
PushNextTask(NewRunnableMethod(
- this, &AppCacheStorageImplTest::Verify_NotFound, kEntryUrl, false));
+ this, &AppCacheStorageImplTest::Verify_ExclusionNotFound,
+ kEntryUrl, 1));
storage()->FindResponseForMainRequest(kEntryUrl, delegate());
}
- void Verify_NotFound(GURL expected_url, bool test_finished) {
+ void Verify_ExclusionNotFound(GURL expected_url, int phase) {
EXPECT_EQ(expected_url, delegate()->found_url_);
EXPECT_TRUE(delegate()->found_manifest_url_.is_empty());
EXPECT_FALSE(delegate()->found_blocked_by_policy_);
@@ -963,13 +984,24 @@ class AppCacheStorageImplTest : public testing::Test {
EXPECT_EQ(0, delegate()->found_entry_.types());
EXPECT_EQ(0, delegate()->found_fallback_entry_.types());
- if (!test_finished) {
+ if (phase == 1) {
// We should not find anything for the online namespace.
PushNextTask(NewRunnableMethod(this,
- &AppCacheStorageImplTest::Verify_NotFound, kOnlineNamespace, true));
+ &AppCacheStorageImplTest::Verify_ExclusionNotFound,
+ kOnlineNamespace, 2));
storage()->FindResponseForMainRequest(kOnlineNamespace, delegate());
return;
}
+ if (phase == 2) {
+ // We should not find anything for the online namespace nested within
+ // the fallback namespace.
+ PushNextTask(NewRunnableMethod(this,
+ &AppCacheStorageImplTest::Verify_ExclusionNotFound,
+ kOnlineNamespaceWithinFallback, 3));
+ storage()->FindResponseForMainRequest(
+ kOnlineNamespaceWithinFallback, delegate());
+ return;
+ }
TestFinished();
}