[cr146][Android] SearchEngineAdapter.ctor change

New arg siteSearchClickHandler

Chromium change:
https://source.chromium.org/chromium/chromium/src/+/ce9bd0417d1e559e2d3ae5f8b19ee1530b62c369

	Site Search: Add site search setting entry

	This CL adds a "Manage search engine and site search entry" in existing
	Search Engine Settings page. This advanced setting option will be
	displayed based on omnibox site search feature flag.

	Bug: 459588730
	Change-Id: I5c1c806f8d0fcec40b87cb94b31573317696d28c
	Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7494099
This commit is contained in:
AlexeyBarabash
2026-02-26 13:47:50 +00:00
committed by Claudio DeSouza
parent 79cd32dd95
commit a41bfd8044
6 changed files with 43 additions and 5 deletions
+1
View File
@@ -102,6 +102,7 @@
*** mProfile;
*** mSearchEngineAdapter;
*** createAdapterIfNecessary(...);
*** openSiteSearchSettings(...);
}
-keep class org.chromium.components.browser_ui.site_settings.SiteSettingsCategory {
@@ -24,6 +24,10 @@ android_library("java") {
"//chrome/browser/preferences:java",
"//chrome/browser/profiles/android:java",
"//chrome/browser/search_engines/android:java",
"//chrome/browser/settings:factory_java",
"//components/browser_ui/settings/android:java",
"//components/cached_flags:java",
"//components/omnibox/common:features_java",
"//components/search_engines/android:java",
"//third_party/androidx:androidx_annotation_annotation_java",
"//third_party/androidx:androidx_fragment_fragment_java",
@@ -14,6 +14,7 @@ import android.widget.TextView;
import org.chromium.base.BravePreferenceKeys;
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.build.annotations.Nullable;
import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.profiles.ProfileManager;
@@ -33,8 +34,9 @@ public class BraveSearchEngineAdapter extends SearchEngineAdapter {
private Profile mProfile;
private boolean mNeedUpdateActiveDSE;
public BraveSearchEngineAdapter(Context context, Profile profile) {
super(context, profile);
public BraveSearchEngineAdapter(
Context context, Profile profile, @Nullable Runnable siteSearchClickHandler) {
super(context, profile, siteSearchClickHandler);
}
public static void setDSEPrefs(TemplateUrl templateUrl, Profile profile) {
@@ -158,7 +160,15 @@ public class BraveSearchEngineAdapter extends SearchEngineAdapter {
return;
}
TemplateUrl templateUrl = (TemplateUrl) getItem((int) view.getTag());
int position = (int) view.getTag();
if (getItemViewType(position) == ViewType.SITE_SEARCH_SETTINGS) {
// Super class already processed it, see
// SearchEngineAdapter.onClick.
return;
}
TemplateUrl templateUrl = (TemplateUrl) getItem(position);
setDSEPrefs(templateUrl, mProfile);
ChromeSharedPreferences.getInstance()
.writeBoolean(BravePreferenceKeys.DEFAULT_SEARCH_ENGINE_CHANGED, true);
@@ -9,6 +9,7 @@ import android.os.Bundle;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.search_engines.R;
import org.chromium.components.omnibox.OmniboxFeatures;
public class BraveSearchEnginePreference extends SearchEngineSettings {
// These members will be deleted in bytecode, member from parent class will be used instead.
@@ -31,7 +32,14 @@ public class BraveSearchEnginePreference extends SearchEngineSettings {
public void createAdapterIfNecessary() {
if (mSearchEngineAdapter != null) return;
mSearchEngineAdapter = new BraveSearchEngineAdapter(getActivity(), getProfile(mPrivate));
Runnable siteSearchClickHandler =
OmniboxFeatures.sOmniboxSiteSearch.isEnabled()
? this::openSiteSearchSettings
: null;
mSearchEngineAdapter =
new BraveSearchEngineAdapter(
getActivity(), getProfile(mPrivate), siteSearchClickHandler);
}
private Profile getProfile(boolean isPrivate) {
@@ -41,4 +49,8 @@ public class BraveSearchEnginePreference extends SearchEngineSettings {
return mProfile.getPrimaryOtrProfile(/* createIfNeeded= */ true);
}
}
private void openSiteSearchSettings() {
assert false : "This dummy method should be removed in bytecode!";
}
}
@@ -611,6 +611,12 @@ public class BytecodeTest {
"createAdapterIfNecessary",
MethodModifier.REGULAR,
void.class));
Assert.assertTrue(
methodExists(
"org/chromium/chrome/browser/search_engines/settings/SearchEngineSettings",
"openSiteSearchSettings",
MethodModifier.REGULAR,
void.class));
Assert.assertTrue(
methodExists(
"org/chromium/chrome/browser/theme/ThemeUtils",
@@ -24,7 +24,12 @@ public class BraveSearchEnginePreferenceClassAdapter extends BraveClassVisitor {
makeProtectedField(sSearchEngineSettingsClassName, "mProfile");
makePublicMethod(sSearchEngineSettingsClassName, "createAdapterIfNecessary");
addMethodAnnotation(sBraveSearchEnginePreferenceClassName, "createAdapterIfNecessary",
addMethodAnnotation(
sBraveSearchEnginePreferenceClassName,
"createAdapterIfNecessary",
"Ljava/lang/Override;");
deleteMethod(sBraveSearchEnginePreferenceClassName, "openSiteSearchSettings");
makePublicMethod(sSearchEngineSettingsClassName, "openSiteSearchSettings");
}
}