Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(356)

Unified Diff: components/offline_pages/offline_page_model_impl.cc

Issue 2536573003: [Offline pages] Preventing GetPagesMatchingQuery from running before model is loaded (Closed)
Patch Set: Adding a test for public method GetPagesMatchingQuery Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 627f7f8c48cf6c0ca42fdb91f640601ac4298a7e..2758afb2637162640e5d7b32da27e7600679e600 100644
--- a/components/offline_pages/offline_page_model_impl.cc
+++ b/components/offline_pages/offline_page_model_impl.cc
@@ -441,10 +441,10 @@ void OfflinePageModelImpl::DeletePagesByClientIds(
.AllowExpiredPages(true);
auto delete_pages = base::Bind(&OfflinePageModelImpl::DeletePages,
weak_ptr_factory_.GetWeakPtr(), callback);
- RunWhenLoaded(base::Bind(&OfflinePageModelImpl::GetPagesMatchingQuery,
- weak_ptr_factory_.GetWeakPtr(),
- base::Passed(builder.Build(GetPolicyController())),
- delete_pages));
+ RunWhenLoaded(base::Bind(
+ &OfflinePageModelImpl::GetPagesMatchingQueryWhenLoadDone,
+ weak_ptr_factory_.GetWeakPtr(),
+ base::Passed(builder.Build(GetPolicyController())), delete_pages));
}
void OfflinePageModelImpl::DeletePages(
@@ -459,16 +459,40 @@ void OfflinePageModelImpl::DeletePages(
DoDeletePagesByOfflineId(offline_ids, callback);
}
+void OfflinePageModelImpl::GetPagesMatchingQuery(
+ std::unique_ptr<OfflinePageModelQuery> query,
+ const MultipleOfflinePageItemCallback& callback) {
+ RunWhenLoaded(base::Bind(
+ &OfflinePageModelImpl::GetPagesMatchingQueryWhenLoadDone,
+ weak_ptr_factory_.GetWeakPtr(), base::Passed(&query), callback));
+}
+
+void OfflinePageModelImpl::GetPagesMatchingQueryWhenLoadDone(
+ std::unique_ptr<OfflinePageModelQuery> query,
+ const MultipleOfflinePageItemCallback& callback) {
+ DCHECK(query);
+ DCHECK(is_loaded_);
+
+ MultipleOfflinePageItemResult offline_pages_result;
+
+ for (const auto& id_page_pair : offline_pages_) {
+ if (query->Matches(id_page_pair.second))
+ offline_pages_result.emplace_back(id_page_pair.second);
+ }
+
+ callback.Run(offline_pages_result);
+}
+
void OfflinePageModelImpl::GetPagesByClientIds(
const std::vector<ClientId>& client_ids,
const MultipleOfflinePageItemCallback& callback) {
OfflinePageModelQueryBuilder builder;
builder.SetClientIds(OfflinePageModelQuery::Requirement::INCLUDE_MATCHING,
client_ids);
- RunWhenLoaded(base::Bind(&OfflinePageModelImpl::GetPagesMatchingQuery,
- weak_ptr_factory_.GetWeakPtr(),
- base::Passed(builder.Build(GetPolicyController())),
- callback));
+ RunWhenLoaded(
dewittj 2016/11/28 17:52:09 This could simply be rewritten as GetPagesMatching
fgorski 2016/11/28 18:30:58 I know, but it sticks to the pattern applied in th
+ base::Bind(&OfflinePageModelImpl::GetPagesMatchingQueryWhenLoadDone,
+ weak_ptr_factory_.GetWeakPtr(),
+ base::Passed(builder.Build(GetPolicyController())), callback));
}
void OfflinePageModelImpl::DeleteCachedPagesByURLPredicate(
@@ -512,34 +536,19 @@ void OfflinePageModelImpl::CheckPagesExistOffline(
callback.Run(result);
},
callback);
- RunWhenLoaded(base::Bind(&OfflinePageModelImpl::GetPagesMatchingQuery,
- weak_ptr_factory_.GetWeakPtr(),
- base::Passed(builder.Build(GetPolicyController())),
- pages_to_urls));
-}
-
-void OfflinePageModelImpl::GetPagesMatchingQuery(
- std::unique_ptr<OfflinePageModelQuery> query,
- const MultipleOfflinePageItemCallback& callback) {
- DCHECK(query);
-
- MultipleOfflinePageItemResult offline_pages_result;
-
- for (const auto& id_page_pair : offline_pages_) {
- if (query->Matches(id_page_pair.second))
- offline_pages_result.emplace_back(id_page_pair.second);
- }
-
- callback.Run(offline_pages_result);
+ RunWhenLoaded(base::Bind(
+ &OfflinePageModelImpl::GetPagesMatchingQueryWhenLoadDone,
+ weak_ptr_factory_.GetWeakPtr(),
+ base::Passed(builder.Build(GetPolicyController())), pages_to_urls));
}
void OfflinePageModelImpl::GetAllPages(
const MultipleOfflinePageItemCallback& callback) {
OfflinePageModelQueryBuilder builder;
- RunWhenLoaded(base::Bind(&OfflinePageModelImpl::GetPagesMatchingQuery,
- weak_ptr_factory_.GetWeakPtr(),
- base::Passed(builder.Build(GetPolicyController())),
- callback));
+ RunWhenLoaded(
+ base::Bind(&OfflinePageModelImpl::GetPagesMatchingQueryWhenLoadDone,
+ weak_ptr_factory_.GetWeakPtr(),
+ base::Passed(builder.Build(GetPolicyController())), callback));
}
void OfflinePageModelImpl::GetAllPagesWithExpired(
@@ -547,10 +556,10 @@ void OfflinePageModelImpl::GetAllPagesWithExpired(
OfflinePageModelQueryBuilder builder;
builder.AllowExpiredPages(true);
- RunWhenLoaded(base::Bind(&OfflinePageModelImpl::GetPagesMatchingQuery,
- weak_ptr_factory_.GetWeakPtr(),
- base::Passed(builder.Build(GetPolicyController())),
- callback));
+ RunWhenLoaded(
+ base::Bind(&OfflinePageModelImpl::GetPagesMatchingQueryWhenLoadDone,
+ weak_ptr_factory_.GetWeakPtr(),
+ base::Passed(builder.Build(GetPolicyController())), callback));
}
void OfflinePageModelImpl::GetOfflineIdsForClientId(
@@ -564,6 +573,7 @@ void OfflinePageModelImpl::GetOfflineIdsForClientId(
void OfflinePageModelImpl::GetOfflineIdsForClientIdWhenLoadDone(
const ClientId& client_id,
const MultipleOfflineIdCallback& callback) const {
+ DCHECK(is_loaded_);
callback.Run(MaybeGetOfflineIdsForClientId(client_id));
}
@@ -605,10 +615,10 @@ void OfflinePageModelImpl::GetPageByOfflineId(
},
callback);
- RunWhenLoaded(base::Bind(&OfflinePageModelImpl::GetPagesMatchingQuery,
- weak_ptr_factory_.GetWeakPtr(),
- base::Passed(builder.Build(GetPolicyController())),
- multiple_callback));
+ RunWhenLoaded(base::Bind(
+ &OfflinePageModelImpl::GetPagesMatchingQueryWhenLoadDone,
+ weak_ptr_factory_.GetWeakPtr(),
+ base::Passed(builder.Build(GetPolicyController())), multiple_callback));
}
void OfflinePageModelImpl::GetPagesByURL(
@@ -625,6 +635,7 @@ void OfflinePageModelImpl::GetPagesByURLWhenLoadDone(
const GURL& url,
URLSearchMode url_search_mode,
const MultipleOfflinePageItemCallback& callback) const {
+ DCHECK(is_loaded_);
std::vector<OfflinePageItem> result;
GURL::Replacements remove_params;
« no previous file with comments | « components/offline_pages/offline_page_model_impl.h ('k') | components/offline_pages/offline_page_model_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698