summaryrefslogtreecommitdiff
path: root/chromium/components/search_engines
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-11-18 16:35:47 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-11-18 15:45:54 +0000
commit32f5a1c56531e4210bc4cf8d8c7825d66e081888 (patch)
treeeeeec6822f4d738d8454525233fd0e2e3a659e6d /chromium/components/search_engines
parent99677208ff3b216fdfec551fbe548da5520cd6fb (diff)
downloadqtwebengine-chromium-32f5a1c56531e4210bc4cf8d8c7825d66e081888.tar.gz
BASELINE: Update Chromium to 87.0.4280.67
Change-Id: Ib157360be8c2ffb2c73125751a89f60e049c1d54 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/components/search_engines')
-rw-r--r--chromium/components/search_engines/BUILD.gn25
-rw-r--r--chromium/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java97
-rw-r--r--chromium/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrlService.java405
-rw-r--r--chromium/components/search_engines/android/template_url_service_android.cc6
-rw-r--r--chromium/components/search_engines/android/template_url_service_android.h2
-rw-r--r--chromium/components/search_engines/prepopulated_engines.json14
-rw-r--r--chromium/components/search_engines/search_engine_utils.cc60
-rw-r--r--chromium/components/search_engines/search_engine_utils.h20
-rw-r--r--chromium/components/search_engines/template_url.cc6
-rw-r--r--chromium/components/search_engines/template_url_data_util.cc25
-rw-r--r--chromium/components/search_engines/template_url_prepopulate_data.cc39
-rw-r--r--chromium/components/search_engines/template_url_prepopulate_data.h7
12 files changed, 138 insertions, 568 deletions
diff --git a/chromium/components/search_engines/BUILD.gn b/chromium/components/search_engines/BUILD.gn
index aa65c005837..eb66a2d9456 100644
--- a/chromium/components/search_engines/BUILD.gn
+++ b/chromium/components/search_engines/BUILD.gn
@@ -50,7 +50,9 @@ static_library("search_engines") {
]
public_deps = [
+ ":prepopulated_engines",
":search_engine_type",
+ ":search_engine_utils",
"//base",
"//components/google/core/common",
"//components/keyed_service/core",
@@ -61,7 +63,6 @@ static_library("search_engines") {
]
deps = [
- ":prepopulated_engines",
"//base:i18n",
"//components/country_codes",
"//components/database_utils",
@@ -100,6 +101,28 @@ static_library("search_engines") {
}
}
+source_set("search_engine_utils") {
+ sources = [
+ "search_engine_utils.cc",
+ "search_engine_utils.h",
+ ]
+
+ public_deps = [
+ ":prepopulated_engines",
+ ":search_engine_type",
+ "//components/google/core/common",
+ ]
+
+ deps = [ "//url" ]
+
+ if (is_android) {
+ deps += [
+ "//components/search_engines/android:jni_headers",
+ "//url:gurl_android",
+ ]
+ }
+}
+
source_set("search_engine_type") {
sources = [ "search_engine_type.h" ]
}
diff --git a/chromium/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java b/chromium/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java
deleted file mode 100644
index 83ffb83ca48..00000000000
--- a/chromium/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-package org.chromium.components.search_engines;
-
-import org.chromium.base.annotations.CalledByNative;
-import org.chromium.base.annotations.NativeMethods;
-
-import java.util.Locale;
-
-/**
- * Represents object of a search engine. It only caches the native pointer of TemplateURL object
- * from native side. Any class uses this need to register a {@link TemplateUrlServiceObserver} on
- * {@link TemplatUrlService} to listen the native changes in case the native pointer is destroyed.
- */
-public class TemplateUrl {
- private final long mTemplateUrlPtr;
-
- @CalledByNative
- private static TemplateUrl create(long templateUrlPtr) {
- return new TemplateUrl(templateUrlPtr);
- }
-
- protected TemplateUrl(long templateUrlPtr) {
- mTemplateUrlPtr = templateUrlPtr;
- }
-
- /**
- * @return The name of the search engine.
- */
- public String getShortName() {
- return TemplateUrlJni.get().getShortName(mTemplateUrlPtr);
- }
-
- /**
- * @return The prepopulated id of the search engine. For predefined engines, this field is a
- * non-zero, for custom search engines, it will return 0.
- */
- public int getPrepopulatedId() {
- return TemplateUrlJni.get().getPrepopulatedId(mTemplateUrlPtr);
- }
-
- /**
- * @return Whether a search engine is prepopulated or created by policy.
- */
- public boolean getIsPrepopulated() {
- return TemplateUrlJni.get().isPrepopulatedOrCreatedByPolicy(mTemplateUrlPtr);
- }
-
- /**
- * @return The keyword of the search engine.
- */
- public String getKeyword() {
- return TemplateUrlJni.get().getKeyword(mTemplateUrlPtr);
- }
-
- /**
- * @return The last time used this search engine. If a search engine hasn't been used, it will
- * return 0.
- */
- public long getLastVisitedTime() {
- return TemplateUrlJni.get().getLastVisitedTime(mTemplateUrlPtr);
- }
-
- /**
- * @return The template URL of the search engine. The format can be looked up in
- * prepopulated_engines.json.
- */
- public String getURL() {
- return TemplateUrlJni.get().getURL(mTemplateUrlPtr);
- }
-
- @Override
- public boolean equals(Object other) {
- if (!(other instanceof TemplateUrl)) return false;
- TemplateUrl otherTemplateUrl = (TemplateUrl) other;
- return mTemplateUrlPtr == otherTemplateUrl.mTemplateUrlPtr;
- }
-
- @Override
- public String toString() {
- return String.format(Locale.US,
- "TemplateURL -- keyword: %s, short name: %s, "
- + "prepopulated: %b",
- getKeyword(), getShortName(), getIsPrepopulated());
- }
-
- @NativeMethods
- public interface Natives {
- String getShortName(long templateUrlPtr);
- String getKeyword(long templateUrlPtr);
- boolean isPrepopulatedOrCreatedByPolicy(long templateUrlPtr);
- long getLastVisitedTime(long templateUrlPtr);
- int getPrepopulatedId(long templateUrlPtr);
- String getURL(long templateUrlPtr);
- }
-}
diff --git a/chromium/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrlService.java b/chromium/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrlService.java
deleted file mode 100644
index 9c672597714..00000000000
--- a/chromium/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrlService.java
+++ /dev/null
@@ -1,405 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.components.search_engines;
-
-import androidx.annotation.Nullable;
-import androidx.annotation.VisibleForTesting;
-
-import org.chromium.base.ObserverList;
-import org.chromium.base.ThreadUtils;
-import org.chromium.base.annotations.CalledByNative;
-import org.chromium.base.annotations.NativeMethods;
-import org.chromium.base.task.PostTask;
-import org.chromium.content_public.browser.UiThreadTaskTraits;
-import org.chromium.url.GURL;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Android wrapper of the TemplateUrlService which provides access from the Java
- * layer.
- *
- * Only usable from the UI thread as it's primary purpose is for supporting the Android
- * preferences UI.
- *
- * See components/search_engines/template_url_service.h for more details.
- */
-public class TemplateUrlService {
- /**
- * This listener will be notified when template url service is done loading.
- */
- public interface LoadListener { void onTemplateUrlServiceLoaded(); }
-
- /**
- * Observer to be notified whenever the set of TemplateURLs are modified.
- */
- public interface TemplateUrlServiceObserver {
- /**
- * Notification that the template url model has changed in some way.
- */
- void onTemplateURLServiceChanged();
- }
-
- private final ObserverList<LoadListener> mLoadListeners = new ObserverList<>();
- private final ObserverList<TemplateUrlServiceObserver> mObservers = new ObserverList<>();
- private long mNativeTemplateUrlServiceAndroid;
-
- private TemplateUrlService(long nativeTemplateUrlServiceAndroid) {
- // Note that this technically leaks the native object, however, TemplateUrlService
- // is a singleton that lives forever and there's no clean shutdown of Chrome on Android.
- mNativeTemplateUrlServiceAndroid = nativeTemplateUrlServiceAndroid;
- }
-
- @CalledByNative
- private static TemplateUrlService create(long nativeTemplateUrlServiceAndroid) {
- return new TemplateUrlService(nativeTemplateUrlServiceAndroid);
- }
-
- @CalledByNative
- private void clearNativePtr() {
- mNativeTemplateUrlServiceAndroid = 0;
- }
-
- public boolean isLoaded() {
- ThreadUtils.assertOnUiThread();
- return TemplateUrlServiceJni.get().isLoaded(
- mNativeTemplateUrlServiceAndroid, TemplateUrlService.this);
- }
-
- public void load() {
- ThreadUtils.assertOnUiThread();
- TemplateUrlServiceJni.get().load(mNativeTemplateUrlServiceAndroid, TemplateUrlService.this);
- }
-
- /**
- * Ensure the TemplateUrlService is loaded before running the specified action. If the service
- * is already loaded, then run the action immediately.
- * <p>
- * Because this can introduce an arbitrary delay in the action being executed, ensure the state
- * is still valid in the action before interacting with anything that might no longer be
- * available (i.e. an Activity that has since been destroyed).
- *
- * @param action The action to be run.
- */
- public void runWhenLoaded(final Runnable action) {
- if (isLoaded()) {
- action.run();
- } else {
- registerLoadListener(new LoadListener() {
- @Override
- public void onTemplateUrlServiceLoaded() {
- unregisterLoadListener(this);
- action.run();
- }
- });
- load();
- }
- }
-
- /**
- * Returns a list of the all available search engines.
- */
- public List<TemplateUrl> getTemplateUrls() {
- ThreadUtils.assertOnUiThread();
- List<TemplateUrl> templateUrls = new ArrayList<>();
- TemplateUrlServiceJni.get().getTemplateUrls(
- mNativeTemplateUrlServiceAndroid, TemplateUrlService.this, templateUrls);
- return templateUrls;
- }
-
- /**
- * Called from native to populate the list of all available search engines.
- * @param templateUrls The list of {@link TemplateUrl} to be added.
- * @param templateUrl The {@link TemplateUrl} would add to the list.
- */
- @CalledByNative
- private static void addTemplateUrlToList(
- List<TemplateUrl> templateUrls, TemplateUrl templateUrl) {
- templateUrls.add(templateUrl);
- }
-
- /**
- * Called from native when template URL service is done loading.
- */
- @CalledByNative
- private void templateUrlServiceLoaded() {
- ThreadUtils.assertOnUiThread();
- for (LoadListener listener : mLoadListeners) {
- listener.onTemplateUrlServiceLoaded();
- }
- }
-
- @CalledByNative
- private void onTemplateURLServiceChanged() {
- for (TemplateUrlServiceObserver observer : mObservers) {
- observer.onTemplateURLServiceChanged();
- }
- }
-
- /**
- * @return {@link TemplateUrl} for the default search engine. This can
- * be null if DSEs are disabled entirely by administrators.
- */
- public @Nullable TemplateUrl getDefaultSearchEngineTemplateUrl() {
- if (!isLoaded()) return null;
- return TemplateUrlServiceJni.get().getDefaultSearchEngine(
- mNativeTemplateUrlServiceAndroid, TemplateUrlService.this);
- }
-
- public void setSearchEngine(String selectedKeyword) {
- ThreadUtils.assertOnUiThread();
- TemplateUrlServiceJni.get().setUserSelectedDefaultSearchProvider(
- mNativeTemplateUrlServiceAndroid, TemplateUrlService.this, selectedKeyword);
- }
-
- /**
- * @return Whether the default search engine is managed and controlled by policy. If true, the
- * DSE can not be modified by the user.
- */
- public boolean isDefaultSearchManaged() {
- return TemplateUrlServiceJni.get().isDefaultSearchManaged(
- mNativeTemplateUrlServiceAndroid, TemplateUrlService.this);
- }
-
- /**
- * @return Whether or not the default search engine has search by image support.
- */
- public boolean isSearchByImageAvailable() {
- ThreadUtils.assertOnUiThread();
- return TemplateUrlServiceJni.get().isSearchByImageAvailable(
- mNativeTemplateUrlServiceAndroid, TemplateUrlService.this);
- }
-
- /**
- * @return Whether the default configured search engine is for a Google property.
- */
- public boolean isDefaultSearchEngineGoogle() {
- return TemplateUrlServiceJni.get().isDefaultSearchEngineGoogle(
- mNativeTemplateUrlServiceAndroid, TemplateUrlService.this);
- }
-
- /**
- * Checks whether a search result page is from a default search provider.
- * @param url The url for the search result page.
- * @return Whether the search result page with the given url from the default search provider.
- */
- public boolean isSearchResultsPageFromDefaultSearchProvider(String url) {
- ThreadUtils.assertOnUiThread();
- return TemplateUrlServiceJni.get().isSearchResultsPageFromDefaultSearchProvider(
- mNativeTemplateUrlServiceAndroid, TemplateUrlService.this, url);
- }
-
- /**
- * Registers a listener for the callback that indicates that the
- * TemplateURLService has loaded.
- */
- public void registerLoadListener(final LoadListener listener) {
- ThreadUtils.assertOnUiThread();
- boolean added = mLoadListeners.addObserver(listener);
- assert added;
-
- // If the load has already been completed, post a load complete to the observer. Done
- // as an asynchronous call to keep the client code predictable in the loaded/unloaded state.
- if (isLoaded()) {
- PostTask.postTask(UiThreadTaskTraits.DEFAULT, () -> {
- if (!mLoadListeners.hasObserver(listener)) return;
-
- listener.onTemplateUrlServiceLoaded();
- });
- }
- }
-
- /**
- * Unregisters a listener for the callback that indicates that the
- * TemplateURLService has loaded.
- */
- public void unregisterLoadListener(LoadListener listener) {
- ThreadUtils.assertOnUiThread();
- boolean removed = mLoadListeners.removeObserver(listener);
- assert removed;
- }
-
- /**
- * Adds an observer to be notified on changes to the template URLs.
- * @param observer The observer to be added.
- */
- public void addObserver(TemplateUrlServiceObserver observer) {
- mObservers.addObserver(observer);
- }
-
- /**
- * Removes an observer for changes to the template URLs.
- * @param observer The observer to be removed.
- */
- public void removeObserver(TemplateUrlServiceObserver observer) {
- mObservers.removeObserver(observer);
- }
-
- /**
- * Finds the default search engine for the default provider and returns the url query
- * {@link String} for {@code query}.
- * @param query The {@link String} that represents the text query the search url should
- * represent.
- * @return A {@link String} that contains the url of the default search engine with
- * {@code query} inserted as the search parameter.
- */
- public String getUrlForSearchQuery(String query) {
- return getUrlForSearchQuery(query, null);
- }
-
- /**
- * Finds the default search engine for the default provider and returns the url query
- * {@link String} for {@code query}.
- * @param query The {@link String} that represents the text query the search url should
- * represent.
- * @param searchParams A list of search params to be appended to the query.
- * @return A {@link String} that contains the url of the default search engine with
- * {@code query} inserted as the search parameter.
- */
- public String getUrlForSearchQuery(String query, List<String> searchParams) {
- return TemplateUrlServiceJni.get().getUrlForSearchQuery(mNativeTemplateUrlServiceAndroid,
- TemplateUrlService.this, query,
- searchParams == null ? null : searchParams.toArray(new String[0]));
- }
-
- /**
- * See {@link #getSearchQueryForUrl(GURL)}.
- *
- * @deprecated Please use {@link #getSearchQueryForUrl(GURL)} instead.
- */
- @Deprecated
- public String getSearchQueryForUrl(String url) {
- return getSearchQueryForUrl(new GURL(url));
- }
-
- /**
- * Finds the query in the url, if any. Returns empty if no query is present.
- */
- public String getSearchQueryForUrl(GURL url) {
- return TemplateUrlServiceJni.get().getSearchQueryForUrl(
- mNativeTemplateUrlServiceAndroid, TemplateUrlService.this, url);
- }
-
- /**
- * Finds the default search engine for the default provider and returns the url query
- * {@link String} for {@code query} with voice input source param set.
- * @param query The {@link String} that represents the text query the search url should
- * represent.
- * @return A {@link String} that contains the url of the default search engine with
- * {@code query} inserted as the search parameter and voice input source param set.
- */
- public GURL getUrlForVoiceSearchQuery(String query) {
- return TemplateUrlServiceJni.get().getUrlForVoiceSearchQuery(
- mNativeTemplateUrlServiceAndroid, TemplateUrlService.this, query);
- }
-
- /**
- * Finds the default search engine for the default provider and returns the url query
- * {@link String} for {@code query} with the contextual search version param set.
- * @param query The search term to use as the main query in the returned search url.
- * @param alternateTerm The alternate search term to use as an alternate suggestion.
- * @param shouldPrefetch Whether the returned url should include a prefetch parameter.
- * @param protocolVersion The version of the Contextual Search API protocol to use.
- * @return A {@link String} that contains the url of the default search engine with
- * {@code query} and {@code alternateTerm} inserted as parameters and contextual
- * search and prefetch parameters conditionally set.
- */
- public GURL getUrlForContextualSearchQuery(
- String query, String alternateTerm, boolean shouldPrefetch, String protocolVersion) {
- return TemplateUrlServiceJni.get().getUrlForContextualSearchQuery(
- mNativeTemplateUrlServiceAndroid, TemplateUrlService.this, query, alternateTerm,
- shouldPrefetch, protocolVersion);
- }
-
- /**
- * Finds the URL for the search engine for the given keyword.
- * @param keyword The templateUrl keyword to look up.
- * @return A {@link String} that contains the url of the specified search engine.
- */
- public String getSearchEngineUrlFromTemplateUrl(String keyword) {
- return TemplateUrlServiceJni.get().getSearchEngineUrlFromTemplateUrl(
- mNativeTemplateUrlServiceAndroid, TemplateUrlService.this, keyword);
- }
-
- /**
- * Finds the search engine type for the given keyword.
- * @param keyword The templateUrl keyword to look up.
- * @return The search engine type of the specified search engine that contains the keyword.
- */
- public int getSearchEngineTypeFromTemplateUrl(String keyword) {
- return TemplateUrlServiceJni.get().getSearchEngineTypeFromTemplateUrl(
- mNativeTemplateUrlServiceAndroid, TemplateUrlService.this, keyword);
- }
-
- /**
- * Adds a search engine, set by Play API.
- * @param name The name of the search engine to be added.
- * @param keyword The keyword of the search engine to be added.
- * @param searchUrl Search url of the search engine to be added.
- * @param suggestUrl Url for retrieving search suggestions.
- * @param faviconUrl Favicon url of the search engine to be added.
- * @param setAsDefault If true, set as default search provider.
- * @return True if search engine was successfully added, false if search engine from Play API
- * with such keyword already existed (e.g. from previous attempt to set search engine).
- */
- public boolean setPlayAPISearchEngine(String name, String keyword, String searchUrl,
- String suggestUrl, String faviconUrl, boolean setAsDefault) {
- return TemplateUrlServiceJni.get().setPlayAPISearchEngine(mNativeTemplateUrlServiceAndroid,
- TemplateUrlService.this, name, keyword, searchUrl, suggestUrl, faviconUrl,
- setAsDefault);
- }
- // TODO(crbug/1002271): This API is called from clank repo. Helper function below will be
- // removed once clank repo is updated.
- public boolean setPlayAPISearchEngine(
- String name, String keyword, String searchUrl, String suggestUrl, String faviconUrl) {
- return TemplateUrlServiceJni.get().setPlayAPISearchEngine(mNativeTemplateUrlServiceAndroid,
- TemplateUrlService.this, name, keyword, searchUrl, suggestUrl, faviconUrl, true);
- }
-
- @VisibleForTesting
- public String addSearchEngineForTesting(String keyword, int ageInDays) {
- return TemplateUrlServiceJni.get().addSearchEngineForTesting(
- mNativeTemplateUrlServiceAndroid, TemplateUrlService.this, keyword, ageInDays);
- }
-
- @NativeMethods
- interface Natives {
- void load(long nativeTemplateUrlServiceAndroid, TemplateUrlService caller);
- boolean isLoaded(long nativeTemplateUrlServiceAndroid, TemplateUrlService caller);
- void setUserSelectedDefaultSearchProvider(long nativeTemplateUrlServiceAndroid,
- TemplateUrlService caller, String selectedKeyword);
- boolean isDefaultSearchManaged(
- long nativeTemplateUrlServiceAndroid, TemplateUrlService caller);
- boolean isSearchResultsPageFromDefaultSearchProvider(
- long nativeTemplateUrlServiceAndroid, TemplateUrlService caller, String url);
- boolean isSearchByImageAvailable(
- long nativeTemplateUrlServiceAndroid, TemplateUrlService caller);
- boolean isDefaultSearchEngineGoogle(
- long nativeTemplateUrlServiceAndroid, TemplateUrlService caller);
- String getUrlForSearchQuery(long nativeTemplateUrlServiceAndroid, TemplateUrlService caller,
- String query, String[] searchParams);
- String getSearchQueryForUrl(
- long nativeTemplateUrlServiceAndroid, TemplateUrlService caller, GURL url);
- GURL getUrlForVoiceSearchQuery(
- long nativeTemplateUrlServiceAndroid, TemplateUrlService caller, String query);
- GURL getUrlForContextualSearchQuery(long nativeTemplateUrlServiceAndroid,
- TemplateUrlService caller, String query, String alternateTerm,
- boolean shouldPrefetch, String protocolVersion);
- String getSearchEngineUrlFromTemplateUrl(
- long nativeTemplateUrlServiceAndroid, TemplateUrlService caller, String keyword);
- int getSearchEngineTypeFromTemplateUrl(
- long nativeTemplateUrlServiceAndroid, TemplateUrlService caller, String keyword);
- String addSearchEngineForTesting(long nativeTemplateUrlServiceAndroid,
- TemplateUrlService caller, String keyword, int offset);
- boolean setPlayAPISearchEngine(long nativeTemplateUrlServiceAndroid,
- TemplateUrlService caller, String name, String keyword, String searchUrl,
- String suggestUrl, String faviconUrl, boolean setAsDefault);
- void getTemplateUrls(long nativeTemplateUrlServiceAndroid, TemplateUrlService caller,
- List<TemplateUrl> templateUrls);
- TemplateUrl getDefaultSearchEngine(
- long nativeTemplateUrlServiceAndroid, TemplateUrlService caller);
- }
-}
diff --git a/chromium/components/search_engines/android/template_url_service_android.cc b/chromium/components/search_engines/android/template_url_service_android.cc
index 3f986b9404a..ab52b89d5eb 100644
--- a/chromium/components/search_engines/android/template_url_service_android.cc
+++ b/chromium/components/search_engines/android/template_url_service_android.cc
@@ -112,10 +112,10 @@ jboolean
TemplateUrlServiceAndroid::IsSearchResultsPageFromDefaultSearchProvider(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj,
- const base::android::JavaParamRef<jstring>& jurl) {
- GURL url(base::android::ConvertJavaStringToUTF8(env, jurl));
+ const base::android::JavaParamRef<jobject>& jurl) {
+ std::unique_ptr<GURL> url = url::GURLAndroid::ToNativeGURL(env, jurl);
return template_url_service_->IsSearchResultsPageFromDefaultSearchProvider(
- url);
+ *url);
}
void TemplateUrlServiceAndroid::OnTemplateURLServiceLoaded() {
diff --git a/chromium/components/search_engines/android/template_url_service_android.h b/chromium/components/search_engines/android/template_url_service_android.h
index fe1ac78158b..715bbeb2bba 100644
--- a/chromium/components/search_engines/android/template_url_service_android.h
+++ b/chromium/components/search_engines/android/template_url_service_android.h
@@ -40,7 +40,7 @@ class TemplateUrlServiceAndroid : public TemplateURLServiceObserver {
jboolean IsSearchResultsPageFromDefaultSearchProvider(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj,
- const base::android::JavaParamRef<jstring>& jurl);
+ const base::android::JavaParamRef<jobject>& jurl);
base::android::ScopedJavaLocalRef<jstring> GetUrlForSearchQuery(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj,
diff --git a/chromium/components/search_engines/prepopulated_engines.json b/chromium/components/search_engines/prepopulated_engines.json
index bc5fb3f15a9..cb4bc61f0c6 100644
--- a/chromium/components/search_engines/prepopulated_engines.json
+++ b/chromium/components/search_engines/prepopulated_engines.json
@@ -28,7 +28,7 @@
// Increment this if you change the data in ways that mean users with
// existing data should get a new version. Otherwise, existing data may
// continue to be used and updates made here will not always appear.
- "kCurrentDataVersion": 121
+ "kCurrentDataVersion": 123
},
// The following engines are included in country lists and are added to the
@@ -538,7 +538,7 @@
"favicon_url": "https://yastatic.net/lego/_/pDu9OWAQKB0s2J9IojKpiS_Eho.ico",
"logo_url": "https://storage.ape.yandex.net/get/browser/Doodles/yandex/drawable-xxhdpi/yandex.png",
"search_url": "https://yandex.by/{yandex:searchPath}?text={searchTerms}",
- "suggest_url": "https://suggest.yandex.by/suggest-ff.cgi?part={searchTerms}",
+ "suggest_url": "https://suggest.yandex.by/suggest-ff.cgi?part={searchTerms}&{google:cursorPosition}",
"image_url": "https://yandex.by/images/search/?rpt=imageview",
"image_url_post_params": "upfile={google:imageThumbnail},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight},prg=1",
"new_tab_url": "https://www.yandex.by/chrome/newtab",
@@ -551,7 +551,7 @@
"keyword": "yandex.com",
"favicon_url": "https://yastatic.net/lego/_/rBTjd6UOPk5913OSn5ZQVYMTQWQ.ico",
"search_url": "https://yandex.com/search/?text={searchTerms}&from=os&clid=1836588",
- "suggest_url": "https://suggest.yandex.com/suggest-ff.cgi?part={searchTerms}&uil=en&v=3&sn=5",
+ "suggest_url": "https://suggest.yandex.com/suggest-ff.cgi?part={searchTerms}&{google:cursorPosition}&uil=en&v=3&sn=5",
"image_url": "https://yandex.com/images/search?rpt=imageview",
"image_url_post_params": "upfile={google:imageThumbnail},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight},prg=1",
"type": "SEARCH_ENGINE_YANDEX",
@@ -564,7 +564,7 @@
"favicon_url": "https://yastatic.net/lego/_/pDu9OWAQKB0s2J9IojKpiS_Eho.ico",
"logo_url": "https://storage.ape.yandex.net/get/browser/Doodles/yandex/drawable-xxhdpi/yandex.png",
"search_url": "https://yandex.kz/{yandex:searchPath}?text={searchTerms}",
- "suggest_url": "https://suggest.yandex.kz/suggest-ff.cgi?part={searchTerms}",
+ "suggest_url": "https://suggest.yandex.kz/suggest-ff.cgi?part={searchTerms}&{google:cursorPosition}",
"image_url": "https://yandex.kz/images/search/?rpt=imageview",
"image_url_post_params": "upfile={google:imageThumbnail},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight},prg=1",
"new_tab_url": "https://www.yandex.kz/chrome/newtab",
@@ -578,7 +578,7 @@
"favicon_url": "https://yastatic.net/lego/_/pDu9OWAQKB0s2J9IojKpiS_Eho.ico",
"logo_url": "https://storage.ape.yandex.net/get/browser/Doodles/yandex/drawable-xxhdpi/yandex.png",
"search_url": "https://yandex.ru/{yandex:searchPath}?text={searchTerms}&{yandex:referralID}",
- "suggest_url": "https://suggest.yandex.ru/suggest-ff.cgi?part={searchTerms}",
+ "suggest_url": "https://suggest.yandex.ru/suggest-ff.cgi?part={searchTerms}&{google:cursorPosition}",
"image_url": "https://yandex.ru/images/search/?rpt=imageview",
"image_url_post_params": "upfile={google:imageThumbnail},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight},prg=1",
"new_tab_url": "https://www.yandex.ru/chrome/newtab",
@@ -591,7 +591,7 @@
"keyword": "yandex.com.tr",
"favicon_url": "https://yastatic.net/lego/_/rBTjd6UOPk5913OSn5ZQVYMTQWQ.ico",
"search_url": "https://www.yandex.com.tr/{yandex:searchPath}?text={searchTerms}",
- "suggest_url": "https://suggest.yandex.com.tr/suggest-ff.cgi?part={searchTerms}",
+ "suggest_url": "https://suggest.yandex.com.tr/suggest-ff.cgi?part={searchTerms}&{google:cursorPosition}",
"image_url": "https://yandex.com.tr/gorsel/search?rpt=imageview",
"image_url_post_params": "upfile={google:imageThumbnail},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight},prg=1",
"new_tab_url": "https://www.yandex.com.tr/chrome/newtab",
@@ -605,7 +605,7 @@
"favicon_url": "https://yastatic.net/lego/_/pDu9OWAQKB0s2J9IojKpiS_Eho.ico",
"logo_url": "https://storage.ape.yandex.net/get/browser/Doodles/yandex/drawable-xxhdpi/yandex.png",
"search_url": "https://yandex.ua/{yandex:searchPath}?text={searchTerms}",
- "suggest_url": "https://suggest.yandex.ua/suggest-ff.cgi?part={searchTerms}",
+ "suggest_url": "https://suggest.yandex.ua/suggest-ff.cgi?part={searchTerms}&{google:cursorPosition}",
"image_url": "https://yandex.ua/images/search/?rpt=imageview",
"image_url_post_params": "upfile={google:imageThumbnail},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight},prg=1",
"new_tab_url": "https://www.yandex.ua/chrome/newtab",
diff --git a/chromium/components/search_engines/search_engine_utils.cc b/chromium/components/search_engines/search_engine_utils.cc
new file mode 100644
index 00000000000..ecbd15614ef
--- /dev/null
+++ b/chromium/components/search_engines/search_engine_utils.cc
@@ -0,0 +1,60 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/search_engines/search_engine_utils.h"
+
+#include "components/google/core/common/google_util.h"
+#include "components/search_engines/prepopulated_engines.h"
+#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
+#include "url/gurl.h"
+
+namespace SearchEngineUtils {
+
+namespace {
+
+bool SameDomain(const GURL& given_url, const GURL& prepopulated_url) {
+ return prepopulated_url.is_valid() &&
+ net::registry_controlled_domains::SameDomainOrHost(
+ given_url, prepopulated_url,
+ net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES);
+}
+
+} // namespace
+
+// Global functions -----------------------------------------------------------
+
+SearchEngineType GetEngineType(const GURL& url) {
+ DCHECK(url.is_valid());
+
+ // Check using TLD+1s, in order to more aggressively match search engine types
+ // for data imported from other browsers.
+ //
+ // First special-case Google, because the prepopulate URL for it will not
+ // convert to a GURL and thus won't have an origin. Instead see if the
+ // incoming URL's host is "[*.]google.<TLD>".
+ if (google_util::IsGoogleHostname(url.host(),
+ google_util::DISALLOW_SUBDOMAIN))
+ return TemplateURLPrepopulateData::google.type;
+
+ // Now check the rest of the prepopulate data.
+ for (size_t i = 0; i < TemplateURLPrepopulateData::kAllEnginesLength; ++i) {
+ // First check the main search URL.
+ if (SameDomain(
+ url, GURL(TemplateURLPrepopulateData::kAllEngines[i]->search_url)))
+ return TemplateURLPrepopulateData::kAllEngines[i]->type;
+
+ // Then check the alternate URLs.
+ for (size_t j = 0;
+ j < TemplateURLPrepopulateData::kAllEngines[i]->alternate_urls_size;
+ ++j) {
+ if (SameDomain(url, GURL(TemplateURLPrepopulateData::kAllEngines[i]
+ ->alternate_urls[j])))
+ return TemplateURLPrepopulateData::kAllEngines[i]->type;
+ }
+ }
+
+ return SEARCH_ENGINE_OTHER;
+}
+
+} // namespace SearchEngineUtils
diff --git a/chromium/components/search_engines/search_engine_utils.h b/chromium/components/search_engines/search_engine_utils.h
new file mode 100644
index 00000000000..83e0dd43dac
--- /dev/null
+++ b/chromium/components/search_engines/search_engine_utils.h
@@ -0,0 +1,20 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_SEARCH_ENGINES_SEARCH_ENGINE_UTILS_H_
+#define COMPONENTS_SEARCH_ENGINES_SEARCH_ENGINE_UTILS_H_
+
+#include "components/search_engines/search_engine_type.h"
+
+class GURL;
+
+namespace SearchEngineUtils {
+
+// Like the above, but takes a GURL which is expected to represent a search URL.
+// This may be called on any thread.
+SearchEngineType GetEngineType(const GURL& url);
+
+} // namespace SearchEngineUtils
+
+#endif // COMPONENTS_SEARCH_ENGINES_SEARCH_ENGINE_UTILS_H_
diff --git a/chromium/components/search_engines/template_url.cc b/chromium/components/search_engines/template_url.cc
index e881a988315..2a4c441162f 100644
--- a/chromium/components/search_engines/template_url.cc
+++ b/chromium/components/search_engines/template_url.cc
@@ -26,9 +26,9 @@
#include "base/trace_event/memory_usage_estimator.h"
#include "build/build_config.h"
#include "components/google/core/common/google_util.h"
+#include "components/search_engines/search_engine_utils.h"
#include "components/search_engines/search_engines_switches.h"
#include "components/search_engines/search_terms_data.h"
-#include "components/search_engines/template_url_prepopulate_data.h"
#include "components/url_formatter/url_formatter.h"
#include "google_apis/google_api_keys.h"
#include "net/base/escape.h"
@@ -1410,8 +1410,8 @@ SearchEngineType TemplateURL::GetEngineType(
const SearchTermsData& search_terms_data) const {
if (engine_type_ == SEARCH_ENGINE_UNKNOWN) {
const GURL url = GenerateSearchURL(search_terms_data);
- engine_type_ = url.is_valid() ?
- TemplateURLPrepopulateData::GetEngineType(url) : SEARCH_ENGINE_OTHER;
+ engine_type_ = url.is_valid() ? SearchEngineUtils::GetEngineType(url)
+ : SEARCH_ENGINE_OTHER;
DCHECK_NE(SEARCH_ENGINE_UNKNOWN, engine_type_);
}
return engine_type_;
diff --git a/chromium/components/search_engines/template_url_data_util.cc b/chromium/components/search_engines/template_url_data_util.cc
index 12bfdf64db7..891daf5a08f 100644
--- a/chromium/components/search_engines/template_url_data_util.cc
+++ b/chromium/components/search_engines/template_url_data_util.cc
@@ -7,6 +7,7 @@
#include <string>
#include "base/strings/string_number_conversions.h"
+#include "base/strings/string_piece.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
#include "components/search_engines/default_search_manager.h"
@@ -14,6 +15,16 @@
#include "components/search_engines/template_url_data.h"
#include "url/gurl.h"
+namespace {
+
+// Converts the C-style string `str` to a base::StringPiece making sure to avoid
+// dereferencing nullptrs.
+base::StringPiece ToStringPiece(const char* str) {
+ return str ? base::StringPiece(str) : base::StringPiece();
+}
+
+} // namespace
+
std::unique_ptr<TemplateURLData> TemplateURLDataFromDictionary(
const base::DictionaryValue& dict) {
std::string search_url;
@@ -187,11 +198,15 @@ std::unique_ptr<TemplateURLData> TemplateURLDataFromPrepopulatedEngine(
return std::make_unique<TemplateURLData>(
base::WideToUTF16(engine.name), base::WideToUTF16(engine.keyword),
- engine.search_url, engine.suggest_url, engine.image_url,
- engine.new_tab_url, engine.contextual_search_url, engine.logo_url,
- engine.doodle_url, engine.search_url_post_params,
- engine.suggest_url_post_params, engine.image_url_post_params,
- engine.favicon_url, engine.encoding, alternate_urls, engine.id);
+ ToStringPiece(engine.search_url), ToStringPiece(engine.suggest_url),
+ ToStringPiece(engine.image_url), ToStringPiece(engine.new_tab_url),
+ ToStringPiece(engine.contextual_search_url),
+ ToStringPiece(engine.logo_url), ToStringPiece(engine.doodle_url),
+ ToStringPiece(engine.search_url_post_params),
+ ToStringPiece(engine.suggest_url_post_params),
+ ToStringPiece(engine.image_url_post_params),
+ ToStringPiece(engine.favicon_url), ToStringPiece(engine.encoding),
+ alternate_urls, engine.id);
}
std::unique_ptr<TemplateURLData> TemplateURLDataFromOverrideDictionary(
diff --git a/chromium/components/search_engines/template_url_prepopulate_data.cc b/chromium/components/search_engines/template_url_prepopulate_data.cc
index 60c60a4d09e..c1368c64f91 100644
--- a/chromium/components/search_engines/template_url_prepopulate_data.cc
+++ b/chromium/components/search_engines/template_url_prepopulate_data.cc
@@ -8,15 +8,12 @@
#include "base/stl_util.h"
#include "build/build_config.h"
#include "components/country_codes/country_codes.h"
-#include "components/google/core/common/google_util.h"
#include "components/pref_registry/pref_registry_syncable.h"
#include "components/prefs/pref_service.h"
#include "components/search_engines/prepopulated_engines.h"
#include "components/search_engines/search_engines_pref_names.h"
#include "components/search_engines/template_url_data.h"
#include "components/search_engines/template_url_data_util.h"
-#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
-#include "url/gurl.h"
namespace TemplateURLPrepopulateData {
@@ -1356,13 +1353,6 @@ std::vector<std::unique_ptr<TemplateURLData>> GetPrepopulatedTemplateURLData(
return t_urls;
}
-bool SameDomain(const GURL& given_url, const GURL& prepopulated_url) {
- return prepopulated_url.is_valid() &&
- net::registry_controlled_domains::SameDomainOrHost(
- given_url, prepopulated_url,
- net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES);
-}
-
} // namespace
// Global functions -----------------------------------------------------------
@@ -1452,33 +1442,4 @@ std::unique_ptr<TemplateURLData> GetPrepopulatedDefaultSearch(
: nullptr;
}
-SearchEngineType GetEngineType(const GURL& url) {
- DCHECK(url.is_valid());
-
- // Check using TLD+1s, in order to more aggressively match search engine types
- // for data imported from other browsers.
- //
- // First special-case Google, because the prepopulate URL for it will not
- // convert to a GURL and thus won't have an origin. Instead see if the
- // incoming URL's host is "[*.]google.<TLD>".
- if (google_util::IsGoogleHostname(url.host(),
- google_util::DISALLOW_SUBDOMAIN))
- return google.type;
-
- // Now check the rest of the prepopulate data.
- for (size_t i = 0; i < kAllEnginesLength; ++i) {
- // First check the main search URL.
- if (SameDomain(url, GURL(kAllEngines[i]->search_url)))
- return kAllEngines[i]->type;
-
- // Then check the alternate URLs.
- for (size_t j = 0; j < kAllEngines[i]->alternate_urls_size; ++j) {
- if (SameDomain(url, GURL(kAllEngines[i]->alternate_urls[j])))
- return kAllEngines[i]->type;
- }
- }
-
- return SEARCH_ENGINE_OTHER;
-}
-
} // namespace TemplateURLPrepopulateData
diff --git a/chromium/components/search_engines/template_url_prepopulate_data.h b/chromium/components/search_engines/template_url_prepopulate_data.h
index 159263ac147..682060b859d 100644
--- a/chromium/components/search_engines/template_url_prepopulate_data.h
+++ b/chromium/components/search_engines/template_url_prepopulate_data.h
@@ -11,9 +11,6 @@
#include <string>
#include <vector>
-#include "components/search_engines/search_engine_type.h"
-
-class GURL;
class PrefService;
struct TemplateURLData;
@@ -65,10 +62,6 @@ void ClearPrepopulatedEnginesInPrefs(PrefService* prefs);
std::unique_ptr<TemplateURLData> GetPrepopulatedDefaultSearch(
PrefService* prefs);
-// Like the above, but takes a GURL which is expected to represent a search URL.
-// This may be called on any thread.
-SearchEngineType GetEngineType(const GURL& url);
-
} // namespace TemplateURLPrepopulateData
#endif // COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_PREPOPULATE_DATA_H_