| Index: components/offline_pages/offline_page_model_impl.cc
|
| diff --git a/components/offline_pages/offline_page_model.cc b/components/offline_pages/offline_page_model_impl.cc
|
| similarity index 68%
|
| copy from components/offline_pages/offline_page_model.cc
|
| copy to components/offline_pages/offline_page_model_impl.cc
|
| index beb622cafba81da6ccb0c704dd381c956dde9c9b..e8a21ba2dd8c1c314f8a9d885bc0d9fe76bf3a63 100644
|
| --- a/components/offline_pages/offline_page_model.cc
|
| +++ b/components/offline_pages/offline_page_model_impl.cc
|
| @@ -1,11 +1,11 @@
|
| -// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "components/offline_pages/offline_page_model.h"
|
| +#include "components/offline_pages/offline_page_model_impl.h"
|
|
|
| #include <algorithm>
|
| -#include <utility>
|
| +#include <limits>
|
|
|
| #include "base/bind.h"
|
| #include "base/files/file_util.h"
|
| @@ -41,6 +41,10 @@ enum ClearAllStatus {
|
| CLEAR_ALL_STATUS_COUNT
|
| };
|
|
|
| +int64_t GenerateOfflineId() {
|
| + return base::RandGenerator(std::numeric_limits<int64_t>::max()) + 1;
|
| +}
|
| +
|
| // The maximum histogram size for the metrics that measure time between views of
|
| // a given page.
|
| const base::TimeDelta kMaxOpenedPageHistogramBucket =
|
| @@ -124,16 +128,11 @@ void ReportStorageHistogramsAfterDelete(
|
|
|
| } // namespace
|
|
|
| -// static
|
| -bool OfflinePageModel::CanSavePage(const GURL& url) {
|
| - return url.SchemeIsHTTPOrHTTPS();
|
| -}
|
| -
|
| // protected
|
| -OfflinePageModel::OfflinePageModel()
|
| - : is_loaded_(false), weak_ptr_factory_(this) {}
|
| +OfflinePageModelImpl::OfflinePageModelImpl()
|
| + : OfflinePageModel(), is_loaded_(false), weak_ptr_factory_(this) {}
|
|
|
| -OfflinePageModel::OfflinePageModel(
|
| +OfflinePageModelImpl::OfflinePageModelImpl(
|
| std::unique_ptr<OfflinePageMetadataStore> store,
|
| const base::FilePath& archives_dir,
|
| const scoped_refptr<base::SequencedTaskRunner>& task_runner)
|
| @@ -144,25 +143,25 @@ OfflinePageModel::OfflinePageModel(
|
| archive_manager_(new ArchiveManager(archives_dir, task_runner)),
|
| weak_ptr_factory_(this) {
|
| archive_manager_->EnsureArchivesDirCreated(
|
| - base::Bind(&OfflinePageModel::OnEnsureArchivesDirCreatedDone,
|
| + base::Bind(&OfflinePageModelImpl::OnEnsureArchivesDirCreatedDone,
|
| weak_ptr_factory_.GetWeakPtr(), base::TimeTicks::Now()));
|
| }
|
|
|
| -OfflinePageModel::~OfflinePageModel() {
|
| -}
|
| +OfflinePageModelImpl::~OfflinePageModelImpl() {}
|
|
|
| -void OfflinePageModel::AddObserver(Observer* observer) {
|
| +void OfflinePageModelImpl::AddObserver(Observer* observer) {
|
| observers_.AddObserver(observer);
|
| }
|
|
|
| -void OfflinePageModel::RemoveObserver(Observer* observer) {
|
| +void OfflinePageModelImpl::RemoveObserver(Observer* observer) {
|
| observers_.RemoveObserver(observer);
|
| }
|
|
|
| -void OfflinePageModel::SavePage(const GURL& url,
|
| - const ClientId& client_id,
|
| - std::unique_ptr<OfflinePageArchiver> archiver,
|
| - const SavePageCallback& callback) {
|
| +void OfflinePageModelImpl::SavePage(
|
| + const GURL& url,
|
| + const ClientId& client_id,
|
| + std::unique_ptr<OfflinePageArchiver> archiver,
|
| + const SavePageCallback& callback) {
|
| DCHECK(is_loaded_);
|
|
|
| // Skip saving the page that is not intended to be saved, like local file
|
| @@ -183,15 +182,14 @@ void OfflinePageModel::SavePage(const GURL& url,
|
| int64_t offline_id = GenerateOfflineId();
|
|
|
| archiver->CreateArchive(
|
| - archives_dir_,
|
| - offline_id,
|
| - base::Bind(&OfflinePageModel::OnCreateArchiveDone,
|
| - weak_ptr_factory_.GetWeakPtr(), url, offline_id,
|
| - client_id, base::Time::Now(), callback));
|
| + archives_dir_, offline_id,
|
| + base::Bind(&OfflinePageModelImpl::OnCreateArchiveDone,
|
| + weak_ptr_factory_.GetWeakPtr(), url, offline_id, client_id,
|
| + base::Time::Now(), callback));
|
| pending_archivers_.push_back(std::move(archiver));
|
| }
|
|
|
| -void OfflinePageModel::MarkPageAccessed(int64_t offline_id) {
|
| +void OfflinePageModelImpl::MarkPageAccessed(int64_t offline_id) {
|
| DCHECK(is_loaded_);
|
| auto iter = offline_pages_.find(offline_id);
|
| if (iter == offline_pages_.end())
|
| @@ -208,11 +206,11 @@ void OfflinePageModel::MarkPageAccessed(int64_t offline_id) {
|
| // When the access account is still zero, the page is opened for the first
|
| // time since its creation.
|
| UMA_HISTOGRAM_CUSTOM_COUNTS(
|
| - AddHistogramSuffix(
|
| - offline_page_item.client_id,
|
| - (offline_page_item.access_count == 0) ?
|
| - "OfflinePages.FirstOpenSinceCreated" :
|
| - "OfflinePages.OpenSinceLastOpen").c_str(),
|
| + AddHistogramSuffix(offline_page_item.client_id,
|
| + (offline_page_item.access_count == 0)
|
| + ? "OfflinePages.FirstOpenSinceCreated"
|
| + : "OfflinePages.OpenSinceLastOpen")
|
| + .c_str(),
|
| time_since_last_accessed.InMinutes(), 1,
|
| kMaxOpenedPageHistogramBucket.InMinutes(), 50);
|
|
|
| @@ -221,16 +219,16 @@ void OfflinePageModel::MarkPageAccessed(int64_t offline_id) {
|
|
|
| store_->AddOrUpdateOfflinePage(
|
| offline_page_item,
|
| - base::Bind(&OfflinePageModel::OnMarkPageAccesseDone,
|
| + base::Bind(&OfflinePageModelImpl::OnMarkPageAccesseDone,
|
| weak_ptr_factory_.GetWeakPtr(), offline_page_item));
|
| }
|
|
|
| -void OfflinePageModel::DeletePagesByOfflineId(
|
| +void OfflinePageModelImpl::DeletePagesByOfflineId(
|
| const std::vector<int64_t>& offline_ids,
|
| const DeletePageCallback& callback) {
|
| if (!is_loaded_) {
|
| delayed_tasks_.push_back(
|
| - base::Bind(&OfflinePageModel::DoDeletePagesByOfflineId,
|
| + base::Bind(&OfflinePageModelImpl::DoDeletePagesByOfflineId,
|
| weak_ptr_factory_.GetWeakPtr(), offline_ids, callback));
|
|
|
| return;
|
| @@ -238,7 +236,7 @@ void OfflinePageModel::DeletePagesByOfflineId(
|
| DoDeletePagesByOfflineId(offline_ids, callback);
|
| }
|
|
|
| -void OfflinePageModel::DoDeletePagesByOfflineId(
|
| +void OfflinePageModelImpl::DoDeletePagesByOfflineId(
|
| const std::vector<int64_t>& offline_ids,
|
| const DeletePageCallback& callback) {
|
| DCHECK(is_loaded_);
|
| @@ -258,11 +256,11 @@ void OfflinePageModel::DoDeletePagesByOfflineId(
|
|
|
| archive_manager_->DeleteMultipleArchives(
|
| paths_to_delete,
|
| - base::Bind(&OfflinePageModel::OnDeleteArchiveFilesDone,
|
| + base::Bind(&OfflinePageModelImpl::OnDeleteArchiveFilesDone,
|
| weak_ptr_factory_.GetWeakPtr(), offline_ids, callback));
|
| }
|
|
|
| -void OfflinePageModel::ClearAll(const base::Closure& callback) {
|
| +void OfflinePageModelImpl::ClearAll(const base::Closure& callback) {
|
| DCHECK(is_loaded_);
|
|
|
| std::vector<int64_t> offline_ids;
|
| @@ -270,16 +268,16 @@ void OfflinePageModel::ClearAll(const base::Closure& callback) {
|
| offline_ids.push_back(id_page_pair.first);
|
| DeletePagesByOfflineId(
|
| offline_ids,
|
| - base::Bind(&OfflinePageModel::OnRemoveAllFilesDoneForClearAll,
|
| + base::Bind(&OfflinePageModelImpl::OnRemoveAllFilesDoneForClearAll,
|
| weak_ptr_factory_.GetWeakPtr(), callback));
|
| }
|
|
|
| -void OfflinePageModel::DeletePagesByURLPredicate(
|
| +void OfflinePageModelImpl::DeletePagesByURLPredicate(
|
| const UrlPredicate& predicate,
|
| const DeletePageCallback& callback) {
|
| if (!is_loaded_) {
|
| delayed_tasks_.push_back(
|
| - base::Bind(&OfflinePageModel::DoDeletePagesByURLPredicate,
|
| + base::Bind(&OfflinePageModelImpl::DoDeletePagesByURLPredicate,
|
| weak_ptr_factory_.GetWeakPtr(), predicate, callback));
|
|
|
| return;
|
| @@ -287,7 +285,7 @@ void OfflinePageModel::DeletePagesByURLPredicate(
|
| DoDeletePagesByURLPredicate(predicate, callback);
|
| }
|
|
|
| -void OfflinePageModel::DoDeletePagesByURLPredicate(
|
| +void OfflinePageModelImpl::DoDeletePagesByURLPredicate(
|
| const UrlPredicate& predicate,
|
| const DeletePageCallback& callback) {
|
| DCHECK(is_loaded_);
|
| @@ -300,14 +298,14 @@ void OfflinePageModel::DoDeletePagesByURLPredicate(
|
| DoDeletePagesByOfflineId(offline_ids, callback);
|
| }
|
|
|
| -void OfflinePageModel::HasPages(const std::string& name_space,
|
| - const HasPagesCallback& callback) {
|
| - RunWhenLoaded(base::Bind(&OfflinePageModel::HasPagesAfterLoadDone,
|
| +void OfflinePageModelImpl::HasPages(const std::string& name_space,
|
| + const HasPagesCallback& callback) {
|
| + RunWhenLoaded(base::Bind(&OfflinePageModelImpl::HasPagesAfterLoadDone,
|
| weak_ptr_factory_.GetWeakPtr(), name_space,
|
| callback));
|
| }
|
|
|
| -void OfflinePageModel::HasPagesAfterLoadDone(
|
| +void OfflinePageModelImpl::HasPagesAfterLoadDone(
|
| const std::string& name_space,
|
| const HasPagesCallback& callback) const {
|
| DCHECK(is_loaded_);
|
| @@ -324,15 +322,15 @@ void OfflinePageModel::HasPagesAfterLoadDone(
|
| callback.Run(has_pages);
|
| }
|
|
|
| -void OfflinePageModel::CheckPagesExistOffline(
|
| +void OfflinePageModelImpl::CheckPagesExistOffline(
|
| const std::set<GURL>& urls,
|
| const CheckPagesExistOfflineCallback& callback) {
|
| RunWhenLoaded(
|
| - base::Bind(&OfflinePageModel::CheckPagesExistOfflineAfterLoadDone,
|
| + base::Bind(&OfflinePageModelImpl::CheckPagesExistOfflineAfterLoadDone,
|
| weak_ptr_factory_.GetWeakPtr(), urls, callback));
|
| }
|
|
|
| -void OfflinePageModel::CheckPagesExistOfflineAfterLoadDone(
|
| +void OfflinePageModelImpl::CheckPagesExistOfflineAfterLoadDone(
|
| const std::set<GURL>& urls,
|
| const CheckPagesExistOfflineCallback& callback) {
|
| DCHECK(is_loaded_);
|
| @@ -345,13 +343,13 @@ void OfflinePageModel::CheckPagesExistOfflineAfterLoadDone(
|
| callback.Run(result);
|
| }
|
|
|
| -void OfflinePageModel::GetAllPages(
|
| +void OfflinePageModelImpl::GetAllPages(
|
| const MultipleOfflinePageItemCallback& callback) {
|
| - RunWhenLoaded(base::Bind(&OfflinePageModel::GetAllPagesAfterLoadDone,
|
| + RunWhenLoaded(base::Bind(&OfflinePageModelImpl::GetAllPagesAfterLoadDone,
|
| weak_ptr_factory_.GetWeakPtr(), callback));
|
| }
|
|
|
| -void OfflinePageModel::GetAllPagesAfterLoadDone(
|
| +void OfflinePageModelImpl::GetAllPagesAfterLoadDone(
|
| const MultipleOfflinePageItemCallback& callback) {
|
| DCHECK(is_loaded_);
|
|
|
| @@ -362,21 +360,21 @@ void OfflinePageModel::GetAllPagesAfterLoadDone(
|
| callback.Run(offline_pages);
|
| }
|
|
|
| -void OfflinePageModel::GetOfflineIdsForClientId(
|
| +void OfflinePageModelImpl::GetOfflineIdsForClientId(
|
| const ClientId& client_id,
|
| const MultipleOfflineIdCallback& callback) {
|
| RunWhenLoaded(
|
| - base::Bind(&OfflinePageModel::GetOfflineIdsForClientIdWhenLoadDone,
|
| + base::Bind(&OfflinePageModelImpl::GetOfflineIdsForClientIdWhenLoadDone,
|
| weak_ptr_factory_.GetWeakPtr(), client_id, callback));
|
| }
|
|
|
| -void OfflinePageModel::GetOfflineIdsForClientIdWhenLoadDone(
|
| +void OfflinePageModelImpl::GetOfflineIdsForClientIdWhenLoadDone(
|
| const ClientId& client_id,
|
| const MultipleOfflineIdCallback& callback) const {
|
| callback.Run(MaybeGetOfflineIdsForClientId(client_id));
|
| }
|
|
|
| -const std::vector<int64_t> OfflinePageModel::MaybeGetOfflineIdsForClientId(
|
| +const std::vector<int64_t> OfflinePageModelImpl::MaybeGetOfflineIdsForClientId(
|
| const ClientId& client_id) const {
|
| DCHECK(is_loaded_);
|
| std::vector<int64_t> results;
|
| @@ -390,15 +388,15 @@ const std::vector<int64_t> OfflinePageModel::MaybeGetOfflineIdsForClientId(
|
| return results;
|
| }
|
|
|
| -void OfflinePageModel::GetPageByOfflineId(
|
| +void OfflinePageModelImpl::GetPageByOfflineId(
|
| int64_t offline_id,
|
| const SingleOfflinePageItemCallback& callback) {
|
| - RunWhenLoaded(base::Bind(&OfflinePageModel::GetPageByOfflineIdWhenLoadDone,
|
| - weak_ptr_factory_.GetWeakPtr(), offline_id,
|
| - callback));
|
| + RunWhenLoaded(
|
| + base::Bind(&OfflinePageModelImpl::GetPageByOfflineIdWhenLoadDone,
|
| + weak_ptr_factory_.GetWeakPtr(), offline_id, callback));
|
| }
|
|
|
| -void OfflinePageModel::GetPageByOfflineIdWhenLoadDone(
|
| +void OfflinePageModelImpl::GetPageByOfflineIdWhenLoadDone(
|
| int64_t offline_id,
|
| const SingleOfflinePageItemCallback& callback) const {
|
| SingleOfflinePageItemResult result;
|
| @@ -408,21 +406,21 @@ void OfflinePageModel::GetPageByOfflineIdWhenLoadDone(
|
| callback.Run(result);
|
| }
|
|
|
| -const OfflinePageItem* OfflinePageModel::MaybeGetPageByOfflineId(
|
| +const OfflinePageItem* OfflinePageModelImpl::MaybeGetPageByOfflineId(
|
| int64_t offline_id) const {
|
| const auto iter = offline_pages_.find(offline_id);
|
| return iter != offline_pages_.end() ? &(iter->second) : nullptr;
|
| }
|
|
|
| -void OfflinePageModel::GetPageByOfflineURL(
|
| +void OfflinePageModelImpl::GetPageByOfflineURL(
|
| const GURL& offline_url,
|
| const SingleOfflinePageItemCallback& callback) {
|
| - RunWhenLoaded(base::Bind(&OfflinePageModel::GetPageByOfflineURLWhenLoadDone,
|
| - weak_ptr_factory_.GetWeakPtr(), offline_url,
|
| - callback));
|
| + RunWhenLoaded(
|
| + base::Bind(&OfflinePageModelImpl::GetPageByOfflineURLWhenLoadDone,
|
| + weak_ptr_factory_.GetWeakPtr(), offline_url, callback));
|
| }
|
|
|
| -void OfflinePageModel::GetPageByOfflineURLWhenLoadDone(
|
| +void OfflinePageModelImpl::GetPageByOfflineURLWhenLoadDone(
|
| const GURL& offline_url,
|
| const SingleOfflinePageItemCallback& callback) const {
|
| base::Optional<OfflinePageItem> result;
|
| @@ -437,7 +435,7 @@ void OfflinePageModel::GetPageByOfflineURLWhenLoadDone(
|
| callback.Run(base::nullopt);
|
| }
|
|
|
| -const OfflinePageItem* OfflinePageModel::MaybeGetPageByOfflineURL(
|
| +const OfflinePageItem* OfflinePageModelImpl::MaybeGetPageByOfflineURL(
|
| const GURL& offline_url) const {
|
| for (const auto& id_page_pair : offline_pages_) {
|
| if (id_page_pair.second.GetOfflineURL() == offline_url)
|
| @@ -446,15 +444,15 @@ const OfflinePageItem* OfflinePageModel::MaybeGetPageByOfflineURL(
|
| return nullptr;
|
| }
|
|
|
| -void OfflinePageModel::GetBestPageForOnlineURL(
|
| +void OfflinePageModelImpl::GetBestPageForOnlineURL(
|
| const GURL& online_url,
|
| const SingleOfflinePageItemCallback callback) {
|
| RunWhenLoaded(
|
| - base::Bind(&OfflinePageModel::GetBestPageForOnlineURLWhenLoadDone,
|
| + base::Bind(&OfflinePageModelImpl::GetBestPageForOnlineURLWhenLoadDone,
|
| weak_ptr_factory_.GetWeakPtr(), online_url, callback));
|
| }
|
|
|
| -void OfflinePageModel::GetBestPageForOnlineURLWhenLoadDone(
|
| +void OfflinePageModelImpl::GetBestPageForOnlineURLWhenLoadDone(
|
| const GURL& online_url,
|
| const SingleOfflinePageItemCallback& callback) const {
|
| SingleOfflinePageItemResult result;
|
| @@ -466,15 +464,15 @@ void OfflinePageModel::GetBestPageForOnlineURLWhenLoadDone(
|
| callback.Run(result);
|
| }
|
|
|
| -void OfflinePageModel::GetPagesByOnlineURL(
|
| +void OfflinePageModelImpl::GetPagesByOnlineURL(
|
| const GURL& online_url,
|
| const MultipleOfflinePageItemCallback& callback) {
|
| - RunWhenLoaded(base::Bind(&OfflinePageModel::GetPagesByOnlineURLWhenLoadDone,
|
| - weak_ptr_factory_.GetWeakPtr(), online_url,
|
| - callback));
|
| + RunWhenLoaded(
|
| + base::Bind(&OfflinePageModelImpl::GetPagesByOnlineURLWhenLoadDone,
|
| + weak_ptr_factory_.GetWeakPtr(), online_url, callback));
|
| }
|
|
|
| -void OfflinePageModel::GetPagesByOnlineURLWhenLoadDone(
|
| +void OfflinePageModelImpl::GetPagesByOnlineURLWhenLoadDone(
|
| const GURL& online_url,
|
| const MultipleOfflinePageItemCallback& callback) const {
|
| std::vector<OfflinePageItem> result;
|
| @@ -487,7 +485,7 @@ void OfflinePageModel::GetPagesByOnlineURLWhenLoadDone(
|
| callback.Run(result);
|
| }
|
|
|
| -const OfflinePageItem* OfflinePageModel::MaybeGetBestPageForOnlineURL(
|
| +const OfflinePageItem* OfflinePageModelImpl::MaybeGetBestPageForOnlineURL(
|
| const GURL& online_url) const {
|
| const OfflinePageItem* result = nullptr;
|
| for (const auto& id_page_pair : offline_pages_) {
|
| @@ -499,16 +497,16 @@ const OfflinePageItem* OfflinePageModel::MaybeGetBestPageForOnlineURL(
|
| return result;
|
| }
|
|
|
| -void OfflinePageModel::CheckForExternalFileDeletion() {
|
| +void OfflinePageModelImpl::CheckForExternalFileDeletion() {
|
| DCHECK(is_loaded_);
|
|
|
| archive_manager_->GetAllArchives(
|
| - base::Bind(&OfflinePageModel::ScanForMissingArchiveFiles,
|
| + base::Bind(&OfflinePageModelImpl::ScanForMissingArchiveFiles,
|
| weak_ptr_factory_.GetWeakPtr()));
|
| }
|
|
|
| -void OfflinePageModel::ExpirePages(const std::vector<int64_t>& offline_ids,
|
| - const base::Time& expiration_time) {
|
| +void OfflinePageModelImpl::ExpirePages(const std::vector<int64_t>& offline_ids,
|
| + const base::Time& expiration_time) {
|
| for (int64_t offline_id : offline_ids) {
|
| auto iter = offline_pages_.find(offline_id);
|
| if (iter == offline_pages_.end())
|
| @@ -518,15 +516,15 @@ void OfflinePageModel::ExpirePages(const std::vector<int64_t>& offline_ids,
|
| offline_page.expiration_time = expiration_time;
|
|
|
| store_->AddOrUpdateOfflinePage(
|
| - offline_page, base::Bind(&OfflinePageModel::OnExpirePageDone,
|
| + offline_page, base::Bind(&OfflinePageModelImpl::OnExpirePageDone,
|
| weak_ptr_factory_.GetWeakPtr(), offline_id,
|
| expiration_time));
|
| }
|
| }
|
|
|
| -void OfflinePageModel::OnExpirePageDone(int64_t offline_id,
|
| - const base::Time& expiration_time,
|
| - bool success) {
|
| +void OfflinePageModelImpl::OnExpirePageDone(int64_t offline_id,
|
| + const base::Time& expiration_time,
|
| + bool success) {
|
| // TODO(romax): Report UMA about successful expiration.
|
| if (success) {
|
| auto iter = offline_pages_.find(offline_id);
|
| @@ -535,32 +533,32 @@ void OfflinePageModel::OnExpirePageDone(int64_t offline_id,
|
| }
|
| }
|
|
|
| -ClientPolicyController* OfflinePageModel::GetPolicyController() {
|
| +ClientPolicyController* OfflinePageModelImpl::GetPolicyController() {
|
| return policy_controller_.get();
|
| }
|
|
|
| -OfflinePageMetadataStore* OfflinePageModel::GetStoreForTesting() {
|
| +OfflinePageMetadataStore* OfflinePageModelImpl::GetStoreForTesting() {
|
| return store_.get();
|
| }
|
|
|
| -OfflinePageStorageManager* OfflinePageModel::GetStorageManager() {
|
| +OfflinePageStorageManager* OfflinePageModelImpl::GetStorageManager() {
|
| return storage_manager_.get();
|
| }
|
|
|
| -bool OfflinePageModel::is_loaded() const {
|
| +bool OfflinePageModelImpl::is_loaded() const {
|
| return is_loaded_;
|
| }
|
|
|
| -void OfflinePageModel::OnCreateArchiveDone(const GURL& requested_url,
|
| - int64_t offline_id,
|
| - const ClientId& client_id,
|
| - const base::Time& start_time,
|
| - const SavePageCallback& callback,
|
| - OfflinePageArchiver* archiver,
|
| - ArchiverResult archiver_result,
|
| - const GURL& url,
|
| - const base::FilePath& file_path,
|
| - int64_t file_size) {
|
| +void OfflinePageModelImpl::OnCreateArchiveDone(const GURL& requested_url,
|
| + int64_t offline_id,
|
| + const ClientId& client_id,
|
| + const base::Time& start_time,
|
| + const SavePageCallback& callback,
|
| + OfflinePageArchiver* archiver,
|
| + ArchiverResult archiver_result,
|
| + const GURL& url,
|
| + const base::FilePath& file_path,
|
| + int64_t file_size) {
|
| if (requested_url != url) {
|
| DVLOG(1) << "Saved URL does not match requested URL.";
|
| // TODO(fgorski): We have created an archive for a wrong URL. It should be
|
| @@ -580,27 +578,28 @@ void OfflinePageModel::OnCreateArchiveDone(const GURL& requested_url,
|
| OfflinePageItem offline_page_item(url, offline_id, client_id, file_path,
|
| file_size, start_time);
|
| store_->AddOrUpdateOfflinePage(
|
| - offline_page_item,
|
| - base::Bind(&OfflinePageModel::OnAddOfflinePageDone,
|
| - weak_ptr_factory_.GetWeakPtr(), archiver, callback,
|
| - offline_page_item));
|
| + offline_page_item, base::Bind(&OfflinePageModelImpl::OnAddOfflinePageDone,
|
| + weak_ptr_factory_.GetWeakPtr(), archiver,
|
| + callback, offline_page_item));
|
| }
|
|
|
| -void OfflinePageModel::OnAddOfflinePageDone(OfflinePageArchiver* archiver,
|
| - const SavePageCallback& callback,
|
| - const OfflinePageItem& offline_page,
|
| - bool success) {
|
| +void OfflinePageModelImpl::OnAddOfflinePageDone(
|
| + OfflinePageArchiver* archiver,
|
| + const SavePageCallback& callback,
|
| + const OfflinePageItem& offline_page,
|
| + bool success) {
|
| SavePageResult result;
|
| if (success) {
|
| offline_pages_[offline_page.offline_id] = offline_page;
|
| result = SavePageResult::SUCCESS;
|
| UMA_HISTOGRAM_TIMES(
|
| - AddHistogramSuffix(
|
| - offline_page.client_id, "OfflinePages.SavePageTime").c_str(),
|
| + AddHistogramSuffix(offline_page.client_id, "OfflinePages.SavePageTime")
|
| + .c_str(),
|
| base::Time::Now() - offline_page.creation_time);
|
| // 50 buckets capped between 1Kb and 10Mb.
|
| - UMA_HISTOGRAM_COUNTS_10000(AddHistogramSuffix(
|
| - offline_page.client_id, "OfflinePages.PageSize").c_str(),
|
| + UMA_HISTOGRAM_COUNTS_10000(
|
| + AddHistogramSuffix(offline_page.client_id, "OfflinePages.PageSize")
|
| + .c_str(),
|
| offline_page.file_size / 1024);
|
| } else {
|
| result = SavePageResult::STORE_FAILURE;
|
| @@ -612,8 +611,9 @@ void OfflinePageModel::OnAddOfflinePageDone(OfflinePageArchiver* archiver,
|
| FOR_EACH_OBSERVER(Observer, observers_, OfflinePageModelChanged(this));
|
| }
|
|
|
| -void OfflinePageModel::OnMarkPageAccesseDone(
|
| - const OfflinePageItem& offline_page_item, bool success) {
|
| +void OfflinePageModelImpl::OnMarkPageAccesseDone(
|
| + const OfflinePageItem& offline_page_item,
|
| + bool success) {
|
| // Update the item in the cache only upon success.
|
| if (success)
|
| offline_pages_[offline_page_item.offline_id] = offline_page_item;
|
| @@ -622,16 +622,16 @@ void OfflinePageModel::OnMarkPageAccesseDone(
|
| // should not have any impact to the UI.
|
| }
|
|
|
| -void OfflinePageModel::OnEnsureArchivesDirCreatedDone(
|
| +void OfflinePageModelImpl::OnEnsureArchivesDirCreatedDone(
|
| const base::TimeTicks& start_time) {
|
| UMA_HISTOGRAM_TIMES("OfflinePages.Model.ArchiveDirCreationTime",
|
| base::TimeTicks::Now() - start_time);
|
|
|
| - store_->Load(base::Bind(&OfflinePageModel::OnLoadDone,
|
| + store_->Load(base::Bind(&OfflinePageModelImpl::OnLoadDone,
|
| weak_ptr_factory_.GetWeakPtr(), start_time));
|
| }
|
|
|
| -void OfflinePageModel::OnLoadDone(
|
| +void OfflinePageModelImpl::OnLoadDone(
|
| const base::TimeTicks& start_time,
|
| OfflinePageMetadataStore::LoadStatus load_status,
|
| const std::vector<OfflinePageItem>& offline_pages) {
|
| @@ -660,25 +660,25 @@ void OfflinePageModel::OnLoadDone(
|
| CheckForExternalFileDeletion();
|
| }
|
|
|
| -void OfflinePageModel::InformSavePageDone(const SavePageCallback& callback,
|
| - SavePageResult result,
|
| - const ClientId& client_id,
|
| - int64_t offline_id) {
|
| +void OfflinePageModelImpl::InformSavePageDone(const SavePageCallback& callback,
|
| + SavePageResult result,
|
| + const ClientId& client_id,
|
| + int64_t offline_id) {
|
| UMA_HISTOGRAM_ENUMERATION(
|
| AddHistogramSuffix(client_id, "OfflinePages.SavePageResult").c_str(),
|
| - static_cast<int>(result),
|
| - static_cast<int>(SavePageResult::RESULT_COUNT));
|
| + static_cast<int>(result), static_cast<int>(SavePageResult::RESULT_COUNT));
|
| archive_manager_->GetStorageStats(
|
| base::Bind(&ReportStorageHistogramsAfterSave));
|
| callback.Run(result, offline_id);
|
| }
|
|
|
| -void OfflinePageModel::DeletePendingArchiver(OfflinePageArchiver* archiver) {
|
| - pending_archivers_.erase(std::find(
|
| - pending_archivers_.begin(), pending_archivers_.end(), archiver));
|
| +void OfflinePageModelImpl::DeletePendingArchiver(
|
| + OfflinePageArchiver* archiver) {
|
| + pending_archivers_.erase(std::find(pending_archivers_.begin(),
|
| + pending_archivers_.end(), archiver));
|
| }
|
|
|
| -void OfflinePageModel::OnDeleteArchiveFilesDone(
|
| +void OfflinePageModelImpl::OnDeleteArchiveFilesDone(
|
| const std::vector<int64_t>& offline_ids,
|
| const DeletePageCallback& callback,
|
| bool success) {
|
| @@ -689,11 +689,11 @@ void OfflinePageModel::OnDeleteArchiveFilesDone(
|
|
|
| store_->RemoveOfflinePages(
|
| offline_ids,
|
| - base::Bind(&OfflinePageModel::OnRemoveOfflinePagesDone,
|
| + base::Bind(&OfflinePageModelImpl::OnRemoveOfflinePagesDone,
|
| weak_ptr_factory_.GetWeakPtr(), offline_ids, callback));
|
| }
|
|
|
| -void OfflinePageModel::OnRemoveOfflinePagesDone(
|
| +void OfflinePageModelImpl::OnRemoveOfflinePagesDone(
|
| const std::vector<int64_t>& offline_ids,
|
| const DeletePageCallback& callback,
|
| bool success) {
|
| @@ -709,32 +709,28 @@ void OfflinePageModel::OnRemoveOfflinePagesDone(
|
| ClientId client_id = iter->second.client_id;
|
| UMA_HISTOGRAM_CUSTOM_COUNTS(
|
| AddHistogramSuffix(client_id, "OfflinePages.PageLifetime").c_str(),
|
| - (now - iter->second.creation_time).InMinutes(),
|
| - 1,
|
| - base::TimeDelta::FromDays(365).InMinutes(),
|
| - 100);
|
| + (now - iter->second.creation_time).InMinutes(), 1,
|
| + base::TimeDelta::FromDays(365).InMinutes(), 100);
|
| UMA_HISTOGRAM_CUSTOM_COUNTS(
|
| - AddHistogramSuffix(
|
| - client_id, "OfflinePages.DeletePage.TimeSinceLastOpen").c_str(),
|
| - (now - iter->second.last_access_time).InMinutes(),
|
| - 1,
|
| - base::TimeDelta::FromDays(365).InMinutes(),
|
| - 100);
|
| + AddHistogramSuffix(client_id,
|
| + "OfflinePages.DeletePage.TimeSinceLastOpen")
|
| + .c_str(),
|
| + (now - iter->second.last_access_time).InMinutes(), 1,
|
| + base::TimeDelta::FromDays(365).InMinutes(), 100);
|
| UMA_HISTOGRAM_CUSTOM_COUNTS(
|
| - AddHistogramSuffix(
|
| - client_id, "OfflinePages.DeletePage.LastOpenToCreated").c_str(),
|
| - (iter->second.last_access_time - iter->second.creation_time).
|
| - InMinutes(),
|
| - 1,
|
| - base::TimeDelta::FromDays(365).InMinutes(),
|
| - 100);
|
| + AddHistogramSuffix(client_id,
|
| + "OfflinePages.DeletePage.LastOpenToCreated")
|
| + .c_str(),
|
| + (iter->second.last_access_time - iter->second.creation_time)
|
| + .InMinutes(),
|
| + 1, base::TimeDelta::FromDays(365).InMinutes(), 100);
|
| UMA_HISTOGRAM_MEMORY_KB(
|
| - AddHistogramSuffix(
|
| - client_id, "OfflinePages.DeletePage.PageSize").c_str(),
|
| + AddHistogramSuffix(client_id, "OfflinePages.DeletePage.PageSize")
|
| + .c_str(),
|
| iter->second.file_size / 1024);
|
| UMA_HISTOGRAM_COUNTS(
|
| - AddHistogramSuffix(
|
| - client_id, "OfflinePages.DeletePage.AccessCount").c_str(),
|
| + AddHistogramSuffix(client_id, "OfflinePages.DeletePage.AccessCount")
|
| + .c_str(),
|
| iter->second.access_count);
|
| FOR_EACH_OBSERVER(
|
| Observer, observers_,
|
| @@ -744,8 +740,8 @@ void OfflinePageModel::OnRemoveOfflinePagesDone(
|
| if (offline_ids.size() > 1) {
|
| UMA_HISTOGRAM_COUNTS("OfflinePages.BatchDelete.Count",
|
| static_cast<int32_t>(offline_ids.size()));
|
| - UMA_HISTOGRAM_MEMORY_KB(
|
| - "OfflinePages.BatchDelete.TotalPageSize", total_size / 1024);
|
| + UMA_HISTOGRAM_MEMORY_KB("OfflinePages.BatchDelete.TotalPageSize",
|
| + total_size / 1024);
|
| }
|
| // Deleting multiple pages always succeeds when it gets to this point.
|
| InformDeletePageDone(callback, (success || offline_ids.size() > 1)
|
| @@ -753,19 +749,19 @@ void OfflinePageModel::OnRemoveOfflinePagesDone(
|
| : DeletePageResult::STORE_FAILURE);
|
| }
|
|
|
| -void OfflinePageModel::InformDeletePageDone(const DeletePageCallback& callback,
|
| - DeletePageResult result) {
|
| - UMA_HISTOGRAM_ENUMERATION(
|
| - "OfflinePages.DeletePageResult",
|
| - static_cast<int>(result),
|
| - static_cast<int>(DeletePageResult::RESULT_COUNT));
|
| +void OfflinePageModelImpl::InformDeletePageDone(
|
| + const DeletePageCallback& callback,
|
| + DeletePageResult result) {
|
| + UMA_HISTOGRAM_ENUMERATION("OfflinePages.DeletePageResult",
|
| + static_cast<int>(result),
|
| + static_cast<int>(DeletePageResult::RESULT_COUNT));
|
| archive_manager_->GetStorageStats(
|
| base::Bind(&ReportStorageHistogramsAfterDelete));
|
| if (!callback.is_null())
|
| callback.Run(result);
|
| }
|
|
|
| -void OfflinePageModel::ScanForMissingArchiveFiles(
|
| +void OfflinePageModelImpl::ScanForMissingArchiveFiles(
|
| const std::set<base::FilePath>& archive_paths) {
|
| std::vector<int64_t> ids_of_pages_missing_archive_file;
|
| std::vector<std::pair<int64_t, ClientId>> offline_client_id_pairs;
|
| @@ -781,19 +777,19 @@ void OfflinePageModel::ScanForMissingArchiveFiles(
|
| if (ids_of_pages_missing_archive_file.empty())
|
| return;
|
|
|
| - DeletePageCallback remove_pages_done_callback(
|
| - base::Bind(&OfflinePageModel::OnRemoveOfflinePagesMissingArchiveFileDone,
|
| - weak_ptr_factory_.GetWeakPtr(), offline_client_id_pairs));
|
| + DeletePageCallback remove_pages_done_callback(base::Bind(
|
| + &OfflinePageModelImpl::OnRemoveOfflinePagesMissingArchiveFileDone,
|
| + weak_ptr_factory_.GetWeakPtr(), offline_client_id_pairs));
|
|
|
| store_->RemoveOfflinePages(
|
| ids_of_pages_missing_archive_file,
|
| - base::Bind(&OfflinePageModel::OnRemoveOfflinePagesDone,
|
| + base::Bind(&OfflinePageModelImpl::OnRemoveOfflinePagesDone,
|
| weak_ptr_factory_.GetWeakPtr(),
|
| ids_of_pages_missing_archive_file,
|
| remove_pages_done_callback));
|
| }
|
|
|
| -void OfflinePageModel::OnRemoveOfflinePagesMissingArchiveFileDone(
|
| +void OfflinePageModelImpl::OnRemoveOfflinePagesMissingArchiveFileDone(
|
| const std::vector<std::pair<int64_t, ClientId>>& offline_client_id_pairs,
|
| DeletePageResult /* result */) {
|
| for (const auto& id_pair : offline_client_id_pairs) {
|
| @@ -802,56 +798,51 @@ void OfflinePageModel::OnRemoveOfflinePagesMissingArchiveFileDone(
|
| }
|
| }
|
|
|
| -void OfflinePageModel::OnRemoveAllFilesDoneForClearAll(
|
| +void OfflinePageModelImpl::OnRemoveAllFilesDoneForClearAll(
|
| const base::Closure& callback,
|
| DeletePageResult result) {
|
| - store_->Reset(base::Bind(&OfflinePageModel::OnResetStoreDoneForClearAll,
|
| - weak_ptr_factory_.GetWeakPtr(),
|
| - callback));
|
| + store_->Reset(base::Bind(&OfflinePageModelImpl::OnResetStoreDoneForClearAll,
|
| + weak_ptr_factory_.GetWeakPtr(), callback));
|
| }
|
|
|
| -void OfflinePageModel::OnResetStoreDoneForClearAll(
|
| - const base::Closure& callback, bool success) {
|
| +void OfflinePageModelImpl::OnResetStoreDoneForClearAll(
|
| + const base::Closure& callback,
|
| + bool success) {
|
| DCHECK(success);
|
| if (!success) {
|
| UMA_HISTOGRAM_ENUMERATION("OfflinePages.ClearAllStatus2",
|
| - STORE_RESET_FAILED,
|
| - CLEAR_ALL_STATUS_COUNT);
|
| + STORE_RESET_FAILED, CLEAR_ALL_STATUS_COUNT);
|
| }
|
|
|
| offline_pages_.clear();
|
| - store_->Load(base::Bind(&OfflinePageModel::OnReloadStoreDoneForClearAll,
|
| - weak_ptr_factory_.GetWeakPtr(),
|
| - callback));
|
| + store_->Load(base::Bind(&OfflinePageModelImpl::OnReloadStoreDoneForClearAll,
|
| + weak_ptr_factory_.GetWeakPtr(), callback));
|
| }
|
|
|
| -void OfflinePageModel::OnReloadStoreDoneForClearAll(
|
| +void OfflinePageModelImpl::OnReloadStoreDoneForClearAll(
|
| const base::Closure& callback,
|
| OfflinePageMetadataStore::LoadStatus load_status,
|
| const std::vector<OfflinePageItem>& offline_pages) {
|
| DCHECK_EQ(OfflinePageMetadataStore::LOAD_SUCCEEDED, load_status);
|
| UMA_HISTOGRAM_ENUMERATION(
|
| "OfflinePages.ClearAllStatus2",
|
| - load_status == OfflinePageMetadataStore::LOAD_SUCCEEDED ?
|
| - CLEAR_ALL_SUCCEEDED : STORE_RELOAD_FAILED,
|
| + load_status == OfflinePageMetadataStore::LOAD_SUCCEEDED
|
| + ? CLEAR_ALL_SUCCEEDED
|
| + : STORE_RELOAD_FAILED,
|
| CLEAR_ALL_STATUS_COUNT);
|
|
|
| CacheLoadedData(offline_pages);
|
| callback.Run();
|
| }
|
|
|
| -void OfflinePageModel::CacheLoadedData(
|
| +void OfflinePageModelImpl::CacheLoadedData(
|
| const std::vector<OfflinePageItem>& offline_pages) {
|
| offline_pages_.clear();
|
| for (const auto& offline_page : offline_pages)
|
| offline_pages_[offline_page.offline_id] = offline_page;
|
| }
|
|
|
| -int64_t OfflinePageModel::GenerateOfflineId() {
|
| - return base::RandGenerator(std::numeric_limits<int64_t>::max()) + 1;
|
| -}
|
| -
|
| -void OfflinePageModel::RunWhenLoaded(const base::Closure& task) {
|
| +void OfflinePageModelImpl::RunWhenLoaded(const base::Closure& task) {
|
| if (!is_loaded_) {
|
| delayed_tasks_.push_back(task);
|
| return;
|
|
|