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 6dc652e7d3d00d2807912fb8ed3ab82d673e9854..caff0ac893174cb5b10631797e93c6197c343489 100644 |
--- a/content/browser/cache_storage/cache_storage_cache.cc |
+++ b/content/browser/cache_storage/cache_storage_cache.cc |
@@ -451,7 +451,9 @@ void CacheStorageCache::BatchDidAllOperations( |
callback->Run(CACHE_STORAGE_OK); |
} |
-void CacheStorageCache::Keys(const RequestsCallback& callback) { |
+void CacheStorageCache::Keys(std::unique_ptr<ServiceWorkerFetchRequest> request, |
+ const CacheStorageCacheQueryParams& options, |
+ const RequestsCallback& callback) { |
if (backend_state_ == BACKEND_CLOSED) { |
callback.Run(CACHE_STORAGE_ERROR_STORAGE, std::unique_ptr<Requests>()); |
return; |
@@ -459,6 +461,7 @@ void CacheStorageCache::Keys(const RequestsCallback& callback) { |
scheduler_->ScheduleOperation( |
base::Bind(&CacheStorageCache::KeysImpl, weak_ptr_factory_.GetWeakPtr(), |
+ base::Passed(std::move(request)), options, |
scheduler_->WrapCallbackToRunNext(callback))); |
} |
@@ -625,11 +628,18 @@ void CacheStorageCache::QueryCacheProcessNextEntry( |
return; |
} |
- if (query_cache_results->options.ignore_search) { |
- DCHECK(query_cache_results->request); |
+ if (query_cache_results->request && |
+ !query_cache_results->request->url.is_empty()) { |
disk_cache::Entry* entry(*iter); |
- if (RemoveQueryParam(query_cache_results->request->url) != |
- RemoveQueryParam(GURL(entry->GetKey()))) { |
+ GURL requestURL = query_cache_results->request->url; |
+ GURL cachedURL = GURL(entry->GetKey()); |
+ |
+ if (query_cache_results->options.ignore_search) { |
+ requestURL = RemoveQueryParam(requestURL); |
+ cachedURL = RemoveQueryParam(cachedURL); |
+ } |
+ |
+ if (cachedURL != requestURL) { |
QueryCacheProcessNextEntry(std::move(query_cache_results), iter + 1); |
return; |
} |
@@ -1266,16 +1276,17 @@ void CacheStorageCache::DeleteDidOpenEntry( |
callback.Run(CACHE_STORAGE_OK); |
} |
-void CacheStorageCache::KeysImpl(const RequestsCallback& callback) { |
+void CacheStorageCache::KeysImpl( |
+ std::unique_ptr<ServiceWorkerFetchRequest> request, |
+ const CacheStorageCacheQueryParams& options, |
+ const RequestsCallback& callback) { |
DCHECK_NE(BACKEND_UNINITIALIZED, backend_state_); |
if (backend_state_ != BACKEND_OPEN) { |
callback.Run(CACHE_STORAGE_ERROR_STORAGE, std::unique_ptr<Requests>()); |
return; |
} |
- std::unique_ptr<ServiceWorkerFetchRequest> request( |
- new ServiceWorkerFetchRequest); |
- QueryCache(std::move(request), CacheStorageCacheQueryParams(), |
+ QueryCache(std::move(request), options, |
base::Bind(&CacheStorageCache::KeysDidQueryCache, |
weak_ptr_factory_.GetWeakPtr(), callback)); |
} |