| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "components/precache/core/precache_database.h" | 5 #include "components/precache/core/precache_database.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
| 9 #include "base/location.h" | 9 #include "base/location.h" |
| 10 #include "base/metrics/histogram_macros.h" | 10 #include "base/metrics/histogram_macros.h" |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 } | 84 } |
| 85 | 85 |
| 86 buffered_writes_.push_back(base::Bind( | 86 buffered_writes_.push_back(base::Bind( |
| 87 &PrecacheURLTable::DeleteAll, base::Unretained(&precache_url_table_))); | 87 &PrecacheURLTable::DeleteAll, base::Unretained(&precache_url_table_))); |
| 88 Flush(); | 88 Flush(); |
| 89 } | 89 } |
| 90 | 90 |
| 91 void PrecacheDatabase::RecordURLPrefetch(const GURL& url, | 91 void PrecacheDatabase::RecordURLPrefetch(const GURL& url, |
| 92 const base::TimeDelta& latency, | 92 const base::TimeDelta& latency, |
| 93 const base::Time& fetch_time, | 93 const base::Time& fetch_time, |
| 94 int64 size, | 94 int64_t size, |
| 95 bool was_cached) { | 95 bool was_cached) { |
| 96 UMA_HISTOGRAM_TIMES("Precache.Latency.Prefetch", latency); | 96 UMA_HISTOGRAM_TIMES("Precache.Latency.Prefetch", latency); |
| 97 | 97 |
| 98 if (!IsDatabaseAccessible()) { | 98 if (!IsDatabaseAccessible()) { |
| 99 // Don't track anything if unable to access the database. | 99 // Don't track anything if unable to access the database. |
| 100 return; | 100 return; |
| 101 } | 101 } |
| 102 | 102 |
| 103 if (buffered_urls_.find(url.spec()) != buffered_urls_.end()) { | 103 if (buffered_urls_.find(url.spec()) != buffered_urls_.end()) { |
| 104 // If the URL for this fetch is in the write buffer, then flush the write | 104 // If the URL for this fetch is in the write buffer, then flush the write |
| (...skipping 22 matching lines...) Expand all Loading... |
| 127 buffered_writes_.push_back( | 127 buffered_writes_.push_back( |
| 128 base::Bind(&PrecacheURLTable::AddURL, | 128 base::Bind(&PrecacheURLTable::AddURL, |
| 129 base::Unretained(&precache_url_table_), url, fetch_time)); | 129 base::Unretained(&precache_url_table_), url, fetch_time)); |
| 130 buffered_urls_.insert(url.spec()); | 130 buffered_urls_.insert(url.spec()); |
| 131 MaybePostFlush(); | 131 MaybePostFlush(); |
| 132 } | 132 } |
| 133 | 133 |
| 134 void PrecacheDatabase::RecordURLNonPrefetch(const GURL& url, | 134 void PrecacheDatabase::RecordURLNonPrefetch(const GURL& url, |
| 135 const base::TimeDelta& latency, | 135 const base::TimeDelta& latency, |
| 136 const base::Time& fetch_time, | 136 const base::Time& fetch_time, |
| 137 int64 size, | 137 int64_t size, |
| 138 bool was_cached, | 138 bool was_cached, |
| 139 int host_rank, | 139 int host_rank, |
| 140 bool is_connection_cellular) { | 140 bool is_connection_cellular) { |
| 141 UMA_HISTOGRAM_TIMES("Precache.Latency.NonPrefetch", latency); | 141 UMA_HISTOGRAM_TIMES("Precache.Latency.NonPrefetch", latency); |
| 142 | 142 |
| 143 if (host_rank != history::kMaxTopHosts) { | 143 if (host_rank != history::kMaxTopHosts) { |
| 144 // The resource was loaded on a page that could have been affected by | 144 // The resource was loaded on a page that could have been affected by |
| 145 // precaching. | 145 // precaching. |
| 146 UMA_HISTOGRAM_TIMES("Precache.Latency.NonPrefetch.TopHosts", latency); | 146 UMA_HISTOGRAM_TIMES("Precache.Latency.NonPrefetch.TopHosts", latency); |
| 147 } else { | 147 } else { |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 253 // database writes can be buffered up and flushed together in the same | 253 // database writes can be buffered up and flushed together in the same |
| 254 // transaction. | 254 // transaction. |
| 255 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 255 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| 256 FROM_HERE, base::Bind(&PrecacheDatabase::PostedFlush, | 256 FROM_HERE, base::Bind(&PrecacheDatabase::PostedFlush, |
| 257 scoped_refptr<PrecacheDatabase>(this)), | 257 scoped_refptr<PrecacheDatabase>(this)), |
| 258 base::TimeDelta::FromSeconds(1)); | 258 base::TimeDelta::FromSeconds(1)); |
| 259 is_flush_posted_ = true; | 259 is_flush_posted_ = true; |
| 260 } | 260 } |
| 261 | 261 |
| 262 } // namespace precache | 262 } // namespace precache |
| OLD | NEW |