Chromium Code Reviews| Index: content/browser/service_worker/service_worker_cache_storage.cc |
| diff --git a/content/browser/service_worker/service_worker_cache_storage.cc b/content/browser/service_worker/service_worker_cache_storage.cc |
| index 0b17ae3673887f098b1ef17b94977540f7d0616d..4c59a0eed1fb4d3854cff8c267db425b0349f22f 100644 |
| --- a/content/browser/service_worker/service_worker_cache_storage.cc |
| +++ b/content/browser/service_worker/service_worker_cache_storage.cc |
| @@ -57,7 +57,7 @@ class ServiceWorkerCacheStorage::CacheLoader { |
| const BoolCallback& callback) = 0; |
| // Writes the cache names (and sizes) to disk if applicable. |
| - virtual void WriteIndex(const CacheMap& caches, |
| + virtual void WriteIndex(const ServiceWorkerCacheStorage::Strings& cache_names, |
| const BoolCallback& callback) = 0; |
| // Loads the cache names from disk if applicable. |
| @@ -104,7 +104,7 @@ class ServiceWorkerCacheStorage::MemoryLoader |
| callback.Run(true); |
| } |
| - virtual void WriteIndex(const CacheMap& caches, |
| + virtual void WriteIndex(const ServiceWorkerCacheStorage::Strings& cache_names, |
| const BoolCallback& callback) OVERRIDE { |
| callback.Run(false); |
| } |
| @@ -208,7 +208,7 @@ class ServiceWorkerCacheStorage::SimpleCacheLoader |
| original_loop->PostTask(FROM_HERE, base::Bind(callback, rv)); |
| } |
| - virtual void WriteIndex(const CacheMap& caches, |
| + virtual void WriteIndex(const ServiceWorkerCacheStorage::Strings& cache_names, |
|
michaeln
2014/09/12 21:45:32
is the fully qualification needed given that Cache
jkarlin
2014/09/15 14:14:29
Done.
|
| const BoolCallback& callback) OVERRIDE { |
| DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| @@ -217,10 +217,9 @@ class ServiceWorkerCacheStorage::SimpleCacheLoader |
| ServiceWorkerCacheStorageIndex index; |
| - for (CacheMap::const_iterator it = caches.begin(); it != caches.end(); |
| - ++it) { |
| + for (size_t i = 0u, max = cache_names.size(); i < max; ++i) { |
| ServiceWorkerCacheStorageIndex::Cache* index_cache = index.add_cache(); |
| - index_cache->set_name(it->first); |
| + index_cache->set_name(cache_names[i]); |
| index_cache->set_size(0); // TODO(jkarlin): Make this real. |
| } |
| @@ -442,9 +441,15 @@ void ServiceWorkerCacheStorage::DeleteCache( |
| cache_map_.erase(it); |
| + // Delete the name from ordered_cache_names_. |
| + Strings::iterator iter = std::find( |
| + ordered_cache_names_.begin(), ordered_cache_names_.end(), cache_name); |
| + DCHECK(iter != ordered_cache_names_.end()); |
| + ordered_cache_names_.erase(iter); |
| + |
| // Update the Index |
| cache_loader_->WriteIndex( |
| - cache_map_, |
| + ordered_cache_names_, |
| base::Bind(&ServiceWorkerCacheStorage::DeleteCacheDidWriteIndex, |
| weak_factory_.GetWeakPtr(), |
| cache_name, |
| @@ -462,13 +467,7 @@ void ServiceWorkerCacheStorage::EnumerateCaches( |
| return; |
| } |
| - std::vector<std::string> names; |
| - for (CacheMap::const_iterator it = cache_map_.begin(); it != cache_map_.end(); |
| - ++it) { |
| - names.push_back(it->first); |
| - } |
| - |
| - callback.Run(names, CACHE_STORAGE_ERROR_NO_ERROR); |
| + callback.Run(ordered_cache_names_, CACHE_STORAGE_ERROR_NO_ERROR); |
| } |
| // Init is run lazily so that it is called on the proper MessageLoop. |
| @@ -506,6 +505,7 @@ void ServiceWorkerCacheStorage::LazyInitDidLoadIndex( |
| for (size_t i = 0u, max = indexed_cache_names->size(); i < max; ++i) { |
| cache_map_.insert(std::make_pair(indexed_cache_names->at(i), |
| base::WeakPtr<ServiceWorkerCache>())); |
| + ordered_cache_names_.push_back(indexed_cache_names->at(i)); |
| } |
| initialized_ = true; |
| @@ -530,9 +530,10 @@ void ServiceWorkerCacheStorage::CreateCacheDidCreateCache( |
| } |
| cache_map_.insert(std::make_pair(cache_name, cache->AsWeakPtr())); |
| + ordered_cache_names_.push_back(cache_name); |
| cache_loader_->WriteIndex( |
| - cache_map_, |
| + ordered_cache_names_, |
| base::Bind(&ServiceWorkerCacheStorage::CreateCacheDidWriteIndex, |
| weak_factory_.GetWeakPtr(), |
| callback, |