| 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 1e83b43c664c994c7fb37f480d314ae649147e5e..8992a830c8c4d5521c51a1bce9083bde295f01e7 100644
|
| --- a/content/browser/cache_storage/cache_storage_cache.cc
|
| +++ b/content/browser/cache_storage/cache_storage_cache.cc
|
| @@ -506,6 +506,75 @@ bool CacheStorageCache::LazyInitialize() {
|
| return false;
|
| }
|
|
|
| +void CacheStorageCache::QueryCache(scoped_ptr<ServiceWorkerFetchRequest> request,
|
| + const CacheStorageCacheQueryParams& options) {
|
| + printf("perform query cache\n");
|
| +}
|
| +
|
| +void CacheStorageCache::OpenEntry(scoped_ptr<ServiceWorkerFetchRequest> request,
|
| + const OpenAllEntriesCallback& callback) {
|
| + scoped_ptr<OpenAllEntriesContext> entries_context(new OpenAllEntriesContext);
|
| +
|
| + disk_cache::Entry** entry_ptr = &entries_context->enumerated_entry;
|
| +
|
| + net::CompletionCallback open_entry_callback = base::Bind(
|
| + &CacheStorageCache::DidOpenEntry, weak_ptr_factory_.GetWeakPtr(),
|
| + base::Passed(std::move(entries_context)), callback);
|
| +
|
| + int rv = backend_->OpenEntry(request.get()->url.spec(), entry_ptr, open_entry_callback);
|
| + if (rv != net::ERR_IO_PENDING)
|
| + open_entry_callback.Run(rv);
|
| +}
|
| +
|
| +void CacheStorageCache::DidOpenEntry(scoped_ptr<OpenAllEntriesContext> entries_context,
|
| + const OpenAllEntriesCallback& callback,
|
| + int rv) {
|
| + if (rv != net::OK) {
|
| + callback.Run(std::move(entries_context), CACHE_STORAGE_ERROR_NOT_FOUND);
|
| + return;
|
| + }
|
| +
|
| + //DCHECK(entries_context->enumerated_entry);
|
| +
|
| + // Store the entry.
|
| + entries_context->entries.push_back(entries_context->enumerated_entry);
|
| + entries_context->enumerated_entry = nullptr;
|
| +
|
| + callback.Run(std::move(entries_context), CACHE_STORAGE_OK);
|
| +}
|
| +
|
| +void CacheStorageCache::OpenEntries(scoped_ptr<ServiceWorkerFetchRequest> request,
|
| + const CacheStorageCacheQueryParams& options,
|
| + const OpenAllEntriesCallback& callback) {
|
| + scoped_ptr<OpenAllEntriesContext> entries_context(new OpenAllEntriesContext);
|
| +
|
| +
|
| + int rv;
|
| + if (request->url.is_empty() || options.ignore_search) {
|
| + entries_context->backend_iterator = backend_->CreateIterator();
|
| + disk_cache::Backend::Iterator& iterator = *entries_context->backend_iterator;
|
| + disk_cache::Entry** enumerated_entry = &entries_context->enumerated_entry;
|
| +
|
| + net::CompletionCallback open_entry_callback = base::Bind(
|
| + &CacheStorageCache::DidOpenNextEntry, weak_ptr_factory_.GetWeakPtr(),
|
| + /*base::Passed(std::move(request)), options,*/ base::Passed(std::move(entries_context)), callback);
|
| +
|
| + rv = iterator.OpenNextEntry(enumerated_entry, open_entry_callback);
|
| + if (rv != net::ERR_IO_PENDING)
|
| + open_entry_callback.Run(rv);
|
| + } else {
|
| + disk_cache::Entry** entry_ptr = &entries_context->enumerated_entry;
|
| +
|
| + net::CompletionCallback open_entry_callback = base::Bind(
|
| + &CacheStorageCache::DidOpenEntry, weak_ptr_factory_.GetWeakPtr(),
|
| + /*base::Passed(std::move(request)), options,*/ base::Passed(std::move(entries_context)), callback);
|
| +
|
| + rv = backend_->OpenEntry(request->url.spec(), entry_ptr, open_entry_callback);
|
| + if (rv != net::ERR_IO_PENDING)
|
| + open_entry_callback.Run(rv);
|
| + }
|
| +}
|
| +
|
| void CacheStorageCache::OpenAllEntries(const OpenAllEntriesCallback& callback) {
|
| scoped_ptr<OpenAllEntriesContext> entries_context(new OpenAllEntriesContext);
|
| entries_context->backend_iterator = backend_->CreateIterator();
|
| @@ -1049,6 +1118,12 @@ void CacheStorageCache::DeleteImpl(
|
| return;
|
| }
|
|
|
| + ServiceWorkerFetchRequest* r = new ServiceWorkerFetchRequest(*request);
|
| + OpenEntries(scoped_ptr<ServiceWorkerFetchRequest>(r), match_params, base::Bind(&CacheStorageCache::DeleteDidOpenAllEntries,
|
| + weak_ptr_factory_.GetWeakPtr(),
|
| + base::Passed(std::move(request)), callback));
|
| +/*
|
| +
|
| if (match_params.ignore_search) {
|
| OpenAllEntries(base::Bind(&CacheStorageCache::DeleteDidOpenAllEntries,
|
| weak_ptr_factory_.GetWeakPtr(),
|
| @@ -1056,23 +1131,21 @@ void CacheStorageCache::DeleteImpl(
|
| return;
|
| }
|
|
|
| - scoped_ptr<disk_cache::Entry*> entry(new disk_cache::Entry*);
|
| -
|
| - disk_cache::Entry** entry_ptr = entry.get();
|
| -
|
| - ServiceWorkerFetchRequest* request_ptr = request.get();
|
| -
|
| - net::CompletionCallback open_entry_callback = base::Bind(
|
| - &CacheStorageCache::DeleteDidOpenEntry, weak_ptr_factory_.GetWeakPtr(),
|
| - origin_, base::Passed(std::move(request)), callback,
|
| - base::Passed(std::move(entry)));
|
| + ServiceWorkerFetchRequest* r = new ServiceWorkerFetchRequest(*request);
|
| + OpenEntry(scoped_ptr<ServiceWorkerFetchRequest>(r), base::Bind(&CacheStorageCache::DeleteDidOpenAllEntries,
|
| + weak_ptr_factory_.GetWeakPtr(),
|
| + base::Passed(std::move(request)), callback));*/
|
| +}
|
|
|
| - int rv = backend_->OpenEntry(request_ptr->url.spec(), entry_ptr,
|
| - open_entry_callback);
|
| - if (rv != net::ERR_IO_PENDING)
|
| - open_entry_callback.Run(rv);
|
| +void CacheStorageCache::DeleteDidOpenAllEntries2(
|
| + scoped_ptr<ServiceWorkerFetchRequest> request,
|
| + const ErrorCallback& callback,
|
| + scoped_ptr<OpenAllEntriesContext> entries_context,
|
| + CacheStorageError error) {
|
| + callback.Run(CACHE_STORAGE_OK);
|
| }
|
|
|
| +
|
| void CacheStorageCache::DeleteDidOpenAllEntries(
|
| scoped_ptr<ServiceWorkerFetchRequest> request,
|
| const ErrorCallback& callback,
|
| @@ -1083,12 +1156,12 @@ void CacheStorageCache::DeleteDidOpenAllEntries(
|
| return;
|
| }
|
|
|
| - GURL request_url_without_query = RemoveQueryParam(request->url);
|
| - for (Entries::iterator iter = entries_context->entries.begin();
|
| - iter != entries_context->entries.end(); iter++) {
|
| - disk_cache::Entry* entry(*iter);
|
| - if (request_url_without_query == RemoveQueryParam(GURL(entry->GetKey())))
|
| - entry->Doom();
|
| + if (request) {
|
| + GURL request_url_without_query = RemoveQueryParam(request->url);
|
| + for (size_t i = 0, max = entries_context->entries.size(); i < max; ++i) {
|
| + if (request_url_without_query == RemoveQueryParam(GURL(entries_context->entries[i]->GetKey())))
|
| + entries_context->entries[i]->Doom();
|
| + }
|
| }
|
|
|
| entries_context.reset();
|
|
|