Chromium Code Reviews| 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 a32ab8a03b9b85c2feb8e0c73d101ea5c35c0818..d26760877e7065c2da28ad58d230534e614c195c 100644 |
| --- a/components/offline_pages/offline_page_model_impl.cc |
| +++ b/components/offline_pages/offline_page_model_impl.cc |
| @@ -332,10 +332,11 @@ void OfflinePageModelImpl::MarkPageAccessedWhenLoadDone(int64_t offline_id) { |
| offline_page_item.last_access_time = GetCurrentTime(); |
| offline_page_item.access_count++; |
| - store_->AddOrUpdateOfflinePage( |
| - offline_page_item, |
| - base::Bind(&OfflinePageModelImpl::OnMarkPageAccesseDone, |
| - weak_ptr_factory_.GetWeakPtr(), offline_page_item)); |
| + std::vector<OfflinePageItem> items; |
|
dewittj
2016/09/14 00:24:11
nit:
std::vector<OfflinePageItem> items = { offlin
fgorski
2016/09/14 03:54:22
Done.
|
| + items.push_back(offline_page_item); |
| + store_->UpdateOfflinePages( |
| + items, base::Bind(&OfflinePageModelImpl::OnMarkPageAccesseDone, |
| + weak_ptr_factory_.GetWeakPtr(), offline_page_item)); |
| } |
| void OfflinePageModelImpl::DeletePagesByOfflineId( |
| @@ -628,6 +629,7 @@ void OfflinePageModelImpl::ExpirePages( |
| const base::Time& expiration_time, |
| const base::Callback<void(bool)>& callback) { |
| std::vector<base::FilePath> paths_to_delete; |
| + std::vector<OfflinePageItem> items_to_update; |
| for (int64_t offline_id : offline_ids) { |
| auto iter = offline_pages_.find(offline_id); |
| if (iter == offline_pages_.end()) |
| @@ -637,11 +639,14 @@ void OfflinePageModelImpl::ExpirePages( |
| paths_to_delete.push_back(offline_page.file_path); |
| offline_page.expiration_time = expiration_time; |
| - store_->AddOrUpdateOfflinePage( |
| - offline_page, base::Bind(&OfflinePageModelImpl::OnExpirePageDone, |
| - weak_ptr_factory_.GetWeakPtr(), offline_id, |
| - expiration_time)); |
| + items_to_update.push_back(offline_page); |
| } |
| + |
| + store_->UpdateOfflinePages(items_to_update, |
| + base::Bind(&OfflinePageModelImpl::OnExpirePageDone, |
| + weak_ptr_factory_.GetWeakPtr(), |
| + items_to_update, expiration_time)); |
| + |
| if (paths_to_delete.empty()) { |
| callback.Run(true); |
| return; |
| @@ -649,17 +654,22 @@ void OfflinePageModelImpl::ExpirePages( |
| archive_manager_->DeleteMultipleArchives(paths_to_delete, callback); |
| } |
| -void OfflinePageModelImpl::OnExpirePageDone(int64_t offline_id, |
| - const base::Time& expiration_time, |
| - bool success) { |
| +void OfflinePageModelImpl::OnExpirePageDone( |
| + const std::vector<OfflinePageItem>& expired_pages, |
| + const base::Time& expiration_time, |
| + bool success) { |
| UMA_HISTOGRAM_BOOLEAN("OfflinePages.ExpirePage.StoreUpdateResult", success); |
| if (!success) |
| return; |
| - const auto& iter = offline_pages_.find(offline_id); |
| - if (iter != offline_pages_.end()) { |
| + for (auto& expired_page : expired_pages) { |
| + const auto& iter = offline_pages_.find(expired_page.offline_id); |
| + if (iter == offline_pages_.end()) |
| + continue; |
| + |
| iter->second.expiration_time = expiration_time; |
| ClientId client_id = iter->second.client_id; |
| - offline_event_logger_.RecordPageExpired(std::to_string(offline_id)); |
| + offline_event_logger_.RecordPageExpired( |
| + std::to_string(expired_page.offline_id)); |
| base::HistogramBase* histogram = base::Histogram::FactoryGet( |
| AddHistogramSuffix(client_id, "OfflinePages.ExpirePage.PageLifetime"), |
| 1, base::TimeDelta::FromDays(30).InMinutes(), 50, |
| @@ -725,8 +735,8 @@ void OfflinePageModelImpl::OnCreateArchiveDone(const GURL& requested_url, |
| OfflinePageItem offline_page_item(url, offline_id, client_id, file_path, |
| file_size, start_time); |
| offline_page_item.title = title; |
| - store_->AddOrUpdateOfflinePage( |
| - offline_page_item, base::Bind(&OfflinePageModelImpl::OnAddOfflinePageDone, |
| + store_->AddOfflinePage(offline_page_item, |
| + base::Bind(&OfflinePageModelImpl::OnAddOfflinePageDone, |
| weak_ptr_factory_.GetWeakPtr(), archiver, |
| callback, offline_page_item)); |
| } |
| @@ -735,9 +745,9 @@ void OfflinePageModelImpl::OnAddOfflinePageDone( |
| OfflinePageArchiver* archiver, |
| const SavePageCallback& callback, |
| const OfflinePageItem& offline_page, |
| - bool success) { |
| + OfflinePageMetadataStore::ItemActionStatus status) { |
| SavePageResult result; |
| - if (success) { |
| + if (status == OfflinePageMetadataStore::SUCCESS) { |
| offline_pages_[offline_page.offline_id] = offline_page; |
| result = SavePageResult::SUCCESS; |
| ReportPageHistogramAfterSave(offline_page, GetCurrentTime()); |
| @@ -745,7 +755,9 @@ void OfflinePageModelImpl::OnAddOfflinePageDone( |
| offline_page.client_id.name_space, offline_page.url.spec(), |
| std::to_string(offline_page.offline_id)); |
| } else { |
| - result = SavePageResult::STORE_FAILURE; |
| + result = status == OfflinePageMetadataStore::ALREADY_EXISTS |
|
dewittj
2016/09/14 00:24:11
nit: make an else if or a switch statement and rem
fgorski
2016/09/14 03:54:22
Done.
|
| + ? SavePageResult::ALREADY_EXISTS |
| + : SavePageResult::STORE_FAILURE; |
| } |
| InformSavePageDone(callback, result, offline_page.client_id, |
| offline_page.offline_id); |