From 75c52c79e11d0be717e0fd5251f95b189a05c4c1 Mon Sep 17 00:00:00 2001 From: AlexeyBarabash Date: Wed, 5 Mar 2025 22:17:56 +0200 Subject: [PATCH 1/2] Fixed Tabs menu position for some languages; fixes brave/brave-browser#44274 --- .../chrome/browser/settings/BraveMainPreferencesBase.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/android/java/org/chromium/chrome/browser/settings/BraveMainPreferencesBase.java b/android/java/org/chromium/chrome/browser/settings/BraveMainPreferencesBase.java index b4549fff7cf2..732e2fdf5bdb 100644 --- a/android/java/org/chromium/chrome/browser/settings/BraveMainPreferencesBase.java +++ b/android/java/org/chromium/chrome/browser/settings/BraveMainPreferencesBase.java @@ -75,6 +75,7 @@ public abstract class BraveMainPreferencesBase extends BravePreferenceFragment private static final String PREF_PAYMENT_METHODS = "autofill_payment_methods"; private static final String PREF_ADDRESSES = "autofill_addresses"; private static final String PREF_AUTOFILL_PRIVATE_WINDOW = "autofill_private_window"; + private static final String PREF_TABS = "tabs"; private static final String PREF_MEDIA = "media"; private static final String PREF_APPEARANCE = "appearance"; private static final String PREF_NEW_TAB_PAGE = "background_images"; @@ -326,6 +327,7 @@ private void rearrangePreferenceOrders() { int displaySectionOrder = generalOrder; findPreference(PREF_DISPLAY_SECTION).setOrder(++displaySectionOrder); + findPreference(PREF_TABS).setOrder(++displaySectionOrder); findPreference(PREF_MEDIA).setOrder(++displaySectionOrder); findPreference(PREF_APPEARANCE).setOrder(++displaySectionOrder); findPreference(PREF_NEW_TAB_PAGE).setOrder(++displaySectionOrder); From 0aa7ea0c13f0a40d8e646322e28e3a65513ed6de Mon Sep 17 00:00:00 2001 From: AlexeyBarabash Date: Sat, 8 Mar 2025 20:54:29 +0200 Subject: [PATCH 2/2] Test for main preferences order on Android --- .../BraveMainSettingsFragmentTest.java | 108 ++++++++++++++++++ test/BUILD.gn | 1 + 2 files changed, 109 insertions(+) create mode 100644 android/javatests/org/chromium/chrome/browser/settings/BraveMainSettingsFragmentTest.java diff --git a/android/javatests/org/chromium/chrome/browser/settings/BraveMainSettingsFragmentTest.java b/android/javatests/org/chromium/chrome/browser/settings/BraveMainSettingsFragmentTest.java new file mode 100644 index 000000000000..dccc966083d3 --- /dev/null +++ b/android/javatests/org/chromium/chrome/browser/settings/BraveMainSettingsFragmentTest.java @@ -0,0 +1,108 @@ +/* Copyright (c) 2025 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at https://mozilla.org/MPL/2.0/. */ + +package org.chromium.chrome.browser.settings; + +import static org.junit.Assert.assertTrue; + +import android.os.Looper; + +import androidx.annotation.Nullable; +import androidx.preference.Preference; +import androidx.test.filters.SmallTest; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import org.chromium.base.test.util.DoNotBatch; +import org.chromium.chrome.browser.tracing.settings.DeveloperSettings; +import org.chromium.chrome.test.ChromeJUnit4ClassRunner; + +/** Test for {@link MainSettings}. Main purpose is to have a quick confidence check on the xml. */ +@RunWith(ChromeJUnit4ClassRunner.class) +@DoNotBatch(reason = "Tests cannot run batched because they launch a Settings activity.") +public class BraveMainSettingsFragmentTest { + private final SettingsActivityTestRule mSettingsActivityTestRule = + new SettingsActivityTestRule<>(MainSettings.class); + private MainSettings mMainSettings; + + @Before + public void setup() { + Looper.prepare(); + DeveloperSettings.setIsEnabledForTests(true); + } + + @After + public void tearDown() {} + + private static final String[] sSortedPrefKeys = { + "features_section", + "brave_shields_and_privacy", + "brave_news_v2", + "brave_wallet", + "brave_vpn", + "brave_leo", + "general_section", + "brave_search_engines", + "homepage", + "passwords", + "brave_sync_layout", + "brave_stats", + "content_settings", + "brave_downloads", + "closing_all_tabs_closes_brave", + "use_custom_tabs", + "display_section", + "tabs", + "media", + "appearance", + "background_images", + "accessibility", + "brave_languages", + // Somehow this is the key for Autofill section + "online_checkout_section", + "autofill_payment_methods", + "autofill_addresses", + "autofill_private_window", + "support_section", + "rate_brave", + "about_section", + "developer", + "about_chrome" + }; + + // This test is intended to check the issue where prefs order was wrong + // when app language was switched to some other than default English, + // like French. The test infrastructure does not support switching app + // interface language. So the test may help to catch order violation + // with English. + @Test + @SmallTest + public void testMainSettingsPrefsOrder() { + startSettings(); + + @Nullable Preference prevPref = null; + for (int i = 0; i < sSortedPrefKeys.length; ++i) { + Preference pref = mMainSettings.findPreference(sSortedPrefKeys[i]); + + if (prevPref == null) { // Skip first pref. + prevPref = pref; + continue; + } + assertTrue( + prevPref.getTitle() + " should precede " + pref.getTitle(), + pref.getOrder() > prevPref.getOrder()); + } + } + + private void startSettings() { + mSettingsActivityTestRule.startSettingsActivity(); + mMainSettings = mSettingsActivityTestRule.getFragment(); + Assert.assertNotNull("SettingsActivity failed to launch.", mMainSettings); + } +} diff --git a/test/BUILD.gn b/test/BUILD.gn index 0be81ecb707e..7be55e83d445 100644 --- a/test/BUILD.gn +++ b/test/BUILD.gn @@ -1271,6 +1271,7 @@ if (is_android) { "//brave/android/javatests/org/chromium/chrome/browser/privacy/settings/BravePrivacySettingsTest.java", "//brave/android/javatests/org/chromium/chrome/browser/safe_browsing/settings/BraveSafeBrowsingSettingsFragmentTest.java", "//brave/android/javatests/org/chromium/chrome/browser/safety_check/BraveSafetyCheckSettingsFragmentTest.java", + "//brave/android/javatests/org/chromium/chrome/browser/settings/BraveMainSettingsFragmentTest.java", "//brave/android/javatests/org/chromium/chrome/browser/sync/BraveManageSyncSettingsTest.java", ]