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

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

Issue 985053002: [ServiceWorkerCache] Cache and CacheStorage creation UMA (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments from PS 2 Created 5 years, 9 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 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/barrier_closure.h" 9 #include "base/barrier_closure.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
11 #include "base/files/memory_mapped_file.h" 11 #include "base/files/memory_mapped_file.h"
12 #include "base/memory/ref_counted.h" 12 #include "base/memory/ref_counted.h"
13 #include "base/metrics/histogram_macros.h"
13 #include "base/sha1.h" 14 #include "base/sha1.h"
14 #include "base/stl_util.h" 15 #include "base/stl_util.h"
15 #include "base/strings/string_number_conversions.h" 16 #include "base/strings/string_number_conversions.h"
16 #include "base/strings/string_util.h" 17 #include "base/strings/string_util.h"
17 #include "content/browser/service_worker/service_worker_cache.h" 18 #include "content/browser/service_worker/service_worker_cache.h"
18 #include "content/browser/service_worker/service_worker_cache.pb.h" 19 #include "content/browser/service_worker/service_worker_cache.pb.h"
19 #include "content/browser/service_worker/service_worker_cache_scheduler.h" 20 #include "content/browser/service_worker/service_worker_cache_scheduler.h"
20 #include "content/public/browser/browser_thread.h" 21 #include "content/public/browser/browser_thread.h"
21 #include "net/base/directory_lister.h" 22 #include "net/base/directory_lister.h"
22 #include "net/base/net_errors.h" 23 #include "net/base/net_errors.h"
(...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after
606 const CacheAndErrorCallback& callback, 607 const CacheAndErrorCallback& callback,
607 const scoped_refptr<ServiceWorkerCache>& cache) { 608 const scoped_refptr<ServiceWorkerCache>& cache) {
608 DCHECK_CURRENTLY_ON(BrowserThread::IO); 609 DCHECK_CURRENTLY_ON(BrowserThread::IO);
609 610
610 if (!cache.get()) { 611 if (!cache.get()) {
611 callback.Run(scoped_refptr<ServiceWorkerCache>(), 612 callback.Run(scoped_refptr<ServiceWorkerCache>(),
612 CACHE_STORAGE_ERROR_CLOSING); 613 CACHE_STORAGE_ERROR_CLOSING);
613 return; 614 return;
614 } 615 }
615 616
617 UMA_HISTOGRAM_BOOLEAN("ServiceWorkerCache.CreateCacheStorageResult",
618 cache != nullptr);
619
616 cache_map_.insert(std::make_pair(cache_name, cache->AsWeakPtr())); 620 cache_map_.insert(std::make_pair(cache_name, cache->AsWeakPtr()));
617 ordered_cache_names_.push_back(cache_name); 621 ordered_cache_names_.push_back(cache_name);
618 622
619 cache_loader_->WriteIndex( 623 cache_loader_->WriteIndex(
620 ordered_cache_names_, 624 ordered_cache_names_,
621 base::Bind(&ServiceWorkerCacheStorage::CreateCacheDidWriteIndex, 625 base::Bind(&ServiceWorkerCacheStorage::CreateCacheDidWriteIndex,
622 weak_factory_.GetWeakPtr(), 626 weak_factory_.GetWeakPtr(),
623 callback, 627 callback,
624 cache)); 628 cache));
625 } 629 }
626 630
627 void ServiceWorkerCacheStorage::CreateCacheDidWriteIndex( 631 void ServiceWorkerCacheStorage::CreateCacheDidWriteIndex(
628 const CacheAndErrorCallback& callback, 632 const CacheAndErrorCallback& callback,
629 const scoped_refptr<ServiceWorkerCache>& cache, 633 const scoped_refptr<ServiceWorkerCache>& cache,
630 bool success) { 634 bool success) {
631 DCHECK_CURRENTLY_ON(BrowserThread::IO); 635 DCHECK_CURRENTLY_ON(BrowserThread::IO);
632 DCHECK(cache.get()); 636 DCHECK(cache.get());
633 637
638 // TODO(jkarlin): Handle !success.
639
634 callback.Run(cache, CACHE_STORAGE_ERROR_NO_ERROR); 640 callback.Run(cache, CACHE_STORAGE_ERROR_NO_ERROR);
635 } 641 }
636 642
637 void ServiceWorkerCacheStorage::HasCacheImpl( 643 void ServiceWorkerCacheStorage::HasCacheImpl(
638 const std::string& cache_name, 644 const std::string& cache_name,
639 const BoolAndErrorCallback& callback) { 645 const BoolAndErrorCallback& callback) {
640 bool has_cache = cache_map_.find(cache_name) != cache_map_.end(); 646 bool has_cache = cache_map_.find(cache_name) != cache_map_.end();
641 647
642 callback.Run(has_cache, CACHE_STORAGE_ERROR_NO_ERROR); 648 callback.Run(has_cache, CACHE_STORAGE_ERROR_NO_ERROR);
643 } 649 }
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
710 callback.Run(ordered_cache_names_, CACHE_STORAGE_ERROR_NO_ERROR); 716 callback.Run(ordered_cache_names_, CACHE_STORAGE_ERROR_NO_ERROR);
711 } 717 }
712 718
713 void ServiceWorkerCacheStorage::MatchCacheImpl( 719 void ServiceWorkerCacheStorage::MatchCacheImpl(
714 const std::string& cache_name, 720 const std::string& cache_name,
715 scoped_ptr<ServiceWorkerFetchRequest> request, 721 scoped_ptr<ServiceWorkerFetchRequest> request,
716 const ServiceWorkerCache::ResponseCallback& callback) { 722 const ServiceWorkerCache::ResponseCallback& callback) {
717 scoped_refptr<ServiceWorkerCache> cache = GetLoadedCache(cache_name); 723 scoped_refptr<ServiceWorkerCache> cache = GetLoadedCache(cache_name);
718 724
719 if (!cache.get()) { 725 if (!cache.get()) {
720 callback.Run(ServiceWorkerCache::ErrorTypeNotFound, 726 callback.Run(ServiceWorkerCache::ERROR_TYPE_NOT_FOUND,
721 scoped_ptr<ServiceWorkerResponse>(), 727 scoped_ptr<ServiceWorkerResponse>(),
722 scoped_ptr<storage::BlobDataHandle>()); 728 scoped_ptr<storage::BlobDataHandle>());
723 return; 729 return;
724 } 730 }
725 731
726 // Pass the cache along to the callback to keep the cache open until match is 732 // Pass the cache along to the callback to keep the cache open until match is
727 // done. 733 // done.
728 cache->Match(request.Pass(), 734 cache->Match(request.Pass(),
729 base::Bind(&ServiceWorkerCacheStorage::MatchCacheDidMatch, 735 base::Bind(&ServiceWorkerCacheStorage::MatchCacheDidMatch,
730 weak_factory_.GetWeakPtr(), cache, callback)); 736 weak_factory_.GetWeakPtr(), cache, callback));
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
763 } 769 }
764 } 770 }
765 771
766 void ServiceWorkerCacheStorage::MatchAllCachesDidMatch( 772 void ServiceWorkerCacheStorage::MatchAllCachesDidMatch(
767 scoped_refptr<ServiceWorkerCache> cache, 773 scoped_refptr<ServiceWorkerCache> cache,
768 const base::Closure& barrier_closure, 774 const base::Closure& barrier_closure,
769 ServiceWorkerCache::ResponseCallback* callback, 775 ServiceWorkerCache::ResponseCallback* callback,
770 ServiceWorkerCache::ErrorType error, 776 ServiceWorkerCache::ErrorType error,
771 scoped_ptr<ServiceWorkerResponse> response, 777 scoped_ptr<ServiceWorkerResponse> response,
772 scoped_ptr<storage::BlobDataHandle> handle) { 778 scoped_ptr<storage::BlobDataHandle> handle) {
773 if (callback->is_null() || error == ServiceWorkerCache::ErrorTypeNotFound) { 779 if (callback->is_null() ||
780 error == ServiceWorkerCache::ERROR_TYPE_NOT_FOUND) {
774 barrier_closure.Run(); 781 barrier_closure.Run();
775 return; 782 return;
776 } 783 }
777 callback->Run(error, response.Pass(), handle.Pass()); 784 callback->Run(error, response.Pass(), handle.Pass());
778 callback->Reset(); // Only call the callback once. 785 callback->Reset(); // Only call the callback once.
779 786
780 barrier_closure.Run(); 787 barrier_closure.Run();
781 } 788 }
782 789
783 void ServiceWorkerCacheStorage::MatchAllCachesDidMatchAll( 790 void ServiceWorkerCacheStorage::MatchAllCachesDidMatchAll(
784 scoped_ptr<ServiceWorkerCache::ResponseCallback> callback) { 791 scoped_ptr<ServiceWorkerCache::ResponseCallback> callback) {
785 if (!callback->is_null()) { 792 if (!callback->is_null()) {
786 callback->Run(ServiceWorkerCache::ErrorTypeNotFound, 793 callback->Run(ServiceWorkerCache::ERROR_TYPE_NOT_FOUND,
787 scoped_ptr<ServiceWorkerResponse>(), 794 scoped_ptr<ServiceWorkerResponse>(),
788 scoped_ptr<storage::BlobDataHandle>()); 795 scoped_ptr<storage::BlobDataHandle>());
789 } 796 }
790 } 797 }
791 798
792 scoped_refptr<ServiceWorkerCache> ServiceWorkerCacheStorage::GetLoadedCache( 799 scoped_refptr<ServiceWorkerCache> ServiceWorkerCacheStorage::GetLoadedCache(
793 const std::string& cache_name) { 800 const std::string& cache_name) {
794 DCHECK_CURRENTLY_ON(BrowserThread::IO); 801 DCHECK_CURRENTLY_ON(BrowserThread::IO);
795 DCHECK(initialized_); 802 DCHECK(initialized_);
796 803
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
891 scoped_ptr<storage::BlobDataHandle> blob_data_handle) { 898 scoped_ptr<storage::BlobDataHandle> blob_data_handle) {
892 base::WeakPtr<ServiceWorkerCacheStorage> cache_storage = 899 base::WeakPtr<ServiceWorkerCacheStorage> cache_storage =
893 weak_factory_.GetWeakPtr(); 900 weak_factory_.GetWeakPtr();
894 901
895 callback.Run(error, response.Pass(), blob_data_handle.Pass()); 902 callback.Run(error, response.Pass(), blob_data_handle.Pass());
896 if (cache_storage) 903 if (cache_storage)
897 scheduler_->CompleteOperationAndRunNext(); 904 scheduler_->CompleteOperationAndRunNext();
898 } 905 }
899 906
900 } // namespace content 907 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698