Index: webkit/dom_storage/dom_storage_cached_area.cc |
diff --git a/webkit/dom_storage/dom_storage_cached_area.cc b/webkit/dom_storage/dom_storage_cached_area.cc |
index 6b20886bcb27d9894d4cbb3fb06175a08b3923a9..30d6291d32a5e184f9aa013b3f4a81b658b23a02 100644 |
--- a/webkit/dom_storage/dom_storage_cached_area.cc |
+++ b/webkit/dom_storage/dom_storage_cached_area.cc |
@@ -154,10 +154,34 @@ void DomStorageCachedArea::Prime(int connection_id) { |
connection_id, &values, |
base::Bind(&DomStorageCachedArea::OnLoadComplete, |
weak_factory_.GetWeakPtr())); |
+ base::TimeDelta time_to_prime = base::TimeTicks::Now() - before; |
+ // Keeping this histogram named the same (without the ForRenderer suffix) |
+ // to maintain histogram continuity. |
UMA_HISTOGRAM_TIMES("LocalStorage.TimeToPrimeLocalStorage", |
- base::TimeTicks::Now() - before); |
+ time_to_prime); |
map_ = new DomStorageMap(dom_storage::kPerAreaQuota); |
map_->SwapValues(&values); |
+ |
+ size_t local_storage_size_kb = map_->bytes_used() / 1024; |
+ // Track localStorage size, from 0-6MB. Note that the maximum size should be |
+ // 5MB, but we add some slop since we want to make sure the max size is always |
+ // above what we see in practice, since histograms can't change. |
+ UMA_HISTOGRAM_CUSTOM_COUNTS("LocalStorage.RendererLocalStorageSizeInKB", |
+ local_storage_size_kb, |
+ 0, 6 * 1024, 50); |
+ if (local_storage_size_kb < 100) { |
+ UMA_HISTOGRAM_TIMES( |
+ "LocalStorage.RendererTimeToPrimeLocalStorageUnder100KB", |
+ time_to_prime); |
+ } else if (local_storage_size_kb < 1000) { |
+ UMA_HISTOGRAM_TIMES( |
+ "LocalStorage.RendererTimeToPrimeLocalStorage100KBTo1MB", |
+ time_to_prime); |
+ } else { |
+ UMA_HISTOGRAM_TIMES( |
+ "LocalStorage.RendererTimeToPrimeLocalStorage1MBTo5MB", |
+ time_to_prime); |
+ } |
} |
void DomStorageCachedArea::Reset() { |