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 4d6f1d7af3939455a3ab139c1001cfda815afc1a..585adf684c3112444aecabc6388137b205d71659 100644 |
| --- a/components/offline_pages/offline_page_model_impl.cc |
| +++ b/components/offline_pages/offline_page_model_impl.cc |
| @@ -796,6 +796,15 @@ void OfflinePageModelImpl::InformSavePageDone(const SavePageCallback& callback, |
| ReportSavePageResultHistogramAfterSave(client_id, result); |
| archive_manager_->GetStorageStats( |
| base::Bind(&ReportStorageHistogramsAfterSave)); |
| + // Remove other user initiated pages with same url if the new save request was |
| + // user initiated. |
| + if (result == SavePageResult::SUCCESS && |
| + OfflinePageModel::IsUserInitiated(client_id)) { |
|
Dmitry Titov
2016/06/16 04:07:15
So far, we seem to gravitate to a model where each
fgorski
2016/06/16 15:05:13
I think we already have the policy object which sh
|
| + GetPagesByOnlineURL( |
| + offline_pages_[offline_id].url, |
| + base::Bind(&OfflinePageModelImpl::OnPagesFoundWithSameURL, |
| + weak_ptr_factory_.GetWeakPtr(), client_id, offline_id)); |
| + } |
| base::ThreadTaskRunnerHandle::Get()->PostTask( |
| FROM_HERE, base::Bind(&OfflinePageModelImpl::ClearStorageIfNeeded, |
| weak_ptr_factory_.GetWeakPtr(), |
| @@ -804,6 +813,28 @@ void OfflinePageModelImpl::InformSavePageDone(const SavePageCallback& callback, |
| callback.Run(result, offline_id); |
| } |
| +void OfflinePageModelImpl::OnPagesFoundWithSameURL( |
| + const ClientId& client_id, |
| + int64_t offline_id, |
| + const MultipleOfflinePageItemResult& items) { |
| + std::vector<int64_t> pages_to_delete; |
| + for (const auto& item : items) { |
| + if (item.offline_id != offline_id && |
| + item.client_id.name_space == client_id.name_space) { |
| + pages_to_delete.push_back(item.offline_id); |
| + } |
| + } |
| + DeletePagesByOfflineId( |
| + pages_to_delete, |
| + base::Bind(&OfflinePageModelImpl::OnDeleteOldPagesWithSameURL, |
| + weak_ptr_factory_.GetWeakPtr())); |
| +} |
| + |
| +void OfflinePageModelImpl::OnDeleteOldPagesWithSameURL( |
| + DeletePageResult result) { |
| + // TODO(romax) Seems like nothing to do here. |
|
Dmitry Titov
2016/06/16 04:07:15
UMA on failures would be interesting.
|
| +} |
| + |
| void OfflinePageModelImpl::DeletePendingArchiver( |
| OfflinePageArchiver* archiver) { |
| pending_archivers_.erase(std::find(pending_archivers_.begin(), |