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

Side by Side Diff: content/browser/service_worker/service_worker_cache_storage.cc

Issue 667943003: Standardize usage of virtual/override/final in content/browser/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "content/browser/service_worker/service_worker_cache_storage.h" 5 #include "content/browser/service_worker/service_worker_cache_storage.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/files/file_util.h" 9 #include "base/files/file_util.h"
10 #include "base/files/memory_mapped_file.h" 10 #include "base/files/memory_mapped_file.h"
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 // cache is deleted. 82 // cache is deleted.
83 class ServiceWorkerCacheStorage::MemoryLoader 83 class ServiceWorkerCacheStorage::MemoryLoader
84 : public ServiceWorkerCacheStorage::CacheLoader { 84 : public ServiceWorkerCacheStorage::CacheLoader {
85 public: 85 public:
86 MemoryLoader(base::SequencedTaskRunner* cache_task_runner, 86 MemoryLoader(base::SequencedTaskRunner* cache_task_runner,
87 net::URLRequestContext* request_context, 87 net::URLRequestContext* request_context,
88 base::WeakPtr<storage::BlobStorageContext> blob_context, 88 base::WeakPtr<storage::BlobStorageContext> blob_context,
89 const GURL& origin) 89 const GURL& origin)
90 : CacheLoader(cache_task_runner, request_context, blob_context, origin) {} 90 : CacheLoader(cache_task_runner, request_context, blob_context, origin) {}
91 91
92 virtual scoped_refptr<ServiceWorkerCache> CreateServiceWorkerCache( 92 scoped_refptr<ServiceWorkerCache> CreateServiceWorkerCache(
93 const std::string& cache_name) override { 93 const std::string& cache_name) override {
94 return ServiceWorkerCache::CreateMemoryCache(request_context_, 94 return ServiceWorkerCache::CreateMemoryCache(request_context_,
95 blob_context_); 95 blob_context_);
96 } 96 }
97 97
98 virtual void CreateCache(const std::string& cache_name, 98 void CreateCache(const std::string& cache_name,
99 const CacheCallback& callback) override { 99 const CacheCallback& callback) override {
100 scoped_refptr<ServiceWorkerCache> cache = 100 scoped_refptr<ServiceWorkerCache> cache =
101 ServiceWorkerCache::CreateMemoryCache(request_context_, blob_context_); 101 ServiceWorkerCache::CreateMemoryCache(request_context_, blob_context_);
102 cache_refs_.insert(std::make_pair(cache_name, cache)); 102 cache_refs_.insert(std::make_pair(cache_name, cache));
103 callback.Run(cache); 103 callback.Run(cache);
104 } 104 }
105 105
106 virtual void CleanUpDeletedCache(const std::string& cache_name, 106 void CleanUpDeletedCache(const std::string& cache_name,
107 const BoolCallback& callback) override { 107 const BoolCallback& callback) override {
108 CacheRefMap::iterator it = cache_refs_.find(cache_name); 108 CacheRefMap::iterator it = cache_refs_.find(cache_name);
109 DCHECK(it != cache_refs_.end()); 109 DCHECK(it != cache_refs_.end());
110 cache_refs_.erase(it); 110 cache_refs_.erase(it);
111 callback.Run(true); 111 callback.Run(true);
112 } 112 }
113 113
114 virtual void WriteIndex(const StringVector& cache_names, 114 void WriteIndex(const StringVector& cache_names,
115 const BoolCallback& callback) override { 115 const BoolCallback& callback) override {
116 callback.Run(false); 116 callback.Run(false);
117 } 117 }
118 118
119 virtual void LoadIndex(scoped_ptr<std::vector<std::string> > cache_names, 119 void LoadIndex(scoped_ptr<std::vector<std::string>> cache_names,
120 const StringVectorCallback& callback) override { 120 const StringVectorCallback& callback) override {
121 callback.Run(cache_names.Pass()); 121 callback.Run(cache_names.Pass());
122 } 122 }
123 123
124 private: 124 private:
125 typedef std::map<std::string, scoped_refptr<ServiceWorkerCache> > CacheRefMap; 125 typedef std::map<std::string, scoped_refptr<ServiceWorkerCache> > CacheRefMap;
126 virtual ~MemoryLoader() {} 126 ~MemoryLoader() override {}
127 127
128 // Keep a reference to each cache to ensure that it's not freed before the 128 // Keep a reference to each cache to ensure that it's not freed before the
129 // client calls ServiceWorkerCacheStorage::Delete or the CacheStorage is 129 // client calls ServiceWorkerCacheStorage::Delete or the CacheStorage is
130 // freed. 130 // freed.
131 CacheRefMap cache_refs_; 131 CacheRefMap cache_refs_;
132 }; 132 };
133 133
134 class ServiceWorkerCacheStorage::SimpleCacheLoader 134 class ServiceWorkerCacheStorage::SimpleCacheLoader
135 : public ServiceWorkerCacheStorage::CacheLoader { 135 : public ServiceWorkerCacheStorage::CacheLoader {
136 public: 136 public:
137 SimpleCacheLoader(const base::FilePath& origin_path, 137 SimpleCacheLoader(const base::FilePath& origin_path,
138 base::SequencedTaskRunner* cache_task_runner, 138 base::SequencedTaskRunner* cache_task_runner,
139 net::URLRequestContext* request_context, 139 net::URLRequestContext* request_context,
140 base::WeakPtr<storage::BlobStorageContext> blob_context, 140 base::WeakPtr<storage::BlobStorageContext> blob_context,
141 const GURL& origin) 141 const GURL& origin)
142 : CacheLoader(cache_task_runner, request_context, blob_context, origin), 142 : CacheLoader(cache_task_runner, request_context, blob_context, origin),
143 origin_path_(origin_path), 143 origin_path_(origin_path),
144 weak_ptr_factory_(this) {} 144 weak_ptr_factory_(this) {}
145 145
146 virtual scoped_refptr<ServiceWorkerCache> CreateServiceWorkerCache( 146 scoped_refptr<ServiceWorkerCache> CreateServiceWorkerCache(
147 const std::string& cache_name) override { 147 const std::string& cache_name) override {
148 DCHECK_CURRENTLY_ON(BrowserThread::IO); 148 DCHECK_CURRENTLY_ON(BrowserThread::IO);
149 149
150 return ServiceWorkerCache::CreatePersistentCache( 150 return ServiceWorkerCache::CreatePersistentCache(
151 CreatePersistentCachePath(origin_path_, cache_name), 151 CreatePersistentCachePath(origin_path_, cache_name),
152 request_context_, 152 request_context_,
153 blob_context_); 153 blob_context_);
154 } 154 }
155 155
156 virtual void CreateCache(const std::string& cache_name, 156 void CreateCache(const std::string& cache_name,
157 const CacheCallback& callback) override { 157 const CacheCallback& callback) override {
158 DCHECK_CURRENTLY_ON(BrowserThread::IO); 158 DCHECK_CURRENTLY_ON(BrowserThread::IO);
159 159
160 // 1. Delete the cache's directory if it exists. 160 // 1. Delete the cache's directory if it exists.
161 // (CreateCacheDeleteFilesInPool) 161 // (CreateCacheDeleteFilesInPool)
162 // 2. Load the cache. (LoadCreateDirectoryInPool) 162 // 2. Load the cache. (LoadCreateDirectoryInPool)
163 163
164 base::FilePath cache_path = 164 base::FilePath cache_path =
165 CreatePersistentCachePath(origin_path_, cache_name); 165 CreatePersistentCachePath(origin_path_, cache_name);
166 166
167 PostTaskAndReplyWithResult( 167 PostTaskAndReplyWithResult(
(...skipping 17 matching lines...) Expand all
185 base::WeakPtr<SimpleCacheLoader> loader, 185 base::WeakPtr<SimpleCacheLoader> loader,
186 bool success) { 186 bool success) {
187 if (!success || !loader) { 187 if (!success || !loader) {
188 callback.Run(scoped_refptr<ServiceWorkerCache>()); 188 callback.Run(scoped_refptr<ServiceWorkerCache>());
189 return; 189 return;
190 } 190 }
191 191
192 callback.Run(loader->CreateServiceWorkerCache(cache_name)); 192 callback.Run(loader->CreateServiceWorkerCache(cache_name));
193 } 193 }
194 194
195 virtual void CleanUpDeletedCache(const std::string& cache_name, 195 void CleanUpDeletedCache(const std::string& cache_name,
196 const BoolCallback& callback) override { 196 const BoolCallback& callback) override {
197 DCHECK_CURRENTLY_ON(BrowserThread::IO); 197 DCHECK_CURRENTLY_ON(BrowserThread::IO);
198 198
199 // 1. Delete the cache's directory. (CleanUpDeleteCacheDirInPool) 199 // 1. Delete the cache's directory. (CleanUpDeleteCacheDirInPool)
200 200
201 base::FilePath cache_path = 201 base::FilePath cache_path =
202 CreatePersistentCachePath(origin_path_, cache_name); 202 CreatePersistentCachePath(origin_path_, cache_name);
203 cache_task_runner_->PostTask( 203 cache_task_runner_->PostTask(
204 FROM_HERE, 204 FROM_HERE,
205 base::Bind(&SimpleCacheLoader::CleanUpDeleteCacheDirInPool, 205 base::Bind(&SimpleCacheLoader::CleanUpDeleteCacheDirInPool,
206 cache_path, 206 cache_path,
207 callback, 207 callback,
208 base::MessageLoopProxy::current())); 208 base::MessageLoopProxy::current()));
209 } 209 }
210 210
211 static void CleanUpDeleteCacheDirInPool( 211 static void CleanUpDeleteCacheDirInPool(
212 const base::FilePath& cache_path, 212 const base::FilePath& cache_path,
213 const BoolCallback& callback, 213 const BoolCallback& callback,
214 const scoped_refptr<base::MessageLoopProxy>& original_loop) { 214 const scoped_refptr<base::MessageLoopProxy>& original_loop) {
215 bool rv = base::DeleteFile(cache_path, true); 215 bool rv = base::DeleteFile(cache_path, true);
216 original_loop->PostTask(FROM_HERE, base::Bind(callback, rv)); 216 original_loop->PostTask(FROM_HERE, base::Bind(callback, rv));
217 } 217 }
218 218
219 virtual void WriteIndex(const StringVector& cache_names, 219 void WriteIndex(const StringVector& cache_names,
220 const BoolCallback& callback) override { 220 const BoolCallback& callback) override {
221 DCHECK_CURRENTLY_ON(BrowserThread::IO); 221 DCHECK_CURRENTLY_ON(BrowserThread::IO);
222 222
223 // 1. Create the index file as a string. (WriteIndex) 223 // 1. Create the index file as a string. (WriteIndex)
224 // 2. Write the file to disk. (WriteIndexWriteToFileInPool) 224 // 2. Write the file to disk. (WriteIndexWriteToFileInPool)
225 225
226 ServiceWorkerCacheStorageIndex index; 226 ServiceWorkerCacheStorageIndex index;
227 index.set_origin(origin_.spec()); 227 index.set_origin(origin_.spec());
228 228
229 for (size_t i = 0u, max = cache_names.size(); i < max; ++i) { 229 for (size_t i = 0u, max = cache_names.size(); i < max; ++i) {
230 ServiceWorkerCacheStorageIndex::Cache* index_cache = index.add_cache(); 230 ServiceWorkerCacheStorageIndex::Cache* index_cache = index.add_cache();
(...skipping 29 matching lines...) Expand all
260 if (bytes_written != implicit_cast<int>(data.size())) { 260 if (bytes_written != implicit_cast<int>(data.size())) {
261 base::DeleteFile(tmp_path, /* recursive */ false); 261 base::DeleteFile(tmp_path, /* recursive */ false);
262 original_loop->PostTask(FROM_HERE, base::Bind(callback, false)); 262 original_loop->PostTask(FROM_HERE, base::Bind(callback, false));
263 } 263 }
264 264
265 // Atomically rename the temporary index file to become the real one. 265 // Atomically rename the temporary index file to become the real one.
266 bool rv = base::ReplaceFile(tmp_path, index_path, NULL); 266 bool rv = base::ReplaceFile(tmp_path, index_path, NULL);
267 original_loop->PostTask(FROM_HERE, base::Bind(callback, rv)); 267 original_loop->PostTask(FROM_HERE, base::Bind(callback, rv));
268 } 268 }
269 269
270 virtual void LoadIndex(scoped_ptr<std::vector<std::string> > names, 270 void LoadIndex(scoped_ptr<std::vector<std::string>> names,
271 const StringVectorCallback& callback) override { 271 const StringVectorCallback& callback) override {
272 DCHECK_CURRENTLY_ON(BrowserThread::IO); 272 DCHECK_CURRENTLY_ON(BrowserThread::IO);
273 273
274 // 1. Read the file from disk. (LoadIndexReadFileInPool) 274 // 1. Read the file from disk. (LoadIndexReadFileInPool)
275 // 2. Parse file and return the names of the caches (LoadIndexDidReadFile) 275 // 2. Parse file and return the names of the caches (LoadIndexDidReadFile)
276 276
277 base::FilePath index_path = 277 base::FilePath index_path =
278 origin_path_.AppendASCII(ServiceWorkerCacheStorage::kIndexFileName); 278 origin_path_.AppendASCII(ServiceWorkerCacheStorage::kIndexFileName);
279 279
280 cache_task_runner_->PostTask( 280 cache_task_runner_->PostTask(
281 FROM_HERE, 281 FROM_HERE,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 names->push_back(cache.name()); 313 names->push_back(cache.name());
314 } 314 }
315 } 315 }
316 316
317 // TODO(jkarlin): Delete caches that are in the directory and not returned 317 // TODO(jkarlin): Delete caches that are in the directory and not returned
318 // in LoadIndex. 318 // in LoadIndex.
319 callback.Run(names.Pass()); 319 callback.Run(names.Pass());
320 } 320 }
321 321
322 private: 322 private:
323 virtual ~SimpleCacheLoader() {} 323 ~SimpleCacheLoader() override {}
324 324
325 static std::string HexedHash(const std::string& value) { 325 static std::string HexedHash(const std::string& value) {
326 std::string value_hash = base::SHA1HashString(value); 326 std::string value_hash = base::SHA1HashString(value);
327 std::string valued_hexed_hash = base::StringToLowerASCII( 327 std::string valued_hexed_hash = base::StringToLowerASCII(
328 base::HexEncode(value_hash.c_str(), value_hash.length())); 328 base::HexEncode(value_hash.c_str(), value_hash.length()));
329 return valued_hexed_hash; 329 return valued_hexed_hash;
330 } 330 }
331 331
332 static base::FilePath CreatePersistentCachePath( 332 static base::FilePath CreatePersistentCachePath(
333 const base::FilePath& origin_path, 333 const base::FilePath& origin_path,
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
592 scoped_refptr<ServiceWorkerCache> new_cache = 592 scoped_refptr<ServiceWorkerCache> new_cache =
593 cache_loader_->CreateServiceWorkerCache(cache_name); 593 cache_loader_->CreateServiceWorkerCache(cache_name);
594 map_iter->second = new_cache->AsWeakPtr(); 594 map_iter->second = new_cache->AsWeakPtr();
595 return new_cache; 595 return new_cache;
596 } 596 }
597 597
598 return make_scoped_refptr(cache.get()); 598 return make_scoped_refptr(cache.get());
599 } 599 }
600 600
601 } // namespace content 601 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698