Index: webkit/appcache/appcache_storage_impl_unittest.cc |
=================================================================== |
--- webkit/appcache/appcache_storage_impl_unittest.cc (revision 113546) |
+++ 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 |
jennb
2011/12/13 00:33:09
extra space in sentence
|
+ 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); |