| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "webkit/appcache/mock_appcache_storage.h" | 5 #include "webkit/appcache/mock_appcache_storage.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
| 9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
| 10 #include "base/stl_util-inl.h" | 10 #include "base/stl_util-inl.h" |
| 11 #include "webkit/appcache/appcache.h" | 11 #include "webkit/appcache/appcache.h" |
| 12 #include "webkit/appcache/appcache_entry.h" | 12 #include "webkit/appcache/appcache_entry.h" |
| 13 #include "webkit/appcache/appcache_group.h" | 13 #include "webkit/appcache/appcache_group.h" |
| 14 #include "webkit/appcache/appcache_response.h" | 14 #include "webkit/appcache/appcache_response.h" |
| 15 #include "webkit/appcache/appcache_service.h" |
| 15 | 16 |
| 16 // This is a quick and easy 'mock' implementation of the storage interface | 17 // This is a quick and easy 'mock' implementation of the storage interface |
| 17 // that doesn't put anything to disk. | 18 // that doesn't put anything to disk. |
| 18 // | 19 // |
| 19 // We simply add an extra reference to objects when they're put in storage, | 20 // We simply add an extra reference to objects when they're put in storage, |
| 20 // and remove the extra reference when they are removed from storage. | 21 // and remove the extra reference when they are removed from storage. |
| 21 // Responses are never really removed from the in-memory disk cache. | 22 // Responses are never really removed from the in-memory disk cache. |
| 22 // Delegate callbacks are made asyncly to appropiately mimic what will | 23 // Delegate callbacks are made asyncly to appropiately mimic what will |
| 23 // happen with a real disk-backed storage impl that involves IO on a | 24 // happen with a real disk-backed storage impl that involves IO on a |
| 24 // background thread. | 25 // background thread. |
| (...skipping 11 matching lines...) Expand all Loading... |
| 36 simulated_found_network_namespace_(false) { | 37 simulated_found_network_namespace_(false) { |
| 37 last_cache_id_ = 0; | 38 last_cache_id_ = 0; |
| 38 last_group_id_ = 0; | 39 last_group_id_ = 0; |
| 39 last_response_id_ = 0; | 40 last_response_id_ = 0; |
| 40 } | 41 } |
| 41 | 42 |
| 42 MockAppCacheStorage::~MockAppCacheStorage() { | 43 MockAppCacheStorage::~MockAppCacheStorage() { |
| 43 STLDeleteElements(&pending_tasks_); | 44 STLDeleteElements(&pending_tasks_); |
| 44 } | 45 } |
| 45 | 46 |
| 47 void MockAppCacheStorage::GetAllInfo(Delegate* delegate) { |
| 48 ScheduleTask(method_factory_.NewRunnableMethod( |
| 49 &MockAppCacheStorage::ProcessGetAllInfo, |
| 50 make_scoped_refptr(GetOrCreateDelegateReference(delegate)))); |
| 51 } |
| 52 |
| 46 void MockAppCacheStorage::LoadCache(int64 id, Delegate* delegate) { | 53 void MockAppCacheStorage::LoadCache(int64 id, Delegate* delegate) { |
| 47 DCHECK(delegate); | 54 DCHECK(delegate); |
| 48 AppCache* cache = working_set_.GetCache(id); | 55 AppCache* cache = working_set_.GetCache(id); |
| 49 if (ShouldCacheLoadAppearAsync(cache)) { | 56 if (ShouldCacheLoadAppearAsync(cache)) { |
| 50 ScheduleTask(method_factory_.NewRunnableMethod( | 57 ScheduleTask(method_factory_.NewRunnableMethod( |
| 51 &MockAppCacheStorage::ProcessLoadCache, | 58 &MockAppCacheStorage::ProcessLoadCache, |
| 52 id, make_scoped_refptr(GetOrCreateDelegateReference(delegate)))); | 59 id, make_scoped_refptr(GetOrCreateDelegateReference(delegate)))); |
| 53 return; | 60 return; |
| 54 } | 61 } |
| 55 ProcessLoadCache(id, GetOrCreateDelegateReference(delegate)); | 62 ProcessLoadCache(id, GetOrCreateDelegateReference(delegate)); |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 const GURL& manifest_url, const std::vector<int64>& response_ids) { | 164 const GURL& manifest_url, const std::vector<int64>& response_ids) { |
| 158 // We don't bother with actually removing responses from the disk-cache, | 165 // We don't bother with actually removing responses from the disk-cache, |
| 159 // just keep track of which ids have been doomed or deleted | 166 // just keep track of which ids have been doomed or deleted |
| 160 std::vector<int64>::const_iterator it = response_ids.begin(); | 167 std::vector<int64>::const_iterator it = response_ids.begin(); |
| 161 while (it != response_ids.end()) { | 168 while (it != response_ids.end()) { |
| 162 doomed_response_ids_.insert(*it); | 169 doomed_response_ids_.insert(*it); |
| 163 ++it; | 170 ++it; |
| 164 } | 171 } |
| 165 } | 172 } |
| 166 | 173 |
| 174 void MockAppCacheStorage::ProcessGetAllInfo( |
| 175 scoped_refptr<DelegateReference> delegate_ref) { |
| 176 if (delegate_ref->delegate) |
| 177 delegate_ref->delegate->OnAllInfo(simulated_appcache_info_); |
| 178 } |
| 179 |
| 167 void MockAppCacheStorage::ProcessLoadCache( | 180 void MockAppCacheStorage::ProcessLoadCache( |
| 168 int64 id, scoped_refptr<DelegateReference> delegate_ref) { | 181 int64 id, scoped_refptr<DelegateReference> delegate_ref) { |
| 169 AppCache* cache = working_set_.GetCache(id); | 182 AppCache* cache = working_set_.GetCache(id); |
| 170 if (delegate_ref->delegate) | 183 if (delegate_ref->delegate) |
| 171 delegate_ref->delegate->OnCacheLoaded(cache, id); | 184 delegate_ref->delegate->OnCacheLoaded(cache, id); |
| 172 } | 185 } |
| 173 | 186 |
| 174 void MockAppCacheStorage::ProcessLoadOrCreateGroup( | 187 void MockAppCacheStorage::ProcessLoadOrCreateGroup( |
| 175 const GURL& manifest_url, scoped_refptr<DelegateReference> delegate_ref) { | 188 const GURL& manifest_url, scoped_refptr<DelegateReference> delegate_ref) { |
| 176 scoped_refptr<AppCacheGroup> group(working_set_.GetGroup(manifest_url)); | 189 scoped_refptr<AppCacheGroup> group(working_set_.GetGroup(manifest_url)); |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 468 bool MockAppCacheStorage::ShouldCacheLoadAppearAsync(const AppCache* cache) { | 481 bool MockAppCacheStorage::ShouldCacheLoadAppearAsync(const AppCache* cache) { |
| 469 if (!cache) | 482 if (!cache) |
| 470 return true; | 483 return true; |
| 471 | 484 |
| 472 // If the 'stored' ref is the only ref, real storage will have to load from | 485 // If the 'stored' ref is the only ref, real storage will have to load from |
| 473 // the database. | 486 // the database. |
| 474 return IsCacheStored(cache) && cache->HasOneRef(); | 487 return IsCacheStored(cache) && cache->HasOneRef(); |
| 475 } | 488 } |
| 476 | 489 |
| 477 } // namespace appcache | 490 } // namespace appcache |
| OLD | NEW |