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

Unified Diff: content/browser/service_worker/service_worker_cache_storage.cc

Issue 651983002: [ServiceWorkerCache] Implement storage::QuotaClient (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments from PS 10+11 Created 6 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: 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 1fd5b76ceca04b7ee1a795c2e60eb1efcabab6cb..9ce5ce1a50ef8118889785dfe609f8562edadfbd 100644
--- a/content/browser/service_worker/service_worker_cache_storage.cc
+++ b/content/browser/service_worker/service_worker_cache_storage.cc
@@ -22,6 +22,7 @@
namespace content {
+const char ServiceWorkerCacheStorage::kIndexFileName[] = "index.txt";
// Handles the loading and clean up of ServiceWorkerCache objects. The
// callback of every public method is guaranteed to be called.
@@ -35,10 +36,14 @@ class ServiceWorkerCacheStorage::CacheLoader {
CacheLoader(base::SequencedTaskRunner* cache_task_runner,
net::URLRequestContext* request_context,
- base::WeakPtr<storage::BlobStorageContext> blob_context)
+ base::WeakPtr<storage::BlobStorageContext> blob_context,
+ const GURL& origin)
: cache_task_runner_(cache_task_runner),
request_context_(request_context),
- blob_context_(blob_context) {}
+ blob_context_(blob_context),
+ origin_(origin) {
+ DCHECK(!origin_.is_empty());
+ }
virtual ~CacheLoader() {}
@@ -68,6 +73,7 @@ class ServiceWorkerCacheStorage::CacheLoader {
scoped_refptr<base::SequencedTaskRunner> cache_task_runner_;
net::URLRequestContext* request_context_;
base::WeakPtr<storage::BlobStorageContext> blob_context_;
+ GURL origin_;
};
// Creates memory-only ServiceWorkerCaches. Because these caches have no
@@ -79,8 +85,9 @@ class ServiceWorkerCacheStorage::MemoryLoader
public:
MemoryLoader(base::SequencedTaskRunner* cache_task_runner,
net::URLRequestContext* request_context,
- base::WeakPtr<storage::BlobStorageContext> blob_context)
- : CacheLoader(cache_task_runner, request_context, blob_context) {}
+ base::WeakPtr<storage::BlobStorageContext> blob_context,
+ const GURL& origin)
+ : CacheLoader(cache_task_runner, request_context, blob_context, origin) {}
virtual scoped_refptr<ServiceWorkerCache> CreateServiceWorkerCache(
const std::string& cache_name) override {
@@ -130,8 +137,9 @@ class ServiceWorkerCacheStorage::SimpleCacheLoader
SimpleCacheLoader(const base::FilePath& origin_path,
base::SequencedTaskRunner* cache_task_runner,
net::URLRequestContext* request_context,
- base::WeakPtr<storage::BlobStorageContext> blob_context)
- : CacheLoader(cache_task_runner, request_context, blob_context),
+ base::WeakPtr<storage::BlobStorageContext> blob_context,
+ const GURL& origin)
+ : CacheLoader(cache_task_runner, request_context, blob_context, origin),
origin_path_(origin_path),
weak_ptr_factory_(this) {}
@@ -216,6 +224,7 @@ class ServiceWorkerCacheStorage::SimpleCacheLoader
// 2. Write the file to disk. (WriteIndexWriteToFileInPool)
ServiceWorkerCacheStorageIndex index;
+ index.set_origin(origin_.spec());
for (size_t i = 0u, max = cache_names.size(); i < max; ++i) {
ServiceWorkerCacheStorageIndex::Cache* index_cache = index.add_cache();
@@ -228,7 +237,8 @@ class ServiceWorkerCacheStorage::SimpleCacheLoader
DCHECK(success);
base::FilePath tmp_path = origin_path_.AppendASCII("index.txt.tmp");
- base::FilePath index_path = origin_path_.AppendASCII("index.txt");
+ base::FilePath index_path =
+ origin_path_.AppendASCII(ServiceWorkerCacheStorage::kIndexFileName);
cache_task_runner_->PostTask(
FROM_HERE,
@@ -264,7 +274,8 @@ class ServiceWorkerCacheStorage::SimpleCacheLoader
// 1. Read the file from disk. (LoadIndexReadFileInPool)
// 2. Parse file and return the names of the caches (LoadIndexDidReadFile)
- base::FilePath index_path = origin_path_.AppendASCII("index.txt");
+ base::FilePath index_path =
+ origin_path_.AppendASCII(ServiceWorkerCacheStorage::kIndexFileName);
cache_task_runner_->PostTask(
FROM_HERE,
@@ -334,7 +345,8 @@ ServiceWorkerCacheStorage::ServiceWorkerCacheStorage(
bool memory_only,
base::SequencedTaskRunner* cache_task_runner,
net::URLRequestContext* request_context,
- base::WeakPtr<storage::BlobStorageContext> blob_context)
+ base::WeakPtr<storage::BlobStorageContext> blob_context,
+ const GURL& origin)
: initialized_(false),
origin_path_(path),
cache_task_runner_(cache_task_runner),
@@ -342,10 +354,13 @@ ServiceWorkerCacheStorage::ServiceWorkerCacheStorage(
weak_factory_(this) {
if (memory_only)
cache_loader_.reset(new MemoryLoader(
- cache_task_runner_.get(), request_context, blob_context));
+ cache_task_runner_.get(), request_context, blob_context, origin));
else
- cache_loader_.reset(new SimpleCacheLoader(
- origin_path_, cache_task_runner_.get(), request_context, blob_context));
+ cache_loader_.reset(new SimpleCacheLoader(origin_path_,
+ cache_task_runner_.get(),
+ request_context,
+ blob_context,
+ origin));
}
ServiceWorkerCacheStorage::~ServiceWorkerCacheStorage() {
@@ -497,6 +512,18 @@ void ServiceWorkerCacheStorage::EnumerateCaches(
callback.Run(ordered_cache_names_, CACHE_STORAGE_ERROR_NO_ERROR);
}
+void ServiceWorkerCacheStorage::CloseAllCaches() {
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
+
+ if (!initialized_)
+ return;
+
+ for (auto& key_value : cache_map_) {
+ if (key_value.second)
+ key_value.second->Close();
+ }
+}
+
// Init is run lazily so that it is called on the proper MessageLoop.
void ServiceWorkerCacheStorage::LazyInit(const base::Closure& callback) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);

Powered by Google App Engine
This is Rietveld 408576698