Updated OpenSearch patch to include fix for upstream bug
Fixes upstream issue with recently-added search engines not showing up
This commit is contained in:
parent
cae6bd9dc0
commit
af7e6222a1
1 changed files with 88 additions and 13 deletions
|
@ -2,13 +2,33 @@ From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
|||
Date: Sun, 6 Mar 2022 18:55:58 +0100
|
||||
Subject: OpenSearch: allow paths and incognito mode
|
||||
|
||||
Fix bug with recently added engines prematurely discarded
|
||||
because they have no last-visit timestamp
|
||||
Allow adding search engines in incognito mode
|
||||
Allow using search engine URLs with non-empty paths
|
||||
Add debug logging
|
||||
Add verbose logging
|
||||
---
|
||||
.../search_engine_tab_helper.cc | 37 +++++++++++++------
|
||||
1 file changed, 26 insertions(+), 11 deletions(-)
|
||||
.../settings/SearchEngineAdapter.java | 4 ++-
|
||||
.../search_engine_tab_helper.cc | 34 +++++++++++++------
|
||||
.../renderer/chrome_render_frame_observer.cc | 2 ++
|
||||
.../search_engines/template_url_fetcher.cc | 19 ++++++++---
|
||||
.../search_engines/template_url_service.cc | 1 -
|
||||
5 files changed, 44 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineAdapter.java b/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineAdapter.java
|
||||
--- a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineAdapter.java
|
||||
+++ b/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineAdapter.java
|
||||
@@ -247,7 +247,9 @@ public class SearchEngineAdapter extends BaseAdapter
|
||||
continue;
|
||||
}
|
||||
if (recentEngineNum < MAX_RECENT_ENGINE_NUM
|
||||
- && templateUrl.getLastVisitedTime() > displayTime) {
|
||||
+ // just-added search engines have never been visited
|
||||
+ && (templateUrl.getLastVisitedTime() == 0 ||
|
||||
+ templateUrl.getLastVisitedTime() > displayTime)) {
|
||||
recentEngineNum++;
|
||||
} else {
|
||||
iterator.remove();
|
||||
diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chrome/browser/ui/search_engines/search_engine_tab_helper.cc
|
||||
--- a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc
|
||||
+++ b/chrome/browser/ui/search_engines/search_engine_tab_helper.cc
|
||||
|
@ -90,7 +110,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro
|
|||
|
||||
// If the current page is a form submit, find the last page that was not a
|
||||
// form submit and use its url to generate the keyword from.
|
||||
@@ -141,14 +152,17 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument(
|
||||
@@ -141,8 +152,10 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument(
|
||||
(index > 0) && IsFormSubmit(entry);
|
||||
entry = controller.GetEntryAtIndex(index))
|
||||
--index;
|
||||
|
@ -102,15 +122,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro
|
|||
|
||||
// Autogenerate a keyword for the autodetected case; in the other cases we'll
|
||||
// generate a keyword later after fetching the OSDD.
|
||||
std::u16string keyword = GenerateKeywordFromNavigationEntry(entry);
|
||||
- if (keyword.empty())
|
||||
+ if (keyword.empty()) {
|
||||
return;
|
||||
+ }
|
||||
|
||||
auto* frame = web_contents()->GetMainFrame();
|
||||
mojo::Remote<network::mojom::URLLoaderFactory> url_loader_factory;
|
||||
@@ -157,6 +171,7 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument(
|
||||
@@ -157,6 +170,7 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument(
|
||||
|
||||
// Download the OpenSearch description document. If this is successful, a
|
||||
// new keyword will be created when done.
|
||||
|
@ -118,5 +130,68 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro
|
|||
TemplateURLFetcherFactory::GetForProfile(profile)->ScheduleDownload(
|
||||
keyword, osdd_url, entry->GetFavicon().url,
|
||||
frame->GetLastCommittedOrigin(), url_loader_factory.get(),
|
||||
diff --git a/chrome/renderer/chrome_render_frame_observer.cc b/chrome/renderer/chrome_render_frame_observer.cc
|
||||
--- a/chrome/renderer/chrome_render_frame_observer.cc
|
||||
+++ b/chrome/renderer/chrome_render_frame_observer.cc
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
#include "base/bind.h"
|
||||
#include "base/command_line.h"
|
||||
+#include "base/logging.h"
|
||||
#include "base/metrics/histogram_macros.h"
|
||||
#include "base/no_destructor.h"
|
||||
#include "base/strings/string_number_conversions.h"
|
||||
@@ -202,6 +203,7 @@ void ChromeRenderFrameObserver::DidFinishLoad() {
|
||||
|
||||
GURL osdd_url = frame->GetDocument().OpenSearchDescriptionURL();
|
||||
if (!osdd_url.is_empty()) {
|
||||
+ LOG(INFO) << "OpenSearch: found OSDD URL: " << osdd_url;
|
||||
mojo::AssociatedRemote<chrome::mojom::OpenSearchDescriptionDocumentHandler>
|
||||
osdd_handler;
|
||||
render_frame()->GetRemoteAssociatedInterfaces()->GetInterface(
|
||||
diff --git a/components/search_engines/template_url_fetcher.cc b/components/search_engines/template_url_fetcher.cc
|
||||
--- a/components/search_engines/template_url_fetcher.cc
|
||||
+++ b/components/search_engines/template_url_fetcher.cc
|
||||
@@ -260,14 +260,25 @@ void TemplateURLFetcher::ScheduleDownload(
|
||||
|
||||
const TemplateURL* template_url =
|
||||
template_url_service_->GetTemplateURLForKeyword(keyword);
|
||||
- if (template_url && (!template_url->safe_for_autoreplace() ||
|
||||
- template_url->originating_url() == osdd_url))
|
||||
- return;
|
||||
+ if (template_url) {
|
||||
+ if (!template_url->safe_for_autoreplace()) {
|
||||
+ LOG(INFO) << "OpenSearch: OSDD URL not safe for autoreplace: " << osdd_url;
|
||||
+ return;
|
||||
+ }
|
||||
+ if (template_url->originating_url() == osdd_url) {
|
||||
+ // Either there is a user created TemplateURL for this keyword, or the
|
||||
+ // keyword has the same OSDD url and we've parsed it.
|
||||
+ LOG(INFO) << "OpenSearch: OSDD URL was already parsed: " << osdd_url;
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
// Make sure we aren't already downloading this request.
|
||||
for (const auto& request : requests_) {
|
||||
- if ((request->url() == osdd_url) || (request->keyword() == keyword))
|
||||
+ if ((request->url() == osdd_url) || (request->keyword() == keyword)) {
|
||||
+ LOG(INFO) << "OpenSearch: already downloading OSDD URL: " << osdd_url;
|
||||
return;
|
||||
+ }
|
||||
}
|
||||
|
||||
requests_.push_back(std::make_unique<RequestDelegate>(
|
||||
diff --git a/components/search_engines/template_url_service.cc b/components/search_engines/template_url_service.cc
|
||||
--- a/components/search_engines/template_url_service.cc
|
||||
+++ b/components/search_engines/template_url_service.cc
|
||||
@@ -462,7 +462,6 @@ TemplateURL* TemplateURLService::Add(
|
||||
(!FindTemplateURLForExtension(template_url->extension_info_->extension_id,
|
||||
template_url->type()) &&
|
||||
template_url->id() == kInvalidTemplateURLID));
|
||||
-
|
||||
return Add(std::move(template_url), true);
|
||||
}
|
||||
|
||||
--
|
||||
2.25.1
|
||||
|
|
Loading…
Add table
Reference in a new issue