summaryrefslogtreecommitdiffstats
path: root/webkit/appcache/appcache_database_unittest.cc
diff options
context:
space:
mode:
authormichaeln@chromium.org <michaeln@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-01-21 02:39:40 +0000
committermichaeln@chromium.org <michaeln@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-01-21 02:39:40 +0000
commit9b7a0c551268395816959eb8df1c44086583824e (patch)
tree2be7bdf092e8776b0161b0eff83c0122626dc5bf /webkit/appcache/appcache_database_unittest.cc
parent6f526b9ac1ec6fb252d3cfe1f625a694d76f643f (diff)
downloadchromium_src-9b7a0c551268395816959eb8df1c44086583824e.zip
chromium_src-9b7a0c551268395816959eb8df1c44086583824e.tar.gz
chromium_src-9b7a0c551268395816959eb8df1c44086583824e.tar.bz2
Enforce a hard coded 5MB per origin quota for appcache storage.
TEST=yes BUG=none Review URL: http://codereview.chromium.org/554008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36723 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/appcache/appcache_database_unittest.cc')
-rw-r--r--webkit/appcache/appcache_database_unittest.cc68
1 files changed, 68 insertions, 0 deletions
diff --git a/webkit/appcache/appcache_database_unittest.cc b/webkit/appcache/appcache_database_unittest.cc
index b2a35c5..763cd9a 100644
--- a/webkit/appcache/appcache_database_unittest.cc
+++ b/webkit/appcache/appcache_database_unittest.cc
@@ -517,4 +517,72 @@ TEST(AppCacheDatabaseTest, DeletableResponseIds) {
EXPECT_EQ(i + 5, ids[i]);
}
+TEST(AppCacheDatabaseTest, Quotas) {
+ const GURL kManifestUrl("http://blah/manifest");
+ const GURL kManifestUrl2("http://blah/manifest2");
+ const GURL kOrigin(kManifestUrl.GetOrigin());
+ const GURL kOtherOriginManifestUrl("http://other/manifest");
+ const GURL kOtherOrigin(kOtherOriginManifestUrl.GetOrigin());
+
+ const FilePath kEmptyPath;
+ AppCacheDatabase db(kEmptyPath);
+ EXPECT_TRUE(db.LazyOpen(true));
+
+ scoped_refptr<TestErrorDelegate> error_delegate(new TestErrorDelegate);
+ db.db_->set_error_delegate(error_delegate);
+
+ std::vector<AppCacheDatabase::CacheRecord> cache_records;
+ EXPECT_EQ(db.GetDefaultOriginQuota(), db.GetOriginQuota(kOrigin));
+ EXPECT_EQ(0, db.GetOriginUsage(kOrigin));
+ EXPECT_TRUE(db.FindCachesForOrigin(kOrigin, &cache_records));
+ EXPECT_TRUE(cache_records.empty());
+
+ AppCacheDatabase::GroupRecord group_record;
+ group_record.group_id = 1;
+ group_record.manifest_url = kManifestUrl;
+ group_record.origin = kOrigin;
+ EXPECT_TRUE(db.InsertGroup(&group_record));
+ AppCacheDatabase::CacheRecord cache_record;
+ cache_record.cache_id = 1;
+ cache_record.group_id = 1;
+ cache_record.online_wildcard = true;
+ cache_record.update_time = kZeroTimeTicks;
+ cache_record.cache_size = 100;
+ EXPECT_TRUE(db.InsertCache(&cache_record));
+
+ EXPECT_EQ(100, db.GetOriginUsage(kOrigin));
+
+ group_record.group_id = 2;
+ group_record.manifest_url = kManifestUrl2;
+ group_record.origin = kOrigin;
+ EXPECT_TRUE(db.InsertGroup(&group_record));
+ cache_record.cache_id = 2;
+ cache_record.group_id = 2;
+ cache_record.online_wildcard = true;
+ cache_record.update_time = kZeroTimeTicks;
+ cache_record.cache_size = 1000;
+ EXPECT_TRUE(db.InsertCache(&cache_record));
+
+ EXPECT_EQ(1100, db.GetOriginUsage(kOrigin));
+
+ group_record.group_id = 3;
+ group_record.manifest_url = kOtherOriginManifestUrl;
+ group_record.origin = kOtherOrigin;
+ EXPECT_TRUE(db.InsertGroup(&group_record));
+ cache_record.cache_id = 3;
+ cache_record.group_id = 3;
+ cache_record.online_wildcard = true;
+ cache_record.update_time = kZeroTimeTicks;
+ cache_record.cache_size = 5000;
+ EXPECT_TRUE(db.InsertCache(&cache_record));
+
+ EXPECT_EQ(5000, db.GetOriginUsage(kOtherOrigin));
+
+ EXPECT_TRUE(db.FindCachesForOrigin(kOrigin, &cache_records));
+ EXPECT_EQ(2U, cache_records.size());
+ cache_records.clear();
+ EXPECT_TRUE(db.FindCachesForOrigin(kOtherOrigin, &cache_records));
+ EXPECT_EQ(1U, cache_records.size());
+}
+
} // namespace appcache