| 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 5bf1e9352548f464fa86fd69a9295831694e8169..ffb82e3b152691b54883b8edbc93825b81399d1b 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/clock.h"
|
| #include "base/time/time.h"
|
| #include "components/offline_pages/archive_manager.h"
|
| #include "components/offline_pages/client_namespace_constants.h"
|
| @@ -193,7 +194,8 @@ bool GetMatchingURLCountAndMostRecentCreationTime(
|
|
|
| void ReportPageHistogramAfterSave(
|
| const std::map<int64_t, OfflinePageItem>& offline_pages,
|
| - const OfflinePageItem& offline_page) {
|
| + const OfflinePageItem& offline_page,
|
| + const base::Time& save_time) {
|
| // 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.
|
| @@ -201,7 +203,7 @@ void ReportPageHistogramAfterSave(
|
| 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(save_time - 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.
|
| @@ -234,9 +236,9 @@ void ReportPageHistogramAfterSave(
|
|
|
| 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,
|
| + const base::Time& delete_time) {
|
| const int max_minutes = base::TimeDelta::FromDays(365).InMinutes();
|
| - base::Time now = base::Time::Now();
|
| int64_t total_size = 0;
|
| for (int64_t offline_id : deleted_offline_ids) {
|
| auto iter = offline_pages.find(offline_id);
|
| @@ -262,13 +264,13 @@ void ReportPageHistogramsAfterDelete(
|
| base::HistogramBase* histogram = base::Histogram::FactoryGet(
|
| AddHistogramSuffix(client_id, "OfflinePages.PageLifetime"),
|
| 1, max_minutes, 100, base::HistogramBase::kUmaTargetedHistogramFlag);
|
| - histogram->Add((now - iter->second.creation_time).InMinutes());
|
| + histogram->Add((delete_time - iter->second.creation_time).InMinutes());
|
|
|
| histogram = base::Histogram::FactoryGet(
|
| AddHistogramSuffix(
|
| client_id, "OfflinePages.DeletePage.TimeSinceLastOpen"),
|
| 1, max_minutes, 100, base::HistogramBase::kUmaTargetedHistogramFlag);
|
| - histogram->Add((now - iter->second.last_access_time).InMinutes());
|
| + histogram->Add((delete_time - iter->second.last_access_time).InMinutes());
|
|
|
| histogram = base::Histogram::FactoryGet(
|
| AddHistogramSuffix(
|
| @@ -298,7 +300,8 @@ void ReportPageHistogramsAfterDelete(
|
| }
|
| }
|
|
|
| -void ReportPageHistogramsAfterAccess(const OfflinePageItem& offline_page_item) {
|
| +void ReportPageHistogramsAfterAccess(const OfflinePageItem& offline_page_item,
|
| + const base::Time& access_time) {
|
| // 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.
|
| @@ -311,7 +314,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());
|
| + (access_time - offline_page_item.last_access_time).InMinutes());
|
| }
|
|
|
| } // namespace
|
| @@ -329,6 +332,7 @@ OfflinePageModelImpl::OfflinePageModelImpl(
|
| is_loaded_(false),
|
| policy_controller_(new ClientPolicyController()),
|
| archive_manager_(new ArchiveManager(archives_dir, task_runner)),
|
| + testing_clock_(nullptr),
|
| weak_ptr_factory_(this) {
|
| archive_manager_->EnsureArchivesDirCreated(
|
| base::Bind(&OfflinePageModelImpl::OnEnsureArchivesDirCreatedDone,
|
| @@ -376,7 +380,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, GetCurrentTime(), callback));
|
| pending_archivers_.push_back(std::move(archiver));
|
| }
|
|
|
| @@ -396,9 +400,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, GetCurrentTime());
|
|
|
| - offline_page_item.last_access_time = base::Time::Now();
|
| + offline_page_item.last_access_time = GetCurrentTime();
|
| offline_page_item.access_count++;
|
|
|
| store_->AddOrUpdateOfflinePage(
|
| @@ -809,7 +813,8 @@ void OfflinePageModelImpl::OnAddOfflinePageDone(
|
| if (success) {
|
| offline_pages_[offline_page.offline_id] = offline_page;
|
| result = SavePageResult::SUCCESS;
|
| - ReportPageHistogramAfterSave(offline_pages_, offline_page);
|
| + ReportPageHistogramAfterSave(offline_pages_, offline_page,
|
| + GetCurrentTime());
|
| offline_event_logger_.RecordPageSaved(
|
| offline_page.client_id.name_space, offline_page.url.spec(),
|
| std::to_string(offline_page.offline_id));
|
| @@ -968,7 +973,8 @@ 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, GetCurrentTime());
|
|
|
| for (int64_t offline_id : offline_ids) {
|
| offline_event_logger_.RecordPageDeleted(std::to_string(offline_id));
|
| @@ -1017,7 +1023,7 @@ void OfflinePageModelImpl::ExpirePagesMissingArchiveFile(
|
| return;
|
|
|
| ExpirePages(
|
| - ids_of_pages_missing_archive_file, base::Time::Now(),
|
| + ids_of_pages_missing_archive_file, GetCurrentTime(),
|
| base::Bind(&OfflinePageModelImpl::OnExpirePagesMissingArchiveFileDone,
|
| weak_ptr_factory_.GetWeakPtr(),
|
| ids_of_pages_missing_archive_file));
|
| @@ -1149,4 +1155,8 @@ void OfflinePageModelImpl::RunWhenLoaded(const base::Closure& task) {
|
| base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, task);
|
| }
|
|
|
| +base::Time OfflinePageModelImpl::GetCurrentTime() const {
|
| + return testing_clock_ ? testing_clock_->Now() : base::Time::Now();
|
| +}
|
| +
|
| } // namespace offline_pages
|
|
|