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 0a5094fb876b41b3e04a0327b3c3871d1ad70f10..ddfea366493484e2921cd1bfc905eabf2f54d22b 100644 |
| --- a/components/offline_pages/offline_page_model_impl.cc |
| +++ b/components/offline_pages/offline_page_model_impl.cc |
| @@ -428,6 +428,56 @@ void OfflinePageModelImpl::DoDeletePagesByOfflineId( |
| weak_ptr_factory_.GetWeakPtr(), offline_ids, callback)); |
| } |
| +void OfflinePageModelImpl::DeletePagesByClientIds( |
| + const std::vector<ClientId>& client_ids, |
| + const DeletePageCallback& callback) { |
| + RunWhenLoaded(base::Bind(&OfflinePageModelImpl::DoDeletePagesByClientIds, |
| + weak_ptr_factory_.GetWeakPtr(), client_ids, |
| + callback)); |
| +} |
| + |
| +void OfflinePageModelImpl::DoDeletePagesByClientIds( |
| + const std::vector<ClientId>& client_ids, |
| + const DeletePageCallback& callback) { |
| + std::vector<ClientId> sorted_client_ids = client_ids; |
| + std::sort(sorted_client_ids.begin(), sorted_client_ids.end()); |
|
jianli
2016/10/19 00:21:37
Why not using a set?
dewittj
2016/10/19 16:18:33
Done.
The b-tree seemed like too much overhead fo
|
| + |
| + std::vector<int64_t> offline_ids; |
| + for (const auto& page_pair : offline_pages_) { |
| + if (std::binary_search(sorted_client_ids.begin(), sorted_client_ids.end(), |
| + page_pair.second.client_id)) { |
| + offline_ids.emplace_back(page_pair.first); |
| + } |
| + } |
| + |
| + DoDeletePagesByOfflineId(offline_ids, callback); |
| +} |
| + |
| +void OfflinePageModelImpl::GetPagesByClientIds( |
| + const std::vector<ClientId>& client_ids, |
| + const MultipleOfflinePageItemCallback& callback) { |
| + RunWhenLoaded(base::Bind(&OfflinePageModelImpl::DoGetPagesByClientIds, |
| + weak_ptr_factory_.GetWeakPtr(), client_ids, |
| + callback)); |
| +} |
| + |
| +void OfflinePageModelImpl::DoGetPagesByClientIds( |
| + const std::vector<ClientId>& client_ids, |
| + const MultipleOfflinePageItemCallback& callback) { |
| + std::vector<ClientId> sorted_client_ids = client_ids; |
| + std::sort(sorted_client_ids.begin(), sorted_client_ids.end()); |
|
jianli
2016/10/19 00:21:37
ditto
dewittj
2016/10/19 16:18:33
Done.
|
| + |
| + std::vector<OfflinePageItem> result; |
| + for (const auto& page_pair : offline_pages_) { |
| + if (std::binary_search(sorted_client_ids.begin(), sorted_client_ids.end(), |
| + page_pair.second.client_id) && |
| + !page_pair.second.IsExpired()) { |
| + result.emplace_back(page_pair.second); |
| + } |
| + } |
| + callback.Run(result); |
| +} |
| + |
| void OfflinePageModelImpl::DeleteCachedPagesByURLPredicate( |
| const UrlPredicate& predicate, |
| const DeletePageCallback& callback) { |
| @@ -595,19 +645,6 @@ void OfflinePageModelImpl::GetPagesByOnlineURLWhenLoadDone( |
| callback.Run(result); |
| } |
| -const OfflinePageItem* OfflinePageModelImpl::MaybeGetBestPageForOnlineURL( |
| - const GURL& online_url) const { |
| - const OfflinePageItem* result = nullptr; |
| - for (const auto& id_page_pair : offline_pages_) { |
| - if (id_page_pair.second.url == online_url && |
| - !id_page_pair.second.IsExpired()) { |
| - if (!result || id_page_pair.second.creation_time > result->creation_time) |
| - result = &(id_page_pair.second); |
| - } |
| - } |
| - return result; |
| -} |
| - |
| void OfflinePageModelImpl::CheckMetadataConsistency() { |
| DCHECK(is_loaded_); |
| archive_manager_->GetAllArchives( |