Index: components/offline_pages/offline_page_model_impl.cc |
diff --git a/components/offline_pages/offline_page_model_impl.cc b/components/offline_pages/offline_page_model_impl.cc |
index 25f2e08a68de91249597a5a83ee048cdcde3bb42..01f10797fe48bf512e933059c1096d013598f562 100644 |
--- a/components/offline_pages/offline_page_model_impl.cc |
+++ b/components/offline_pages/offline_page_model_impl.cc |
@@ -17,6 +17,7 @@ |
#include "base/strings/string16.h" |
#include "base/strings/string_number_conversions.h" |
#include "base/threading/thread_task_runner_handle.h" |
+#include "base/time/default_clock.h" |
#include "base/time/time.h" |
#include "components/offline_pages/archive_manager.h" |
#include "components/offline_pages/client_namespace_constants.h" |
@@ -150,7 +151,8 @@ void ReportSavePageResultHistogramAfterSave(const ClientId& client_id, |
histogram->Add(static_cast<int>(result)); |
} |
-void ReportPageHistogramAfterSave(const OfflinePageItem& offline_page) { |
+void ReportPageHistogramAfterSave(const OfflinePageItem& offline_page, |
+ base::Clock* clock) { |
// The histogram below is an expansion of the UMA_HISTOGRAM_TIMES |
// macro adapted to allow for a dynamically suffixed histogram name. |
// Note: The factory creates and owns the histogram. |
@@ -158,7 +160,7 @@ void ReportPageHistogramAfterSave(const OfflinePageItem& offline_page) { |
AddHistogramSuffix(offline_page.client_id, "OfflinePages.SavePageTime"), |
base::TimeDelta::FromMilliseconds(1), base::TimeDelta::FromSeconds(10), |
50, base::HistogramBase::kUmaTargetedHistogramFlag); |
- histogram->AddTime(base::Time::Now() - offline_page.creation_time); |
+ histogram->AddTime(clock->Now() - offline_page.creation_time); |
// The histogram below is an expansion of the UMA_HISTOGRAM_CUSTOM_COUNTS |
// macro adapted to allow for a dynamically suffixed histogram name. |
@@ -172,9 +174,10 @@ void ReportPageHistogramAfterSave(const OfflinePageItem& offline_page) { |
void ReportPageHistogramsAfterDelete( |
const std::map<int64_t, OfflinePageItem>& offline_pages, |
- const std::vector<int64_t>& deleted_offline_ids) { |
+ const std::vector<int64_t>& deleted_offline_ids, |
+ base::Clock* clock) { |
const int max_minutes = base::TimeDelta::FromDays(365).InMinutes(); |
- base::Time now = base::Time::Now(); |
+ base::Time now = clock->Now(); |
int64_t total_size = 0; |
for (int64_t offline_id : deleted_offline_ids) { |
auto iter = offline_pages.find(offline_id); |
@@ -225,7 +228,8 @@ void ReportPageHistogramsAfterDelete( |
} |
} |
-void ReportPageHistogramsAfterAccess(const OfflinePageItem& offline_page_item) { |
+void ReportPageHistogramsAfterAccess(const OfflinePageItem& offline_page_item, |
+ base::Clock* clock) { |
// The histogram below is an expansion of the UMA_HISTOGRAM_CUSTOM_COUNTS |
// macro adapted to allow for a dynamically suffixed histogram name. |
// Note: The factory creates and owns the histogram. |
@@ -238,7 +242,7 @@ void ReportPageHistogramsAfterAccess(const OfflinePageItem& offline_page_item) { |
1, kMaxOpenedPageHistogramBucket.InMinutes(), 50, |
base::HistogramBase::kUmaTargetedHistogramFlag); |
histogram->Add( |
- (base::Time::Now() - offline_page_item.last_access_time).InMinutes()); |
+ (clock->Now() - offline_page_item.last_access_time).InMinutes()); |
} |
} // namespace |
@@ -256,6 +260,7 @@ OfflinePageModelImpl::OfflinePageModelImpl( |
is_loaded_(false), |
policy_controller_(new ClientPolicyController()), |
archive_manager_(new ArchiveManager(archives_dir, task_runner)), |
+ clock_(new base::DefaultClock()), |
weak_ptr_factory_(this) { |
archive_manager_->EnsureArchivesDirCreated( |
base::Bind(&OfflinePageModelImpl::OnEnsureArchivesDirCreatedDone, |
@@ -303,7 +308,7 @@ void OfflinePageModelImpl::SavePage( |
archives_dir_, proposed_offline_id, |
base::Bind(&OfflinePageModelImpl::OnCreateArchiveDone, |
weak_ptr_factory_.GetWeakPtr(), url, proposed_offline_id, |
- client_id, base::Time::Now(), callback)); |
+ client_id, clock_->Now(), callback)); |
pending_archivers_.push_back(std::move(archiver)); |
} |
@@ -323,9 +328,9 @@ void OfflinePageModelImpl::MarkPageAccessedWhenLoadDone(int64_t offline_id) { |
// be updated upon the successful store operation. |
OfflinePageItem offline_page_item = iter->second; |
- ReportPageHistogramsAfterAccess(offline_page_item); |
+ ReportPageHistogramsAfterAccess(offline_page_item, clock_.get()); |
- offline_page_item.last_access_time = base::Time::Now(); |
+ offline_page_item.last_access_time = clock_->Now(); |
offline_page_item.access_count++; |
store_->AddOrUpdateOfflinePage( |
@@ -679,6 +684,11 @@ OfflinePageMetadataStore* OfflinePageModelImpl::GetStoreForTesting() { |
return store_.get(); |
} |
+void OfflinePageModelImpl::SetClockForTesting( |
+ std::unique_ptr<base::Clock> clock) { |
+ clock_ = std::move(clock); |
+} |
+ |
OfflinePageStorageManager* OfflinePageModelImpl::GetStorageManager() { |
return storage_manager_.get(); |
} |
@@ -736,7 +746,7 @@ void OfflinePageModelImpl::OnAddOfflinePageDone( |
if (success) { |
offline_pages_[offline_page.offline_id] = offline_page; |
result = SavePageResult::SUCCESS; |
- ReportPageHistogramAfterSave(offline_page); |
+ ReportPageHistogramAfterSave(offline_page, clock_.get()); |
offline_event_logger_.RecordPageSaved( |
offline_page.client_id.name_space, offline_page.url.spec(), |
std::to_string(offline_page.offline_id)); |
@@ -895,7 +905,7 @@ void OfflinePageModelImpl::OnRemoveOfflinePagesDone( |
const std::vector<int64_t>& offline_ids, |
const DeletePageCallback& callback, |
bool success) { |
- ReportPageHistogramsAfterDelete(offline_pages_, offline_ids); |
+ ReportPageHistogramsAfterDelete(offline_pages_, offline_ids, clock_.get()); |
for (int64_t offline_id : offline_ids) { |
offline_event_logger_.RecordPageDeleted(std::to_string(offline_id)); |
@@ -944,7 +954,7 @@ void OfflinePageModelImpl::ExpirePagesMissingArchiveFile( |
return; |
ExpirePages( |
- ids_of_pages_missing_archive_file, base::Time::Now(), |
+ ids_of_pages_missing_archive_file, clock_->Now(), |
base::Bind(&OfflinePageModelImpl::OnExpirePagesMissingArchiveFileDone, |
weak_ptr_factory_.GetWeakPtr(), |
ids_of_pages_missing_archive_file)); |