Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(233)

Unified Diff: webkit/appcache/mock_appcache_storage.h

Issue 300043: MockAppCacheStorage implemenation (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webkit/appcache/mock_appcache_storage.h
===================================================================
--- webkit/appcache/mock_appcache_storage.h (revision 29670)
+++ webkit/appcache/mock_appcache_storage.h (working copy)
@@ -5,10 +5,12 @@
#ifndef WEBKIT_APPCACHE_MOCK_APPCACHE_STORAGE_H_
#define WEBKIT_APPCACHE_MOCK_APPCACHE_STORAGE_H_
+#include <deque>
#include <map>
#include "base/hash_tables.h"
#include "base/scoped_ptr.h"
+#include "base/task.h"
#include "net/disk_cache/disk_cache.h"
#include "webkit/appcache/appcache.h"
#include "webkit/appcache/appcache_group.h"
@@ -23,13 +25,15 @@
class MockAppCacheStorage : public AppCacheStorage {
public:
explicit MockAppCacheStorage(AppCacheService* service);
+ ~MockAppCacheStorage();
+
virtual void LoadCache(int64 id, Delegate* delegate);
virtual void LoadOrCreateGroup(const GURL& manifest_url, Delegate* delegate);
virtual void StoreGroupAndNewestCache(
AppCacheGroup* group, Delegate* delegate);
virtual void FindResponseForMainRequest(const GURL& url, Delegate* delegate);
virtual void MarkEntryAsForeign(const GURL& entry_url, int64 cache_id);
- virtual void MarkGroupAsObsolete(AppCacheGroup* group, Delegate* delegate);
+ virtual void MakeGroupObsolete(AppCacheGroup* group, Delegate* delegate);
virtual AppCacheResponseReader* CreateResponseReader(
const GURL& manifest_url, int64 response_id);
virtual AppCacheResponseWriter* CreateResponseWriter(const GURL& origin);
@@ -39,21 +43,41 @@
private:
typedef base::hash_map<int64, scoped_refptr<AppCache> > StoredCacheMap;
typedef std::map<GURL, scoped_refptr<AppCacheGroup> > StoredGroupMap;
+ typedef std::set<int64> DoomedResponseIds;
+ void ProcessLoadCache(
+ int64 id, scoped_refptr<DelegateReference> delegate_ref);
+ void ProcessLoadOrCreateGroup(
+ const GURL& manifest_url, scoped_refptr<DelegateReference> delegate_ref);
+ void ProcessStoreGroupAndNewestCache(
+ scoped_refptr<AppCacheGroup> group, scoped_refptr<AppCache> newest_cache,
+ scoped_refptr<DelegateReference> delegate_ref);
+ void ProcessMakeGroupObsolete(
+ scoped_refptr<AppCacheGroup> group,
+ scoped_refptr<DelegateReference> delegate_ref);
+ void ProcessFindResponseForMainRequest(
+ const GURL& url, scoped_refptr<DelegateReference> delegate_ref);
+
+ void ScheduleTask(Task* task);
+ void RunOnePendingTask();
+
void AddStoredCache(AppCache* cache);
void RemoveStoredCache(AppCache* cache);
- AppCache* GetStoredCache(int64 id) {
- StoredCacheMap::iterator it = stored_caches_.find(id);
- return (it != stored_caches_.end()) ? it->second : NULL;
+ void RemoveStoredCaches(const AppCacheGroup::Caches& caches);
+ bool IsCacheStored(const AppCache* cache) {
+ return stored_caches_.find(cache->cache_id()) != stored_caches_.end();
}
void AddStoredGroup(AppCacheGroup* group);
void RemoveStoredGroup(AppCacheGroup* group);
- AppCacheGroup* GetStoredGroup(const GURL& manifest_url) {
- StoredGroupMap::iterator it = stored_groups_.find(manifest_url);
- return (it != stored_groups_.end()) ? it->second : NULL;
- }
+ // These helpers determine when certain operations should complete
+ // asynchronously vs synchronously to faithfully mimic, or mock,
+ // the behavior of the real implemenation of the AppCacheStorage
+ // interface.
+ bool ShouldGroupLoadAppearAsync(const AppCacheGroup* group);
+ bool ShouldCacheLoadAppearAsync(const AppCache* cache);
+
// Lazily constructed in-memory disk cache.
disk_cache::Backend* disk_cache() {
if (!disk_cache_.get()) {
@@ -65,7 +89,18 @@
StoredCacheMap stored_caches_;
StoredGroupMap stored_groups_;
+ DoomedResponseIds doomed_response_ids_;
scoped_ptr<disk_cache::Backend> disk_cache_;
+ std::deque<Task*> pending_tasks_;
+ ScopedRunnableMethodFactory<MockAppCacheStorage> method_factory_;
+
+ FRIEND_TEST(MockAppCacheStorageTest, CreateGroup);
+ FRIEND_TEST(MockAppCacheStorageTest, LoadCache_FarHit);
+ FRIEND_TEST(MockAppCacheStorageTest, LoadGroupAndCache_FarHit);
+ FRIEND_TEST(MockAppCacheStorageTest, MakeGroupObsolete);
+ FRIEND_TEST(MockAppCacheStorageTest, StoreNewGroup);
+ FRIEND_TEST(MockAppCacheStorageTest, StoreExistingGroup);
+ DISALLOW_COPY_AND_ASSIGN(MockAppCacheStorage);
};
} // namespace appcache

Powered by Google App Engine
This is Rietveld 408576698