| 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
|
|
|