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

Unified Diff: chrome/browser/android/offline_pages/offline_page_utils.cc

Issue 2503853004: Support getting offline pages also by original URL (Closed)
Patch Set: Make NTP redirect work per comment 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: chrome/browser/android/offline_pages/offline_page_utils.cc
diff --git a/chrome/browser/android/offline_pages/offline_page_utils.cc b/chrome/browser/android/offline_pages/offline_page_utils.cc
index 887a2eaf08afa4a10d6072523b0f83da40f61187..c4e3fcae56fb6caa97ba6d51ffb9a33cb055a830 100644
--- a/chrome/browser/android/offline_pages/offline_page_utils.cc
+++ b/chrome/browser/android/offline_pages/offline_page_utils.cc
@@ -30,37 +30,54 @@
namespace offline_pages {
namespace {
-void OnGetPagesByOnlineURLDone(
+void OnGetPagesByURLDone(
+ const GURL& url,
int tab_id,
const std::vector<std::string>& namespaces_to_show_in_original_tab,
const base::Callback<void(const OfflinePageItem*)>& callback,
const MultipleOfflinePageItemResult& pages) {
- const OfflinePageItem* selected_page = nullptr;
+ const OfflinePageItem* selected_page_for_final_url = nullptr;
+ const OfflinePageItem* selected_page_for_original_url = nullptr;
std::string tab_id_str = base::IntToString(tab_id);
- for (const auto& offline_page : pages) {
+ for (const auto& page : pages) {
auto result = std::find(namespaces_to_show_in_original_tab.begin(),
namespaces_to_show_in_original_tab.end(),
- offline_page.client_id.name_space);
+ page.client_id.name_space);
if (result != namespaces_to_show_in_original_tab.end() &&
- offline_page.client_id.id != tab_id_str) {
+ page.client_id.id != tab_id_str) {
continue;
}
- if (!selected_page ||
- offline_page.creation_time > selected_page->creation_time) {
- selected_page = &offline_page;
+ if (OfflinePageUtils::EqualsIgnoringFragment(url, page.url)) {
+ if (!selected_page_for_final_url ||
+ page.creation_time > selected_page_for_final_url->creation_time) {
+ selected_page_for_final_url = &page;
+ }
+ } else {
+ // This is consistent with exact match against original url done in
+ // OfflinePageModelImpl.
+ DCHECK(url == page.original_url);
+ if (!selected_page_for_original_url ||
+ page.creation_time > selected_page_for_original_url->creation_time) {
+ selected_page_for_original_url = &page;
+ }
}
}
- callback.Run(selected_page);
+
+ // Match for final URL should take high priority than matching for original
+ // URL.
+ callback.Run(selected_page_for_final_url ? selected_page_for_final_url
+ : selected_page_for_original_url);
}
} // namespace
// static
-void OfflinePageUtils::SelectPageForOnlineURL(
+void OfflinePageUtils::SelectPageForURL(
content::BrowserContext* browser_context,
- const GURL& online_url,
+ const GURL& url,
+ OfflinePageModel::URLSearchMode url_search_mode,
int tab_id,
const base::Callback<void(const OfflinePageItem*)>& callback) {
OfflinePageModel* offline_page_model =
@@ -71,11 +88,13 @@ void OfflinePageUtils::SelectPageForOnlineURL(
return;
}
- offline_page_model->GetPagesByOnlineURL(
- online_url, base::Bind(&OnGetPagesByOnlineURLDone, tab_id,
- offline_page_model->GetPolicyController()
- ->GetNamespacesRestrictedToOriginalTab(),
- callback));
+ offline_page_model->GetPagesByURL(
+ url,
+ url_search_mode,
+ base::Bind(&OnGetPagesByURLDone, url, tab_id,
+ offline_page_model->GetPolicyController()
+ ->GetNamespacesRestrictedToOriginalTab(),
+ callback));
}
const OfflinePageItem* OfflinePageUtils::GetOfflinePageFromWebContents(
@@ -147,8 +166,10 @@ void OfflinePageUtils::CheckExistenceOfPagesWithURL(
callback.Run(false);
};
- offline_page_model->GetPagesByOnlineURL(
- offline_page_url, base::Bind(continuation, name_space, callback));
+ offline_page_model->GetPagesByURL(
+ offline_page_url,
+ OfflinePageModel::URLSearchMode::SEARCH_BY_FINAL_URL_ONLY,
+ base::Bind(continuation, name_space, callback));
}
// static

Powered by Google App Engine
This is Rietveld 408576698