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

Side by Side Diff: components/offline_pages/offline_page_model_impl.cc

Issue 2322833002: Support serving offline page by offline ID (Closed)
Patch Set: Remove unused variable to fix trybot Created 4 years, 3 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
« no previous file with comments | « components/offline_pages/offline_page_model_impl.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/offline_pages/offline_page_model_impl.h" 5 #include "components/offline_pages/offline_page_model_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/files/file_util.h" 11 #include "base/files/file_util.h"
12 #include "base/location.h" 12 #include "base/location.h"
13 #include "base/logging.h" 13 #include "base/logging.h"
14 #include "base/metrics/histogram_macros.h" 14 #include "base/metrics/histogram_macros.h"
15 #include "base/rand_util.h" 15 #include "base/rand_util.h"
16 #include "base/sequenced_task_runner.h" 16 #include "base/sequenced_task_runner.h"
17 #include "base/strings/string16.h" 17 #include "base/strings/string16.h"
18 #include "base/strings/string_number_conversions.h" 18 #include "base/strings/string_number_conversions.h"
19 #include "base/threading/thread_task_runner_handle.h" 19 #include "base/threading/thread_task_runner_handle.h"
20 #include "base/time/clock.h"
20 #include "base/time/time.h" 21 #include "base/time/time.h"
21 #include "components/offline_pages/archive_manager.h" 22 #include "components/offline_pages/archive_manager.h"
22 #include "components/offline_pages/client_namespace_constants.h" 23 #include "components/offline_pages/client_namespace_constants.h"
23 #include "components/offline_pages/client_policy_controller.h" 24 #include "components/offline_pages/client_policy_controller.h"
24 #include "components/offline_pages/offline_page_item.h" 25 #include "components/offline_pages/offline_page_item.h"
25 #include "components/offline_pages/offline_page_storage_manager.h" 26 #include "components/offline_pages/offline_page_storage_manager.h"
26 #include "url/gurl.h" 27 #include "url/gurl.h"
27 28
28 using ArchiverResult = offline_pages::OfflinePageArchiver::ArchiverResult; 29 using ArchiverResult = offline_pages::OfflinePageArchiver::ArchiverResult;
29 using ClearStorageCallback = 30 using ClearStorageCallback =
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 // Note: The factory creates and owns the histogram. 144 // Note: The factory creates and owns the histogram.
144 base::HistogramBase* histogram = base::LinearHistogram::FactoryGet( 145 base::HistogramBase* histogram = base::LinearHistogram::FactoryGet(
145 AddHistogramSuffix(client_id, "OfflinePages.SavePageResult"), 146 AddHistogramSuffix(client_id, "OfflinePages.SavePageResult"),
146 1, 147 1,
147 static_cast<int>(SavePageResult::RESULT_COUNT), 148 static_cast<int>(SavePageResult::RESULT_COUNT),
148 static_cast<int>(SavePageResult::RESULT_COUNT) + 1, 149 static_cast<int>(SavePageResult::RESULT_COUNT) + 1,
149 base::HistogramBase::kUmaTargetedHistogramFlag); 150 base::HistogramBase::kUmaTargetedHistogramFlag);
150 histogram->Add(static_cast<int>(result)); 151 histogram->Add(static_cast<int>(result));
151 } 152 }
152 153
153 void ReportPageHistogramAfterSave(const OfflinePageItem& offline_page) { 154 void ReportPageHistogramAfterSave(const OfflinePageItem& offline_page,
155 const base::Time& save_time) {
154 // The histogram below is an expansion of the UMA_HISTOGRAM_TIMES 156 // The histogram below is an expansion of the UMA_HISTOGRAM_TIMES
155 // macro adapted to allow for a dynamically suffixed histogram name. 157 // macro adapted to allow for a dynamically suffixed histogram name.
156 // Note: The factory creates and owns the histogram. 158 // Note: The factory creates and owns the histogram.
157 base::HistogramBase* histogram = base::Histogram::FactoryTimeGet( 159 base::HistogramBase* histogram = base::Histogram::FactoryTimeGet(
158 AddHistogramSuffix(offline_page.client_id, "OfflinePages.SavePageTime"), 160 AddHistogramSuffix(offline_page.client_id, "OfflinePages.SavePageTime"),
159 base::TimeDelta::FromMilliseconds(1), base::TimeDelta::FromSeconds(10), 161 base::TimeDelta::FromMilliseconds(1), base::TimeDelta::FromSeconds(10),
160 50, base::HistogramBase::kUmaTargetedHistogramFlag); 162 50, base::HistogramBase::kUmaTargetedHistogramFlag);
161 histogram->AddTime(base::Time::Now() - offline_page.creation_time); 163 histogram->AddTime(save_time - offline_page.creation_time);
162 164
163 // The histogram below is an expansion of the UMA_HISTOGRAM_CUSTOM_COUNTS 165 // The histogram below is an expansion of the UMA_HISTOGRAM_CUSTOM_COUNTS
164 // macro adapted to allow for a dynamically suffixed histogram name. 166 // macro adapted to allow for a dynamically suffixed histogram name.
165 // Note: The factory creates and owns the histogram. 167 // Note: The factory creates and owns the histogram.
166 // Reported as Kb between 1Kb and 10Mb. 168 // Reported as Kb between 1Kb and 10Mb.
167 histogram = base::Histogram::FactoryGet( 169 histogram = base::Histogram::FactoryGet(
168 AddHistogramSuffix(offline_page.client_id, "OfflinePages.PageSize"), 170 AddHistogramSuffix(offline_page.client_id, "OfflinePages.PageSize"),
169 1, 10000, 50, base::HistogramBase::kUmaTargetedHistogramFlag); 171 1, 10000, 50, base::HistogramBase::kUmaTargetedHistogramFlag);
170 histogram->Add(offline_page.file_size / 1024); 172 histogram->Add(offline_page.file_size / 1024);
171 } 173 }
172 174
173 void ReportPageHistogramsAfterDelete( 175 void ReportPageHistogramsAfterDelete(
174 const std::map<int64_t, OfflinePageItem>& offline_pages, 176 const std::map<int64_t, OfflinePageItem>& offline_pages,
175 const std::vector<int64_t>& deleted_offline_ids) { 177 const std::vector<int64_t>& deleted_offline_ids,
178 const base::Time& delete_time) {
176 const int max_minutes = base::TimeDelta::FromDays(365).InMinutes(); 179 const int max_minutes = base::TimeDelta::FromDays(365).InMinutes();
177 base::Time now = base::Time::Now();
178 int64_t total_size = 0; 180 int64_t total_size = 0;
179 for (int64_t offline_id : deleted_offline_ids) { 181 for (int64_t offline_id : deleted_offline_ids) {
180 auto iter = offline_pages.find(offline_id); 182 auto iter = offline_pages.find(offline_id);
181 if (iter == offline_pages.end()) 183 if (iter == offline_pages.end())
182 continue; 184 continue;
183 total_size += iter->second.file_size; 185 total_size += iter->second.file_size;
184 ClientId client_id = iter->second.client_id; 186 ClientId client_id = iter->second.client_id;
185 187
186 // The histograms below are an expansion of the UMA_HISTOGRAM_CUSTOM_COUNTS 188 // The histograms below are an expansion of the UMA_HISTOGRAM_CUSTOM_COUNTS
187 // macro adapted to allow for a dynamically suffixed histogram name. 189 // macro adapted to allow for a dynamically suffixed histogram name.
188 // Note: The factory creates and owns the histogram. 190 // Note: The factory creates and owns the histogram.
189 base::HistogramBase* histogram = base::Histogram::FactoryGet( 191 base::HistogramBase* histogram = base::Histogram::FactoryGet(
190 AddHistogramSuffix(client_id, "OfflinePages.PageLifetime"), 192 AddHistogramSuffix(client_id, "OfflinePages.PageLifetime"),
191 1, max_minutes, 100, base::HistogramBase::kUmaTargetedHistogramFlag); 193 1, max_minutes, 100, base::HistogramBase::kUmaTargetedHistogramFlag);
192 histogram->Add((now - iter->second.creation_time).InMinutes()); 194 histogram->Add((delete_time - iter->second.creation_time).InMinutes());
193 195
194 histogram = base::Histogram::FactoryGet( 196 histogram = base::Histogram::FactoryGet(
195 AddHistogramSuffix( 197 AddHistogramSuffix(
196 client_id, "OfflinePages.DeletePage.TimeSinceLastOpen"), 198 client_id, "OfflinePages.DeletePage.TimeSinceLastOpen"),
197 1, max_minutes, 100, base::HistogramBase::kUmaTargetedHistogramFlag); 199 1, max_minutes, 100, base::HistogramBase::kUmaTargetedHistogramFlag);
198 histogram->Add((now - iter->second.last_access_time).InMinutes()); 200 histogram->Add((delete_time - iter->second.last_access_time).InMinutes());
199 201
200 histogram = base::Histogram::FactoryGet( 202 histogram = base::Histogram::FactoryGet(
201 AddHistogramSuffix( 203 AddHistogramSuffix(
202 client_id, "OfflinePages.DeletePage.LastOpenToCreated"), 204 client_id, "OfflinePages.DeletePage.LastOpenToCreated"),
203 1, max_minutes, 100, base::HistogramBase::kUmaTargetedHistogramFlag); 205 1, max_minutes, 100, base::HistogramBase::kUmaTargetedHistogramFlag);
204 histogram->Add( 206 histogram->Add(
205 (iter->second.last_access_time - iter->second.creation_time). 207 (iter->second.last_access_time - iter->second.creation_time).
206 InMinutes()); 208 InMinutes());
207 209
208 // Reported as Kb between 1Kb and 10Mb. 210 // Reported as Kb between 1Kb and 10Mb.
209 histogram = base::Histogram::FactoryGet( 211 histogram = base::Histogram::FactoryGet(
210 AddHistogramSuffix(client_id, "OfflinePages.DeletePage.PageSize"), 212 AddHistogramSuffix(client_id, "OfflinePages.DeletePage.PageSize"),
211 1, 10000, 50, base::HistogramBase::kUmaTargetedHistogramFlag); 213 1, 10000, 50, base::HistogramBase::kUmaTargetedHistogramFlag);
212 histogram->Add(iter->second.file_size / 1024); 214 histogram->Add(iter->second.file_size / 1024);
213 215
214 histogram = base::Histogram::FactoryGet( 216 histogram = base::Histogram::FactoryGet(
215 AddHistogramSuffix(client_id, "OfflinePages.DeletePage.AccessCount"), 217 AddHistogramSuffix(client_id, "OfflinePages.DeletePage.AccessCount"),
216 1, 1000000, 50, base::HistogramBase::kUmaTargetedHistogramFlag); 218 1, 1000000, 50, base::HistogramBase::kUmaTargetedHistogramFlag);
217 histogram->Add(iter->second.access_count); 219 histogram->Add(iter->second.access_count);
218 } 220 }
219 221
220 if (deleted_offline_ids.size() > 1) { 222 if (deleted_offline_ids.size() > 1) {
221 UMA_HISTOGRAM_COUNTS("OfflinePages.BatchDelete.Count", 223 UMA_HISTOGRAM_COUNTS("OfflinePages.BatchDelete.Count",
222 static_cast<int32_t>(deleted_offline_ids.size())); 224 static_cast<int32_t>(deleted_offline_ids.size()));
223 UMA_HISTOGRAM_MEMORY_KB( 225 UMA_HISTOGRAM_MEMORY_KB(
224 "OfflinePages.BatchDelete.TotalPageSize", total_size / 1024); 226 "OfflinePages.BatchDelete.TotalPageSize", total_size / 1024);
225 } 227 }
226 } 228 }
227 229
228 void ReportPageHistogramsAfterAccess(const OfflinePageItem& offline_page_item) { 230 void ReportPageHistogramsAfterAccess(const OfflinePageItem& offline_page_item,
231 const base::Time& access_time) {
229 // The histogram below is an expansion of the UMA_HISTOGRAM_CUSTOM_COUNTS 232 // The histogram below is an expansion of the UMA_HISTOGRAM_CUSTOM_COUNTS
230 // macro adapted to allow for a dynamically suffixed histogram name. 233 // macro adapted to allow for a dynamically suffixed histogram name.
231 // Note: The factory creates and owns the histogram. 234 // Note: The factory creates and owns the histogram.
232 base::HistogramBase* histogram = base::Histogram::FactoryGet( 235 base::HistogramBase* histogram = base::Histogram::FactoryGet(
233 AddHistogramSuffix( 236 AddHistogramSuffix(
234 offline_page_item.client_id, 237 offline_page_item.client_id,
235 offline_page_item.access_count == 0 ? 238 offline_page_item.access_count == 0 ?
236 "OfflinePages.FirstOpenSinceCreated" : 239 "OfflinePages.FirstOpenSinceCreated" :
237 "OfflinePages.OpenSinceLastOpen"), 240 "OfflinePages.OpenSinceLastOpen"),
238 1, kMaxOpenedPageHistogramBucket.InMinutes(), 50, 241 1, kMaxOpenedPageHistogramBucket.InMinutes(), 50,
239 base::HistogramBase::kUmaTargetedHistogramFlag); 242 base::HistogramBase::kUmaTargetedHistogramFlag);
240 histogram->Add( 243 histogram->Add(
241 (base::Time::Now() - offline_page_item.last_access_time).InMinutes()); 244 (access_time - offline_page_item.last_access_time).InMinutes());
242 } 245 }
243 246
244 } // namespace 247 } // namespace
245 248
246 // protected 249 // protected
247 OfflinePageModelImpl::OfflinePageModelImpl() 250 OfflinePageModelImpl::OfflinePageModelImpl()
248 : OfflinePageModel(), is_loaded_(false), weak_ptr_factory_(this) {} 251 : OfflinePageModel(), is_loaded_(false), weak_ptr_factory_(this) {}
249 252
250 OfflinePageModelImpl::OfflinePageModelImpl( 253 OfflinePageModelImpl::OfflinePageModelImpl(
251 std::unique_ptr<OfflinePageMetadataStore> store, 254 std::unique_ptr<OfflinePageMetadataStore> store,
252 const base::FilePath& archives_dir, 255 const base::FilePath& archives_dir,
253 const scoped_refptr<base::SequencedTaskRunner>& task_runner) 256 const scoped_refptr<base::SequencedTaskRunner>& task_runner)
254 : store_(std::move(store)), 257 : store_(std::move(store)),
255 archives_dir_(archives_dir), 258 archives_dir_(archives_dir),
256 is_loaded_(false), 259 is_loaded_(false),
257 policy_controller_(new ClientPolicyController()), 260 policy_controller_(new ClientPolicyController()),
258 archive_manager_(new ArchiveManager(archives_dir, task_runner)), 261 archive_manager_(new ArchiveManager(archives_dir, task_runner)),
262 testing_clock_(nullptr),
259 weak_ptr_factory_(this) { 263 weak_ptr_factory_(this) {
260 archive_manager_->EnsureArchivesDirCreated( 264 archive_manager_->EnsureArchivesDirCreated(
261 base::Bind(&OfflinePageModelImpl::OnEnsureArchivesDirCreatedDone, 265 base::Bind(&OfflinePageModelImpl::OnEnsureArchivesDirCreatedDone,
262 weak_ptr_factory_.GetWeakPtr(), base::TimeTicks::Now())); 266 weak_ptr_factory_.GetWeakPtr(), base::TimeTicks::Now()));
263 } 267 }
264 268
265 OfflinePageModelImpl::~OfflinePageModelImpl() {} 269 OfflinePageModelImpl::~OfflinePageModelImpl() {}
266 270
267 void OfflinePageModelImpl::AddObserver(Observer* observer) { 271 void OfflinePageModelImpl::AddObserver(Observer* observer) {
268 observers_.AddObserver(observer); 272 observers_.AddObserver(observer);
(...skipping 27 matching lines...) Expand all
296 } 300 }
297 301
298 // If we already have an offline id, use it. If not, generate one. 302 // If we already have an offline id, use it. If not, generate one.
299 if (proposed_offline_id == 0l) 303 if (proposed_offline_id == 0l)
300 proposed_offline_id = GenerateOfflineId(); 304 proposed_offline_id = GenerateOfflineId();
301 305
302 archiver->CreateArchive( 306 archiver->CreateArchive(
303 archives_dir_, proposed_offline_id, 307 archives_dir_, proposed_offline_id,
304 base::Bind(&OfflinePageModelImpl::OnCreateArchiveDone, 308 base::Bind(&OfflinePageModelImpl::OnCreateArchiveDone,
305 weak_ptr_factory_.GetWeakPtr(), url, proposed_offline_id, 309 weak_ptr_factory_.GetWeakPtr(), url, proposed_offline_id,
306 client_id, base::Time::Now(), callback)); 310 client_id, GetCurrentTime(), callback));
307 pending_archivers_.push_back(std::move(archiver)); 311 pending_archivers_.push_back(std::move(archiver));
308 } 312 }
309 313
310 void OfflinePageModelImpl::MarkPageAccessed(int64_t offline_id) { 314 void OfflinePageModelImpl::MarkPageAccessed(int64_t offline_id) {
311 RunWhenLoaded(base::Bind(&OfflinePageModelImpl::MarkPageAccessedWhenLoadDone, 315 RunWhenLoaded(base::Bind(&OfflinePageModelImpl::MarkPageAccessedWhenLoadDone,
312 weak_ptr_factory_.GetWeakPtr(), offline_id)); 316 weak_ptr_factory_.GetWeakPtr(), offline_id));
313 } 317 }
314 318
315 void OfflinePageModelImpl::MarkPageAccessedWhenLoadDone(int64_t offline_id) { 319 void OfflinePageModelImpl::MarkPageAccessedWhenLoadDone(int64_t offline_id) {
316 DCHECK(is_loaded_); 320 DCHECK(is_loaded_);
317 321
318 auto iter = offline_pages_.find(offline_id); 322 auto iter = offline_pages_.find(offline_id);
319 if (iter == offline_pages_.end() || iter->second.IsExpired()) 323 if (iter == offline_pages_.end() || iter->second.IsExpired())
320 return; 324 return;
321 325
322 // Make a copy of the cached item and update it. The cached item should only 326 // Make a copy of the cached item and update it. The cached item should only
323 // be updated upon the successful store operation. 327 // be updated upon the successful store operation.
324 OfflinePageItem offline_page_item = iter->second; 328 OfflinePageItem offline_page_item = iter->second;
325 329
326 ReportPageHistogramsAfterAccess(offline_page_item); 330 ReportPageHistogramsAfterAccess(offline_page_item, GetCurrentTime());
327 331
328 offline_page_item.last_access_time = base::Time::Now(); 332 offline_page_item.last_access_time = GetCurrentTime();
329 offline_page_item.access_count++; 333 offline_page_item.access_count++;
330 334
331 store_->AddOrUpdateOfflinePage( 335 store_->AddOrUpdateOfflinePage(
332 offline_page_item, 336 offline_page_item,
333 base::Bind(&OfflinePageModelImpl::OnMarkPageAccesseDone, 337 base::Bind(&OfflinePageModelImpl::OnMarkPageAccesseDone,
334 weak_ptr_factory_.GetWeakPtr(), offline_page_item)); 338 weak_ptr_factory_.GetWeakPtr(), offline_page_item));
335 } 339 }
336 340
337 void OfflinePageModelImpl::DeletePagesByOfflineId( 341 void OfflinePageModelImpl::DeletePagesByOfflineId(
338 const std::vector<int64_t>& offline_ids, 342 const std::vector<int64_t>& offline_ids,
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
729 733
730 void OfflinePageModelImpl::OnAddOfflinePageDone( 734 void OfflinePageModelImpl::OnAddOfflinePageDone(
731 OfflinePageArchiver* archiver, 735 OfflinePageArchiver* archiver,
732 const SavePageCallback& callback, 736 const SavePageCallback& callback,
733 const OfflinePageItem& offline_page, 737 const OfflinePageItem& offline_page,
734 bool success) { 738 bool success) {
735 SavePageResult result; 739 SavePageResult result;
736 if (success) { 740 if (success) {
737 offline_pages_[offline_page.offline_id] = offline_page; 741 offline_pages_[offline_page.offline_id] = offline_page;
738 result = SavePageResult::SUCCESS; 742 result = SavePageResult::SUCCESS;
739 ReportPageHistogramAfterSave(offline_page); 743 ReportPageHistogramAfterSave(offline_page, GetCurrentTime());
740 offline_event_logger_.RecordPageSaved( 744 offline_event_logger_.RecordPageSaved(
741 offline_page.client_id.name_space, offline_page.url.spec(), 745 offline_page.client_id.name_space, offline_page.url.spec(),
742 std::to_string(offline_page.offline_id)); 746 std::to_string(offline_page.offline_id));
743 } else { 747 } else {
744 result = SavePageResult::STORE_FAILURE; 748 result = SavePageResult::STORE_FAILURE;
745 } 749 }
746 InformSavePageDone(callback, result, offline_page.client_id, 750 InformSavePageDone(callback, result, offline_page.client_id,
747 offline_page.offline_id); 751 offline_page.offline_id);
748 if (result == SavePageResult::SUCCESS) { 752 if (result == SavePageResult::SUCCESS) {
749 DeleteExistingPagesWithSameURL(offline_page); 753 DeleteExistingPagesWithSameURL(offline_page);
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
888 store_->RemoveOfflinePages( 892 store_->RemoveOfflinePages(
889 offline_ids, 893 offline_ids,
890 base::Bind(&OfflinePageModelImpl::OnRemoveOfflinePagesDone, 894 base::Bind(&OfflinePageModelImpl::OnRemoveOfflinePagesDone,
891 weak_ptr_factory_.GetWeakPtr(), offline_ids, callback)); 895 weak_ptr_factory_.GetWeakPtr(), offline_ids, callback));
892 } 896 }
893 897
894 void OfflinePageModelImpl::OnRemoveOfflinePagesDone( 898 void OfflinePageModelImpl::OnRemoveOfflinePagesDone(
895 const std::vector<int64_t>& offline_ids, 899 const std::vector<int64_t>& offline_ids,
896 const DeletePageCallback& callback, 900 const DeletePageCallback& callback,
897 bool success) { 901 bool success) {
898 ReportPageHistogramsAfterDelete(offline_pages_, offline_ids); 902 ReportPageHistogramsAfterDelete(
903 offline_pages_, offline_ids, GetCurrentTime());
899 904
900 for (int64_t offline_id : offline_ids) { 905 for (int64_t offline_id : offline_ids) {
901 offline_event_logger_.RecordPageDeleted(std::to_string(offline_id)); 906 offline_event_logger_.RecordPageDeleted(std::to_string(offline_id));
902 auto iter = offline_pages_.find(offline_id); 907 auto iter = offline_pages_.find(offline_id);
903 if (iter == offline_pages_.end()) 908 if (iter == offline_pages_.end())
904 continue; 909 continue;
905 FOR_EACH_OBSERVER( 910 FOR_EACH_OBSERVER(
906 Observer, observers_, 911 Observer, observers_,
907 OfflinePageDeleted(iter->second.offline_id, iter->second.client_id)); 912 OfflinePageDeleted(iter->second.offline_id, iter->second.client_id));
908 offline_pages_.erase(iter); 913 offline_pages_.erase(iter);
(...skipping 28 matching lines...) Expand all
937 std::vector<int64_t> ids_of_pages_missing_archive_file; 942 std::vector<int64_t> ids_of_pages_missing_archive_file;
938 for (const auto& id_page_pair : offline_pages_) { 943 for (const auto& id_page_pair : offline_pages_) {
939 if (archive_paths.count(id_page_pair.second.file_path) == 0UL) 944 if (archive_paths.count(id_page_pair.second.file_path) == 0UL)
940 ids_of_pages_missing_archive_file.push_back(id_page_pair.first); 945 ids_of_pages_missing_archive_file.push_back(id_page_pair.first);
941 } 946 }
942 947
943 if (ids_of_pages_missing_archive_file.empty()) 948 if (ids_of_pages_missing_archive_file.empty())
944 return; 949 return;
945 950
946 ExpirePages( 951 ExpirePages(
947 ids_of_pages_missing_archive_file, base::Time::Now(), 952 ids_of_pages_missing_archive_file, GetCurrentTime(),
948 base::Bind(&OfflinePageModelImpl::OnExpirePagesMissingArchiveFileDone, 953 base::Bind(&OfflinePageModelImpl::OnExpirePagesMissingArchiveFileDone,
949 weak_ptr_factory_.GetWeakPtr(), 954 weak_ptr_factory_.GetWeakPtr(),
950 ids_of_pages_missing_archive_file)); 955 ids_of_pages_missing_archive_file));
951 } 956 }
952 957
953 void OfflinePageModelImpl::OnExpirePagesMissingArchiveFileDone( 958 void OfflinePageModelImpl::OnExpirePagesMissingArchiveFileDone(
954 const std::vector<int64_t>& offline_ids, 959 const std::vector<int64_t>& offline_ids,
955 bool success) { 960 bool success) {
956 UMA_HISTOGRAM_COUNTS("OfflinePages.Consistency.PagesMissingArchiveFileCount", 961 UMA_HISTOGRAM_COUNTS("OfflinePages.Consistency.PagesMissingArchiveFileCount",
957 static_cast<int32_t>(offline_ids.size())); 962 static_cast<int32_t>(offline_ids.size()));
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
1069 1074
1070 void OfflinePageModelImpl::RunWhenLoaded(const base::Closure& task) { 1075 void OfflinePageModelImpl::RunWhenLoaded(const base::Closure& task) {
1071 if (!is_loaded_) { 1076 if (!is_loaded_) {
1072 delayed_tasks_.push_back(task); 1077 delayed_tasks_.push_back(task);
1073 return; 1078 return;
1074 } 1079 }
1075 1080
1076 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, task); 1081 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, task);
1077 } 1082 }
1078 1083
1084 base::Time OfflinePageModelImpl::GetCurrentTime() const {
1085 return testing_clock_ ? testing_clock_->Now() : base::Time::Now();
1086 }
1087
1079 } // namespace offline_pages 1088 } // namespace offline_pages
OLDNEW
« no previous file with comments | « components/offline_pages/offline_page_model_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698