| Index: content/browser/cache_storage/cache_storage_cache.cc
|
| diff --git a/content/browser/cache_storage/cache_storage_cache.cc b/content/browser/cache_storage/cache_storage_cache.cc
|
| index 162b93c2595fc864901524025a96cea59c192b0b..0216276f842073ab6a5b398f8b038f69c02fb617 100644
|
| --- a/content/browser/cache_storage/cache_storage_cache.cc
|
| +++ b/content/browser/cache_storage/cache_storage_cache.cc
|
| @@ -292,6 +292,16 @@ struct CacheStorageCache::QueryCacheContext {
|
| callback(callback),
|
| matches(base::MakeUnique<QueryCacheResults>()) {}
|
|
|
| + ~QueryCacheContext() {
|
| + // If the CacheStorageCache is deleted before a backend operation to open
|
| + // an entry completes, the callback won't be run and the resulting entry
|
| + // will be leaked unless we close it here.
|
| + if (enumerated_entry) {
|
| + enumerated_entry->Close();
|
| + enumerated_entry = nullptr;
|
| + }
|
| + }
|
| +
|
| // Input to QueryCache
|
| std::unique_ptr<ServiceWorkerFetchRequest> request;
|
| CacheStorageCacheQueryParams options;
|
|
|