summaryrefslogtreecommitdiffstats
path: root/webkit/appcache
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/appcache')
-rw-r--r--webkit/appcache/appcache_response.h4
-rw-r--r--webkit/appcache/appcache_storage_unittest.cc30
-rw-r--r--webkit/appcache/appcache_working_set.cc11
3 files changed, 43 insertions, 2 deletions
diff --git a/webkit/appcache/appcache_response.h b/webkit/appcache/appcache_response.h
index c791a01..c3a08e1 100644
--- a/webkit/appcache/appcache_response.h
+++ b/webkit/appcache/appcache_response.h
@@ -9,6 +9,7 @@
#include "base/ref_counted.h"
#include "net/base/completion_callback.h"
#include "net/http/http_response_info.h"
+#include "webkit/appcache/appcache_interfaces.h"
#include "webkit/appcache/appcache_service.h"
#include "webkit/appcache/appcache_storage.h"
@@ -19,14 +20,13 @@ namespace disk_cache {
class Backend;
};
-
namespace appcache {
// Response info for a particular response id. Instances are tracked in
// the working set.
class AppCacheResponseInfo
: public base::RefCounted<AppCacheResponseInfo> {
-
+ public:
// AppCacheResponseInfo takes ownership of the http_info.
AppCacheResponseInfo(AppCacheService* service, int64 response_id,
net::HttpResponseInfo* http_info)
diff --git a/webkit/appcache/appcache_storage_unittest.cc b/webkit/appcache/appcache_storage_unittest.cc
index f5f9e06..6e06265 100644
--- a/webkit/appcache/appcache_storage_unittest.cc
+++ b/webkit/appcache/appcache_storage_unittest.cc
@@ -6,6 +6,7 @@
#include "webkit/appcache/appcache.h"
#include "webkit/appcache/appcache_group.h"
#include "webkit/appcache/appcache_storage.h"
+#include "webkit/appcache/appcache_response.h"
#include "webkit/appcache/mock_appcache_service.h"
namespace appcache {
@@ -16,8 +17,14 @@ class AppCacheStorageTest : public testing::Test {
TEST(AppCacheStorageTest, AddRemoveCache) {
MockAppCacheService service;
scoped_refptr<AppCache> cache = new AppCache(&service, 111);
+
+ EXPECT_EQ(cache.get(),
+ service.storage()->working_set()->GetCache(111));
+
service.storage()->working_set()->RemoveCache(cache);
+ EXPECT_TRUE(!service.storage()->working_set()->GetCache(111));
+
// Removing non-existing cache from service should not fail.
MockAppCacheService dummy;
dummy.storage()->working_set()->RemoveCache(cache);
@@ -27,11 +34,34 @@ TEST(AppCacheStorageTest, AddRemoveGroup) {
MockAppCacheService service;
scoped_refptr<AppCacheGroup> group =
new AppCacheGroup(&service, GURL::EmptyGURL());
+
+ EXPECT_EQ(group.get(),
+ service.storage()->working_set()->GetGroup(GURL::EmptyGURL()));
+
service.storage()->working_set()->RemoveGroup(group);
+ EXPECT_TRUE(!service.storage()->working_set()->GetGroup(GURL::EmptyGURL()));
+
// Removing non-existing group from service should not fail.
MockAppCacheService dummy;
dummy.storage()->working_set()->RemoveGroup(group);
}
+TEST(AppCacheStorageTest, AddRemoveResponseInfo) {
+ MockAppCacheService service;
+ scoped_refptr<AppCacheResponseInfo> info =
+ new AppCacheResponseInfo(&service, 111, new net::HttpResponseInfo);
+
+ EXPECT_EQ(info.get(),
+ service.storage()->working_set()->GetResponseInfo(111));
+
+ service.storage()->working_set()->RemoveResponseInfo(info);
+
+ EXPECT_TRUE(!service.storage()->working_set()->GetResponseInfo(111));
+
+ // Removing non-existing info from service should not fail.
+ MockAppCacheService dummy;
+ dummy.storage()->working_set()->RemoveResponseInfo(info);
+}
+
} // namespace appcache
diff --git a/webkit/appcache/appcache_working_set.cc b/webkit/appcache/appcache_working_set.cc
index a5b544f..9b67942 100644
--- a/webkit/appcache/appcache_working_set.cc
+++ b/webkit/appcache/appcache_working_set.cc
@@ -7,6 +7,7 @@
#include "base/logging.h"
#include "webkit/appcache/appcache.h"
#include "webkit/appcache/appcache_group.h"
+#include "webkit/appcache/appcache_response.h"
namespace appcache {
@@ -35,4 +36,14 @@ void AppCacheWorkingSet::RemoveGroup(AppCacheGroup* group) {
groups_.erase(group->manifest_url());
}
+void AppCacheWorkingSet::AddResponseInfo(AppCacheResponseInfo* info) {
+ int64 response_id = info->response_id();
+ DCHECK(response_infos_.find(response_id) == response_infos_.end());
+ response_infos_.insert(ResponseInfoMap::value_type(response_id, info));
+}
+
+void AppCacheWorkingSet::RemoveResponseInfo(AppCacheResponseInfo* info) {
+ response_infos_.erase(info->response_id());
+}
+
} // namespace