summaryrefslogtreecommitdiffstats
path: root/webkit/appcache
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/appcache')
-rw-r--r--webkit/appcache/appcache.cc21
-rw-r--r--webkit/appcache/appcache.h4
-rw-r--r--webkit/appcache/appcache_unittest.cc72
3 files changed, 81 insertions, 16 deletions
diff --git a/webkit/appcache/appcache.cc b/webkit/appcache/appcache.cc
index e5d197d..6f4e959 100644
--- a/webkit/appcache/appcache.cc
+++ b/webkit/appcache/appcache.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -152,11 +152,8 @@ void AppCache::InitializeWithDatabaseRecords(
std::sort(fallback_namespaces_.begin(), fallback_namespaces_.end(),
SortNamespacesByLength);
- if (!online_whitelist_all_) {
- for (size_t i = 0; i < whitelists.size(); ++i) {
- online_whitelist_namespaces_.push_back(whitelists.at(i).namespace_url);
- }
- }
+ for (size_t i = 0; i < whitelists.size(); ++i)
+ online_whitelist_namespaces_.push_back(whitelists.at(i).namespace_url);
}
void AppCache::ToDatabaseRecords(
@@ -209,13 +206,11 @@ void AppCache::ToDatabaseRecords(
record.target_url = fallback_namespaces_[i].target_url;
}
- if (!online_whitelist_all_) {
- for (size_t i = 0; i < online_whitelist_namespaces_.size(); ++i) {
- whitelists->push_back(AppCacheDatabase::OnlineWhiteListRecord());
- AppCacheDatabase::OnlineWhiteListRecord& record = whitelists->back();
- record.cache_id = cache_id_;
- record.namespace_url = online_whitelist_namespaces_[i];
- }
+ for (size_t i = 0; i < online_whitelist_namespaces_.size(); ++i) {
+ whitelists->push_back(AppCacheDatabase::OnlineWhiteListRecord());
+ AppCacheDatabase::OnlineWhiteListRecord& record = whitelists->back();
+ record.cache_id = cache_id_;
+ record.namespace_url = online_whitelist_namespaces_[i];
}
}
diff --git a/webkit/appcache/appcache.h b/webkit/appcache/appcache.h
index daf9874..b4905dc 100644
--- a/webkit/appcache/appcache.h
+++ b/webkit/appcache/appcache.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -176,7 +176,7 @@ class APPCACHE_EXPORT AppCache : public base::RefCounted<AppCache> {
AppCacheService* service_;
FRIEND_TEST_ALL_PREFIXES(AppCacheTest, InitializeWithManifest);
-
+ FRIEND_TEST_ALL_PREFIXES(AppCacheTest, ToFromDatabaseRecords);
DISALLOW_COPY_AND_ASSIGN(AppCache);
};
diff --git a/webkit/appcache/appcache_unittest.cc b/webkit/appcache/appcache_unittest.cc
index 2888984..a00d599 100644
--- a/webkit/appcache/appcache_unittest.cc
+++ b/webkit/appcache/appcache_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -323,5 +323,75 @@ TEST(AppCacheTest, FindResponseForRequest) {
EXPECT_FALSE(network_namespace);
}
+TEST(AppCacheTest, ToFromDatabaseRecords) {
+ // Setup a cache with some entries.
+ const int64 kCacheId = 1234;
+ const int64 kGroupId = 4321;
+ const GURL kManifestUrl("http://foo.com/manifest");
+ const GURL kInterceptUrl("http://foo.com/intercept.html");
+ const GURL kFallbackUrl("http://foo.com/fallback.html");
+ const std::string kData(
+ "CACHE MANIFEST\r"
+ "CHROMIUM-INTERCEPT:\r"
+ "/intercept return /intercept.html\r"
+ "FALLBACK:\r"
+ "/ /fallback.html\r"
+ "NETWORK:\r"
+ "/whitelist\r"
+ "*\r");
+ MockAppCacheService service;
+ scoped_refptr<AppCacheGroup> group =
+ new AppCacheGroup(&service, kManifestUrl, kGroupId);
+ scoped_refptr<AppCache> cache(new AppCache(&service, kCacheId));
+ Manifest manifest;
+ EXPECT_TRUE(
+ ParseManifest(kManifestUrl, kData.c_str(), kData.length(), manifest));
+ cache->InitializeWithManifest(&manifest);
+ cache->AddEntry(
+ kManifestUrl,
+ AppCacheEntry(AppCacheEntry::MANIFEST, 1, 1));
+ cache->AddEntry(
+ kInterceptUrl,
+ AppCacheEntry(AppCacheEntry::INTERCEPT, 3, 3));
+ cache->AddEntry(
+ kFallbackUrl,
+ AppCacheEntry(AppCacheEntry::FALLBACK, 2, 2));
+
+ // Get it to produce database records and verify them.
+ 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);
+ EXPECT_EQ(kCacheId, cache_record.cache_id);
+ EXPECT_EQ(kGroupId, cache_record.group_id);
+ EXPECT_TRUE(cache_record.online_wildcard);
+ EXPECT_EQ(1 + 2 + 3, cache_record.cache_size);
+ EXPECT_EQ(3u, entries.size());
+ EXPECT_EQ(1u, intercepts.size());
+ EXPECT_EQ(1u, fallbacks.size());
+ EXPECT_EQ(1u, whitelists.size());
+ cache = NULL;
+
+ // Create a new AppCache and populate it with those records and verify.
+ cache = new AppCache(&service, kCacheId);
+ cache->InitializeWithDatabaseRecords(
+ cache_record, entries, intercepts,
+ fallbacks, whitelists);
+ EXPECT_TRUE(cache->online_whitelist_all_);
+ EXPECT_EQ(3u, cache->entries().size());
+ EXPECT_TRUE(cache->GetEntry(kManifestUrl));
+ EXPECT_TRUE(cache->GetEntry(kInterceptUrl));
+ EXPECT_TRUE(cache->GetEntry(kFallbackUrl));
+ EXPECT_EQ(kInterceptUrl,
+ cache->GetInterceptEntryUrl(GURL("http://foo.com/intercept")));
+ EXPECT_EQ(kFallbackUrl,
+ cache->GetFallbackEntryUrl(GURL("http://foo.com/")));
+ EXPECT_EQ(1 + 2 + 3, cache->cache_size());
+}
+
} // namespace appacache