| Index: webkit/appcache/appcache_storage_impl_unittest.cc
|
| ===================================================================
|
| --- webkit/appcache/appcache_storage_impl_unittest.cc (revision 113279)
|
| +++ webkit/appcache/appcache_storage_impl_unittest.cc (working copy)
|
| @@ -36,6 +36,9 @@
|
| const GURL kOnlineNamespace("http://blah/online_namespace");
|
| const GURL kOnlineNamespaceWithinFallback(
|
| "http://blah/fallback_namespace/online/");
|
| +const GURL kInterceptNamespace("http://blah/intercept_namespace/");
|
| +const GURL kInterceptNamespace2("http://blah/intercept_namespace/longer/");
|
| +const GURL kInterceptTestUrl("http://blah/intercept_namespace/longer/test");
|
| const GURL kOrigin(kManifestUrl.GetOrigin());
|
|
|
| const int kManifestEntryIdOffset = 100;
|
| @@ -668,13 +671,12 @@
|
| entry_record.url = kEntryUrl;
|
| EXPECT_TRUE(database()->InsertEntry(&entry_record));
|
|
|
| - AppCacheDatabase::FallbackNameSpaceRecord fallback_namespace_record;
|
| + AppCacheDatabase::NamespaceRecord fallback_namespace_record;
|
| fallback_namespace_record.cache_id = 1;
|
| - fallback_namespace_record.fallback_entry_url = kEntryUrl;
|
| + fallback_namespace_record.target_url = kEntryUrl;
|
| fallback_namespace_record.namespace_url = kFallbackNamespace;
|
| fallback_namespace_record.origin = kManifestUrl.GetOrigin();
|
| - EXPECT_TRUE(
|
| - database()->InsertFallbackNameSpace(&fallback_namespace_record));
|
| + EXPECT_TRUE(database()->InsertNamespace(&fallback_namespace_record));
|
|
|
| AppCacheDatabase::OnlineWhiteListRecord online_whitelist_record;
|
| online_whitelist_record.cache_id = 1;
|
| @@ -702,8 +704,10 @@
|
| std::vector<AppCacheDatabase::EntryRecord> entry_records;
|
| database()->FindEntriesForCache(1, &entry_records);
|
| EXPECT_TRUE(entry_records.empty());
|
| - std::vector<AppCacheDatabase::FallbackNameSpaceRecord> fallback_records;
|
| - database()->FindFallbackNameSpacesForCache(1, &fallback_records);
|
| + std::vector<AppCacheDatabase::NamespaceRecord> intercept_records;
|
| + std::vector<AppCacheDatabase::NamespaceRecord> fallback_records;
|
| + database()->FindNamespacesForCache(
|
| + 1, &intercept_records, &fallback_records);
|
| EXPECT_TRUE(fallback_records.empty());
|
| std::vector<AppCacheDatabase::OnlineWhiteListRecord> whitelist_records;
|
| database()->FindOnlineWhiteListForCache(1, &whitelist_records);
|
| @@ -889,15 +893,16 @@
|
| cache_->AddEntry(kEntryUrl, AppCacheEntry(AppCacheEntry::FALLBACK, 1));
|
| cache_->AddEntry(kEntryUrl2, AppCacheEntry(AppCacheEntry::FALLBACK, 2));
|
| cache_->fallback_namespaces_.push_back(
|
| - FallbackNamespace(kFallbackNamespace2, kEntryUrl2));
|
| + Namespace(FALLBACK_NAMESPACE, kFallbackNamespace2, kEntryUrl2));
|
| cache_->fallback_namespaces_.push_back(
|
| - FallbackNamespace(kFallbackNamespace, kEntryUrl));
|
| + Namespace(FALLBACK_NAMESPACE, kFallbackNamespace, kEntryUrl));
|
| AppCacheDatabase::CacheRecord cache_record;
|
| std::vector<AppCacheDatabase::EntryRecord> entries;
|
| - std::vector<AppCacheDatabase::FallbackNameSpaceRecord> fallbacks;
|
| + std::vector<AppCacheDatabase::NamespaceRecord> intercepts;
|
| + std::vector<AppCacheDatabase::NamespaceRecord> fallbacks;
|
| std::vector<AppCacheDatabase::OnlineWhiteListRecord> whitelists;
|
| cache_->ToDatabaseRecords(group_,
|
| - &cache_record, &entries, &fallbacks, &whitelists);
|
| + &cache_record, &entries, &intercepts, &fallbacks, &whitelists);
|
|
|
| std::vector<AppCacheDatabase::EntryRecord>::const_iterator iter =
|
| entries.begin();
|
| @@ -908,7 +913,7 @@
|
| ++iter;
|
| }
|
|
|
| - EXPECT_TRUE(database()->InsertFallbackNameSpaceRecords(fallbacks));
|
| + EXPECT_TRUE(database()->InsertNamespaceRecords(fallbacks));
|
| EXPECT_TRUE(database()->InsertOnlineWhiteListRecords(whitelists));
|
| if (drop_from_working_set) {
|
| EXPECT_TRUE(cache_->HasOneRef());
|
| @@ -935,6 +940,73 @@
|
| TestFinished();
|
| }
|
|
|
| + // BasicFindMainInterceptResponse -------------------------------
|
| +
|
| + void BasicFindMainInterceptResponseInDatabase() {
|
| + BasicFindMainInterceptResponse(true);
|
| + }
|
| +
|
| + void BasicFindMainInterceptResponseInWorkingSet() {
|
| + BasicFindMainInterceptResponse(false);
|
| + }
|
| +
|
| + void BasicFindMainInterceptResponse(bool drop_from_working_set) {
|
| + PushNextTask(base::Bind(
|
| + &AppCacheStorageImplTest::Verify_BasicFindMainInterceptResponse,
|
| + base::Unretained(this)));
|
| +
|
| + // Setup some preconditions. Create a complete cache with an
|
| + // intercept namespace and entry.
|
| + MakeCacheAndGroup(kManifestUrl, 2, 1, true);
|
| + cache_->AddEntry(kEntryUrl, AppCacheEntry(AppCacheEntry::INTERCEPT, 1));
|
| + cache_->AddEntry(kEntryUrl2, AppCacheEntry(AppCacheEntry::INTERCEPT, 2));
|
| + cache_->intercept_namespaces_.push_back(
|
| + Namespace(INTERCEPT_NAMESPACE, kInterceptNamespace2, kEntryUrl2));
|
| + cache_->intercept_namespaces_.push_back(
|
| + Namespace(INTERCEPT_NAMESPACE, kInterceptNamespace, kEntryUrl));
|
| + AppCacheDatabase::CacheRecord cache_record;
|
| + std::vector<AppCacheDatabase::EntryRecord> entries;
|
| + std::vector<AppCacheDatabase::NamespaceRecord> intercepts;
|
| + std::vector<AppCacheDatabase::NamespaceRecord> fallbacks;
|
| + std::vector<AppCacheDatabase::OnlineWhiteListRecord> whitelists;
|
| + cache_->ToDatabaseRecords(group_,
|
| + &cache_record, &entries, &intercepts, &fallbacks, &whitelists);
|
| +
|
| + std::vector<AppCacheDatabase::EntryRecord>::const_iterator iter =
|
| + entries.begin();
|
| + while (iter != entries.end()) {
|
| + // MakeCacheAndGroup has inserted the default entry record already
|
| + if (iter->url != kDefaultEntryUrl)
|
| + EXPECT_TRUE(database()->InsertEntry(&(*iter)));
|
| + ++iter;
|
| + }
|
| +
|
| + EXPECT_TRUE(database()->InsertNamespaceRecords(intercepts));
|
| + EXPECT_TRUE(database()->InsertOnlineWhiteListRecords(whitelists));
|
| + if (drop_from_working_set) {
|
| + EXPECT_TRUE(cache_->HasOneRef());
|
| + cache_ = NULL;
|
| + EXPECT_TRUE(group_->HasOneRef());
|
| + group_ = NULL;
|
| + }
|
| +
|
| + // Conduct the test. The test url is in both intercept namespaces,
|
| + // but should match the longer of the two.
|
| + storage()->FindResponseForMainRequest(
|
| + kInterceptTestUrl, GURL(), delegate());
|
| + EXPECT_NE(kInterceptTestUrl, delegate()->found_url_);
|
| + }
|
| +
|
| + void Verify_BasicFindMainInterceptResponse() {
|
| + EXPECT_EQ(kInterceptTestUrl, delegate()->found_url_);
|
| + EXPECT_EQ(kManifestUrl, delegate()->found_manifest_url_);
|
| + EXPECT_EQ(1, delegate()->found_cache_id_);
|
| + EXPECT_EQ(2, delegate()->found_group_id_);
|
| + EXPECT_EQ(2, delegate()->found_entry_.response_id());
|
| + EXPECT_TRUE(delegate()->found_entry_.IsIntercept());
|
| + EXPECT_FALSE(delegate()->found_fallback_entry_.has_response_id());
|
| + TestFinished();
|
| + }
|
| // FindMainResponseWithMultipleHits -------------------------------
|
|
|
| void FindMainResponseWithMultipleHits() {
|
| @@ -988,15 +1060,14 @@
|
| cache_->AddEntry(
|
| entry_record.url,
|
| AppCacheEntry(entry_record.flags, entry_record.response_id));
|
| - AppCacheDatabase::FallbackNameSpaceRecord fallback_namespace_record;
|
| + AppCacheDatabase::NamespaceRecord fallback_namespace_record;
|
| fallback_namespace_record.cache_id = id;
|
| - fallback_namespace_record.fallback_entry_url = entry_record.url;
|
| + fallback_namespace_record.target_url = entry_record.url;
|
| fallback_namespace_record.namespace_url = kFallbackNamespace;
|
| fallback_namespace_record.origin = manifest_url.GetOrigin();
|
| - EXPECT_TRUE(
|
| - database()->InsertFallbackNameSpace(&fallback_namespace_record));
|
| + EXPECT_TRUE(database()->InsertNamespace(&fallback_namespace_record));
|
| cache_->fallback_namespaces_.push_back(
|
| - FallbackNamespace(kFallbackNamespace, kEntryUrl2));
|
| + Namespace(FALLBACK_NAMESPACE, kFallbackNamespace, kEntryUrl2));
|
| }
|
|
|
| void Verify_FindMainResponseWithMultipleHits() {
|
| @@ -1109,7 +1180,7 @@
|
| cache_->online_whitelist_namespaces_.push_back(kOnlineNamespace);
|
| cache_->AddEntry(kEntryUrl2, AppCacheEntry(AppCacheEntry::FALLBACK, 2));
|
| cache_->fallback_namespaces_.push_back(
|
| - FallbackNamespace(kFallbackNamespace, kEntryUrl2));
|
| + Namespace(FALLBACK_NAMESPACE, kFallbackNamespace, kEntryUrl2));
|
| cache_->online_whitelist_namespaces_.push_back(kOnlineNamespace);
|
| cache_->online_whitelist_namespaces_.push_back(
|
| kOnlineNamespaceWithinFallback);
|
| @@ -1124,13 +1195,12 @@
|
| whitelist_record.cache_id = 1;
|
| whitelist_record.namespace_url = kOnlineNamespace;
|
| EXPECT_TRUE(database()->InsertOnlineWhiteList(&whitelist_record));
|
| - AppCacheDatabase::FallbackNameSpaceRecord fallback_namespace_record;
|
| + AppCacheDatabase::NamespaceRecord fallback_namespace_record;
|
| fallback_namespace_record.cache_id = 1;
|
| - fallback_namespace_record.fallback_entry_url = kEntryUrl2;
|
| + fallback_namespace_record.target_url = kEntryUrl2;
|
| fallback_namespace_record.namespace_url = kFallbackNamespace;
|
| fallback_namespace_record.origin = kManifestUrl.GetOrigin();
|
| - EXPECT_TRUE(
|
| - database()->InsertFallbackNameSpace(&fallback_namespace_record));
|
| + EXPECT_TRUE(database()->InsertNamespace(&fallback_namespace_record));
|
| whitelist_record.cache_id = 1;
|
| whitelist_record.namespace_url = kOnlineNamespaceWithinFallback;
|
| EXPECT_TRUE(database()->InsertOnlineWhiteList(&whitelist_record));
|
| @@ -1320,6 +1390,16 @@
|
| &AppCacheStorageImplTest::BasicFindMainFallbackResponseInWorkingSet);
|
| }
|
|
|
| +TEST_F(AppCacheStorageImplTest, BasicFindMainInterceptResponseInDatabase) {
|
| + RunTestOnIOThread(
|
| + &AppCacheStorageImplTest::BasicFindMainInterceptResponseInDatabase);
|
| +}
|
| +
|
| +TEST_F(AppCacheStorageImplTest, BasicFindMainInterceptResponseInWorkingSet) {
|
| + RunTestOnIOThread(
|
| + &AppCacheStorageImplTest::BasicFindMainInterceptResponseInWorkingSet);
|
| +}
|
| +
|
| TEST_F(AppCacheStorageImplTest, FindMainResponseWithMultipleHits) {
|
| RunTestOnIOThread(
|
| &AppCacheStorageImplTest::FindMainResponseWithMultipleHits);
|
|
|