From 1773dacfbdcd8c6bca496fc9bf970e83e35480e2 Mon Sep 17 00:00:00 2001 From: Jagadesh P Date: Sun, 25 Aug 2024 18:46:24 +0530 Subject: [PATCH 1/3] [Android] Add an option Show/Hide Undo bar when tab[s] closed. --- android/brave_java_sources.gni | 1 + .../chromium/base/BravePreferenceKeys.java | 2 + .../settings/AppearancePreferences.java | 15 +++++++ .../BraveUndoBarController.java | 40 +++++++++++++++++++ .../java/res/xml/appearance_preferences.xml | 6 +++ .../android/strings/android_brave_strings.grd | 3 ++ build/android/bytecode/BUILD.gn | 2 + .../org/brave/bytecode/BraveClassAdapter.java | 1 + .../BraveUndoBarControllerClassAdapter.java | 21 ++++++++++ ...lose_snackbar-UndoBarController.java.patch | 13 ++++++ 10 files changed, 104 insertions(+) create mode 100644 android/java/org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarController.java create mode 100644 build/android/bytecode/java/org/brave/bytecode/BraveUndoBarControllerClassAdapter.java create mode 100644 patches/chrome-android-java-src-org-chromium-chrome-browser-undo_tab_close_snackbar-UndoBarController.java.patch diff --git a/android/brave_java_sources.gni b/android/brave_java_sources.gni index c32e8118d046..ed38f90b0203 100644 --- a/android/brave_java_sources.gni +++ b/android/brave_java_sources.gni @@ -437,6 +437,7 @@ brave_java_sources = [ "../../brave/android/java/org/chromium/chrome/browser/toolbar/top/BraveTopToolbarCoordinator.java", "../../brave/android/java/org/chromium/chrome/browser/ui/messages/infobar/BraveSimpleConfirmInfoBarBuilder.java", "../../brave/android/java/org/chromium/chrome/browser/ui/system/BraveStatusBarColorController.java", + "../../brave/android/java/org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarController.java", "../../brave/android/java/org/chromium/chrome/browser/upgrade/BravePackageReplacedBroadcastReceiver.java", "../../brave/android/java/org/chromium/chrome/browser/upgrade/BraveUpgradeJobIntentServiceImpl.java", "../../brave/android/java/org/chromium/chrome/browser/upgrade/NotificationIntent.java", diff --git a/android/java/org/chromium/base/BravePreferenceKeys.java b/android/java/org/chromium/base/BravePreferenceKeys.java index 71e7567de418..59bdfbfdbfb1 100644 --- a/android/java/org/chromium/base/BravePreferenceKeys.java +++ b/android/java/org/chromium/base/BravePreferenceKeys.java @@ -79,6 +79,8 @@ public final class BravePreferenceKeys { public static final String DAY_ZERO_EXPT_FLAG = "day_zero_expt_flag"; + public static final String SHOW_UNDO_ON_TAB_CLOSED = "show_undo_on_tab_closed"; + /* * Checks if preference key is used in Brave. * It's no op currently. We might reconsider diff --git a/android/java/org/chromium/chrome/browser/settings/AppearancePreferences.java b/android/java/org/chromium/chrome/browser/settings/AppearancePreferences.java index adccd04cd4cd..e815d468c7b5 100644 --- a/android/java/org/chromium/chrome/browser/settings/AppearancePreferences.java +++ b/android/java/org/chromium/chrome/browser/settings/AppearancePreferences.java @@ -50,6 +50,7 @@ public class AppearancePreferences extends BravePreferenceFragment public static final String PREF_BRAVE_ENABLE_TAB_GROUPS = "brave_enable_tab_groups"; public static final String PREF_BRAVE_ENABLE_SPEEDREADER = "brave_enable_speedreader"; public static final String PREF_ENABLE_MULTI_WINDOWS = "enable_multi_windows"; + public static final String PREF_SHOW_UNDO_ON_TAB_CLOSED = "show_undo_on_tab_closed"; private BraveRewardsNativeWorker mBraveRewardsNativeWorker; @@ -172,6 +173,17 @@ public void onActivityCreated(Bundle savedInstanceState) { .setChecked(BraveMultiWindowUtils.shouldEnableMultiWindows()); } } + + ChromeSwitchPreference showUndoButtonOnTabClosed = + (ChromeSwitchPreference) findPreference(PREF_SHOW_UNDO_ON_TAB_CLOSED); + if (showUndoButtonOnTabClosed != null) { + showUndoButtonOnTabClosed.setOnPreferenceChangeListener(this); + ((ChromeSwitchPreference) showUndoButtonOnTabClosed) + .setChecked( + ChromeSharedPreferences.getInstance() + .readBoolean( + BravePreferenceKeys.SHOW_UNDO_ON_TAB_CLOSED, true)); + } } @Override @@ -257,6 +269,9 @@ public void onDismiss() { } } BraveMultiWindowUtils.updateEnableMultiWindows((boolean) newValue); + } else if (PREF_SHOW_UNDO_ON_TAB_CLOSED.equals(key)) { + ChromeSharedPreferences.getInstance() + .writeBoolean(BravePreferenceKeys.SHOW_UNDO_ON_TAB_CLOSED, (boolean) newValue); } if (shouldRelaunch) { BraveRelaunchUtils.askForRelaunch(getActivity()); diff --git a/android/java/org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarController.java b/android/java/org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarController.java new file mode 100644 index 000000000000..beeaaff5fcda --- /dev/null +++ b/android/java/org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarController.java @@ -0,0 +1,40 @@ +/* Copyright (c) 2024 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.undo_tab_close_snackbar; + +import android.content.Context; + +import androidx.annotation.Nullable; + +import org.chromium.base.BravePreferenceKeys; +import org.chromium.base.supplier.Supplier; +import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; +import org.chromium.chrome.browser.tab.Tab; +import org.chromium.chrome.browser.tabmodel.TabModelSelector; +import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarManageable; + +import java.util.List; + +public class BraveUndoBarController extends UndoBarController { + public BraveUndoBarController( + Context context, + TabModelSelector selector, + SnackbarManageable snackbarManageable, + @Nullable Supplier dialogVisibilitySupplier) { + super(context, selector, snackbarManageable, dialogVisibilitySupplier); + } + + @Override + protected void showUndoBar(List closedTabs, boolean isAllTabs) { + boolean should_show_undo_bar = + ChromeSharedPreferences.getInstance() + .readBoolean(BravePreferenceKeys.SHOW_UNDO_ON_TAB_CLOSED, true); + if (!should_show_undo_bar) { + return; + } + super.showUndoBar(closedTabs, isAllTabs); + } +} diff --git a/android/java/res/xml/appearance_preferences.xml b/android/java/res/xml/appearance_preferences.xml index 09caf59bcc4e..3d1beea26ece 100644 --- a/android/java/res/xml/appearance_preferences.xml +++ b/android/java/res/xml/appearance_preferences.xml @@ -49,6 +49,12 @@ android:title="@string/enable_multi_windows_title" android:summary="@string/enable_multi_windows_summary" /> + + Filter list could not be updated. Please try again + + Show undo button on tab closed + diff --git a/build/android/bytecode/BUILD.gn b/build/android/bytecode/BUILD.gn index bee93c788d76..1497cf3ce439 100644 --- a/build/android/bytecode/BUILD.gn +++ b/build/android/bytecode/BUILD.gn @@ -120,6 +120,8 @@ java_binary("java_bytecode_rewriter") { "//brave/build/android/bytecode/java/org/brave/bytecode/BraveToolbarManagerClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveToolbarSwipeLayoutClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveTopToolbarCoordinatorClassAdapter.java", + "//brave/build/android/bytecode/java/org/brave/bytecode/BraveTranslateCompactInfoBarBaseClassAdapter.java", + "//brave/build/android/bytecode/java/org/brave/bytecode/BraveUndoBarControllerClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveVariationsSeedFetcherClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveWebsiteClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveWebsitePermissionsFetcherClassAdapter.java", diff --git a/build/android/bytecode/java/org/brave/bytecode/BraveClassAdapter.java b/build/android/bytecode/java/org/brave/bytecode/BraveClassAdapter.java index 27f277588314..bd1fc3c57490 100644 --- a/build/android/bytecode/java/org/brave/bytecode/BraveClassAdapter.java +++ b/build/android/bytecode/java/org/brave/bytecode/BraveClassAdapter.java @@ -122,6 +122,7 @@ public static ClassVisitor createAdapter(ClassVisitor chain) { chain = new BraveVariationsSeedFetcherClassAdapter(chain); chain = new BraveWebsiteClassAdapter(chain); chain = new BraveWebsitePermissionsFetcherClassAdapter(chain); + chain = new BraveUndoBarControllerClassAdapter(chain); return chain; } } diff --git a/build/android/bytecode/java/org/brave/bytecode/BraveUndoBarControllerClassAdapter.java b/build/android/bytecode/java/org/brave/bytecode/BraveUndoBarControllerClassAdapter.java new file mode 100644 index 000000000000..6a8e885fc68d --- /dev/null +++ b/build/android/bytecode/java/org/brave/bytecode/BraveUndoBarControllerClassAdapter.java @@ -0,0 +1,21 @@ +/* Copyright (c) 2024 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.brave.bytecode; + +import org.objectweb.asm.ClassVisitor; + +public class BraveUndoBarControllerClassAdapter extends BraveClassVisitor { + static String sUndoBarControllerClassName = + "org/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarController"; + static String sBraveUndoBarControllerClassName = + "org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarController"; + + public BraveUndoBarControllerClassAdapter(ClassVisitor visitor) { + super(visitor); + + redirectConstructor(sUndoBarControllerClassName, sBraveUndoBarControllerClassName); + } +} diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-undo_tab_close_snackbar-UndoBarController.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-undo_tab_close_snackbar-UndoBarController.java.patch new file mode 100644 index 000000000000..01f52d637085 --- /dev/null +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-undo_tab_close_snackbar-UndoBarController.java.patch @@ -0,0 +1,13 @@ +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarController.java b/chrome/android/java/src/org/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarController.java +index b0367689a7a34a3cfc39d7c16433df338a7f23bb..939198410e3f56b1ff67b3c12f0016de1c983448 100644 +--- a/chrome/android/java/src/org/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarController.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarController.java +@@ -154,7 +154,7 @@ public class UndoBarController implements SnackbarManager.SnackbarController { + * @param closedTabs A list of tabs that were closed. + * @param isAllTabs Whether all tabs were closed. + */ +- private void showUndoBar(List closedTabs, boolean isAllTabs) { ++ protected void showUndoBar(List closedTabs, boolean isAllTabs) { + if (closedTabs.isEmpty()) return; + + boolean singleTab = closedTabs.size() == 1; From 2b2ed3785d58097b5c678eaa967bd83884b06fcf Mon Sep 17 00:00:00 2001 From: Jagadesh P Date: Mon, 2 Sep 2024 23:54:04 +0530 Subject: [PATCH 2/3] [Android] Use reflection to call |showUndoBar| in |UndoBarController| by having |BraveUndoBarControllerBase| as super to |UndoBarController|. Add byte code test for |showUndoBar| method existence and remove the unrequired patch. --- android/brave_java_sources.gni | 2 +- android/java/apk_for_test.flags | 4 ++ .../BraveUndoBarController.java | 40 ------------------- .../BraveUndoBarControllerBase.java | 39 ++++++++++++++++++ android/java/proguard.flags | 4 ++ .../chromium/chrome/browser/BytecodeTest.java | 9 +++++ build/android/bytecode/BUILD.gn | 2 +- .../org/brave/bytecode/BraveClassAdapter.java | 2 +- ...aveUndoBarControllerBaseClassAdapter.java} | 14 ++++--- ...lose_snackbar-UndoBarController.java.patch | 13 ------ 10 files changed, 67 insertions(+), 62 deletions(-) delete mode 100644 android/java/org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarController.java create mode 100644 android/java/org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarControllerBase.java rename build/android/bytecode/java/org/brave/bytecode/{BraveUndoBarControllerClassAdapter.java => BraveUndoBarControllerBaseClassAdapter.java} (54%) delete mode 100644 patches/chrome-android-java-src-org-chromium-chrome-browser-undo_tab_close_snackbar-UndoBarController.java.patch diff --git a/android/brave_java_sources.gni b/android/brave_java_sources.gni index ed38f90b0203..e4fad162fa2c 100644 --- a/android/brave_java_sources.gni +++ b/android/brave_java_sources.gni @@ -437,7 +437,7 @@ brave_java_sources = [ "../../brave/android/java/org/chromium/chrome/browser/toolbar/top/BraveTopToolbarCoordinator.java", "../../brave/android/java/org/chromium/chrome/browser/ui/messages/infobar/BraveSimpleConfirmInfoBarBuilder.java", "../../brave/android/java/org/chromium/chrome/browser/ui/system/BraveStatusBarColorController.java", - "../../brave/android/java/org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarController.java", + "../../brave/android/java/org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarControllerBase.java", "../../brave/android/java/org/chromium/chrome/browser/upgrade/BravePackageReplacedBroadcastReceiver.java", "../../brave/android/java/org/chromium/chrome/browser/upgrade/BraveUpgradeJobIntentServiceImpl.java", "../../brave/android/java/org/chromium/chrome/browser/upgrade/NotificationIntent.java", diff --git a/android/java/apk_for_test.flags b/android/java/apk_for_test.flags index 53b31c91ef29..278b805207a0 100644 --- a/android/java/apk_for_test.flags +++ b/android/java/apk_for_test.flags @@ -892,6 +892,10 @@ public (...); } +-keep class org.chromium.chrome.browser.undo_tab_close_snackbar.UndoBarController { + *** showUndoBar(...); +} + -keep class org.chromium.chrome.browser.tabbed_mode.TabbedNavigationBarColorController { *** mContext; *** mTabModelSelector; diff --git a/android/java/org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarController.java b/android/java/org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarController.java deleted file mode 100644 index beeaaff5fcda..000000000000 --- a/android/java/org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarController.java +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright (c) 2024 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.undo_tab_close_snackbar; - -import android.content.Context; - -import androidx.annotation.Nullable; - -import org.chromium.base.BravePreferenceKeys; -import org.chromium.base.supplier.Supplier; -import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; -import org.chromium.chrome.browser.tab.Tab; -import org.chromium.chrome.browser.tabmodel.TabModelSelector; -import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarManageable; - -import java.util.List; - -public class BraveUndoBarController extends UndoBarController { - public BraveUndoBarController( - Context context, - TabModelSelector selector, - SnackbarManageable snackbarManageable, - @Nullable Supplier dialogVisibilitySupplier) { - super(context, selector, snackbarManageable, dialogVisibilitySupplier); - } - - @Override - protected void showUndoBar(List closedTabs, boolean isAllTabs) { - boolean should_show_undo_bar = - ChromeSharedPreferences.getInstance() - .readBoolean(BravePreferenceKeys.SHOW_UNDO_ON_TAB_CLOSED, true); - if (!should_show_undo_bar) { - return; - } - super.showUndoBar(closedTabs, isAllTabs); - } -} diff --git a/android/java/org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarControllerBase.java b/android/java/org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarControllerBase.java new file mode 100644 index 000000000000..f5b94eb97615 --- /dev/null +++ b/android/java/org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarControllerBase.java @@ -0,0 +1,39 @@ +/* Copyright (c) 2024 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.undo_tab_close_snackbar; + +import org.chromium.base.BravePreferenceKeys; +import org.chromium.base.BraveReflectionUtil; +import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; +import org.chromium.chrome.browser.tab.Tab; +import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; + +import java.util.List; + +public class BraveUndoBarControllerBase implements SnackbarManager.SnackbarController { + public void showUndoBar(List closedTabs, boolean isAllTabs) { + boolean showUndoBar = + ChromeSharedPreferences.getInstance() + .readBoolean(BravePreferenceKeys.SHOW_UNDO_ON_TAB_CLOSED, true); + if (!showUndoBar) { + if (closedTabs.isEmpty()) { + return; + } + Object actionData = closedTabs.size() == 1 ? closedTabs.get(0).getId() : closedTabs; + onDismissNoAction(actionData); + return; + } + + BraveReflectionUtil.InvokeMethod( + UndoBarController.class, + this, + "showUndoBar", + List.class, + closedTabs, + boolean.class, + isAllTabs); + } +} diff --git a/android/java/proguard.flags b/android/java/proguard.flags index 7fbe47e05f59..a50ae34dd9c3 100644 --- a/android/java/proguard.flags +++ b/android/java/proguard.flags @@ -81,6 +81,10 @@ *** mReferenceButtonData; } +-keep class org.chromium.chrome.browser.undo_tab_close_snackbar.UndoBarController { + *** showUndoBar(...); +} + -keep class org.chromium.chrome.browser.tabbed_mode.TabbedNavigationBarColorController { *** getNavigationBarColor(...); } diff --git a/android/javatests/org/chromium/chrome/browser/BytecodeTest.java b/android/javatests/org/chromium/chrome/browser/BytecodeTest.java index a57159a8d80c..745d675a9556 100644 --- a/android/javatests/org/chromium/chrome/browser/BytecodeTest.java +++ b/android/javatests/org/chromium/chrome/browser/BytecodeTest.java @@ -830,6 +830,15 @@ public void testMethodsExist() throws Exception { true, int.class, Context.class)); + Assert.assertTrue( + methodExists( + "org/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarController", + "showUndoBar", + MethodModifier.REGULAR, + true, + void.class, + List.class, + boolean.class)); Assert.assertTrue( methodExists( "org/chromium/chrome/browser/notifications/NotificationPlatformBridge", diff --git a/build/android/bytecode/BUILD.gn b/build/android/bytecode/BUILD.gn index 1497cf3ce439..8e852edb30b2 100644 --- a/build/android/bytecode/BUILD.gn +++ b/build/android/bytecode/BUILD.gn @@ -121,7 +121,7 @@ java_binary("java_bytecode_rewriter") { "//brave/build/android/bytecode/java/org/brave/bytecode/BraveToolbarSwipeLayoutClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveTopToolbarCoordinatorClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveTranslateCompactInfoBarBaseClassAdapter.java", - "//brave/build/android/bytecode/java/org/brave/bytecode/BraveUndoBarControllerClassAdapter.java", + "//brave/build/android/bytecode/java/org/brave/bytecode/BraveUndoBarControllerBaseClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveVariationsSeedFetcherClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveWebsiteClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveWebsitePermissionsFetcherClassAdapter.java", diff --git a/build/android/bytecode/java/org/brave/bytecode/BraveClassAdapter.java b/build/android/bytecode/java/org/brave/bytecode/BraveClassAdapter.java index bd1fc3c57490..91fec1887e4f 100644 --- a/build/android/bytecode/java/org/brave/bytecode/BraveClassAdapter.java +++ b/build/android/bytecode/java/org/brave/bytecode/BraveClassAdapter.java @@ -119,10 +119,10 @@ public static ClassVisitor createAdapter(ClassVisitor chain) { chain = new BraveToolbarManagerClassAdapter(chain); chain = new BraveToolbarSwipeLayoutClassAdapter(chain); chain = new BraveTopToolbarCoordinatorClassAdapter(chain); + chain = new BraveUndoBarControllerBaseClassAdapter(chain); chain = new BraveVariationsSeedFetcherClassAdapter(chain); chain = new BraveWebsiteClassAdapter(chain); chain = new BraveWebsitePermissionsFetcherClassAdapter(chain); - chain = new BraveUndoBarControllerClassAdapter(chain); return chain; } } diff --git a/build/android/bytecode/java/org/brave/bytecode/BraveUndoBarControllerClassAdapter.java b/build/android/bytecode/java/org/brave/bytecode/BraveUndoBarControllerBaseClassAdapter.java similarity index 54% rename from build/android/bytecode/java/org/brave/bytecode/BraveUndoBarControllerClassAdapter.java rename to build/android/bytecode/java/org/brave/bytecode/BraveUndoBarControllerBaseClassAdapter.java index 6a8e885fc68d..b8e984134288 100644 --- a/build/android/bytecode/java/org/brave/bytecode/BraveUndoBarControllerClassAdapter.java +++ b/build/android/bytecode/java/org/brave/bytecode/BraveUndoBarControllerBaseClassAdapter.java @@ -7,15 +7,17 @@ import org.objectweb.asm.ClassVisitor; -public class BraveUndoBarControllerClassAdapter extends BraveClassVisitor { - static String sUndoBarControllerClassName = +public class BraveUndoBarControllerBaseClassAdapter extends BraveClassVisitor { + static String sUndoBarController = "org/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarController"; - static String sBraveUndoBarControllerClassName = - "org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarController"; + static String sBraveUndoBarControllerBase = + "org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarControllerBase"; - public BraveUndoBarControllerClassAdapter(ClassVisitor visitor) { + public BraveUndoBarControllerBaseClassAdapter(ClassVisitor visitor) { super(visitor); - redirectConstructor(sUndoBarControllerClassName, sBraveUndoBarControllerClassName); + changeSuperName(sUndoBarController, sBraveUndoBarControllerBase); + + changeMethodOwner(sUndoBarController, "showUndoBar", sBraveUndoBarControllerBase); } } diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-undo_tab_close_snackbar-UndoBarController.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-undo_tab_close_snackbar-UndoBarController.java.patch deleted file mode 100644 index 01f52d637085..000000000000 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-undo_tab_close_snackbar-UndoBarController.java.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarController.java b/chrome/android/java/src/org/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarController.java -index b0367689a7a34a3cfc39d7c16433df338a7f23bb..939198410e3f56b1ff67b3c12f0016de1c983448 100644 ---- a/chrome/android/java/src/org/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarController.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarController.java -@@ -154,7 +154,7 @@ public class UndoBarController implements SnackbarManager.SnackbarController { - * @param closedTabs A list of tabs that were closed. - * @param isAllTabs Whether all tabs were closed. - */ -- private void showUndoBar(List closedTabs, boolean isAllTabs) { -+ protected void showUndoBar(List closedTabs, boolean isAllTabs) { - if (closedTabs.isEmpty()) return; - - boolean singleTab = closedTabs.size() == 1; From 2e337e7a4ef00bddcf5e2fb2a8359914becd47cb Mon Sep 17 00:00:00 2001 From: Jagadesh P Date: Thu, 12 Sep 2024 23:32:38 +0530 Subject: [PATCH 3/3] [Android] Rename "show_undo_on_tab_closed" -> "show_undo_when_tabs_closed". --- .../java/org/chromium/base/BravePreferenceKeys.java | 2 +- .../browser/settings/AppearancePreferences.java | 11 ++++++----- .../BraveUndoBarControllerBase.java | 4 ++-- android/java/res/xml/appearance_preferences.xml | 4 ++-- browser/ui/android/strings/android_brave_strings.grd | 4 ++-- build/android/bytecode/BUILD.gn | 1 - 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/android/java/org/chromium/base/BravePreferenceKeys.java b/android/java/org/chromium/base/BravePreferenceKeys.java index 59bdfbfdbfb1..d0e5fcc8011f 100644 --- a/android/java/org/chromium/base/BravePreferenceKeys.java +++ b/android/java/org/chromium/base/BravePreferenceKeys.java @@ -79,7 +79,7 @@ public final class BravePreferenceKeys { public static final String DAY_ZERO_EXPT_FLAG = "day_zero_expt_flag"; - public static final String SHOW_UNDO_ON_TAB_CLOSED = "show_undo_on_tab_closed"; + public static final String SHOW_UNDO_WHEN_TABS_CLOSED = "show_undo_when_tabs_closed"; /* * Checks if preference key is used in Brave. diff --git a/android/java/org/chromium/chrome/browser/settings/AppearancePreferences.java b/android/java/org/chromium/chrome/browser/settings/AppearancePreferences.java index e815d468c7b5..c9b25f0169a1 100644 --- a/android/java/org/chromium/chrome/browser/settings/AppearancePreferences.java +++ b/android/java/org/chromium/chrome/browser/settings/AppearancePreferences.java @@ -50,7 +50,7 @@ public class AppearancePreferences extends BravePreferenceFragment public static final String PREF_BRAVE_ENABLE_TAB_GROUPS = "brave_enable_tab_groups"; public static final String PREF_BRAVE_ENABLE_SPEEDREADER = "brave_enable_speedreader"; public static final String PREF_ENABLE_MULTI_WINDOWS = "enable_multi_windows"; - public static final String PREF_SHOW_UNDO_ON_TAB_CLOSED = "show_undo_on_tab_closed"; + public static final String PREF_SHOW_UNDO_WHEN_TABS_CLOSED = "show_undo_when_tabs_closed"; private BraveRewardsNativeWorker mBraveRewardsNativeWorker; @@ -175,14 +175,14 @@ public void onActivityCreated(Bundle savedInstanceState) { } ChromeSwitchPreference showUndoButtonOnTabClosed = - (ChromeSwitchPreference) findPreference(PREF_SHOW_UNDO_ON_TAB_CLOSED); + (ChromeSwitchPreference) findPreference(PREF_SHOW_UNDO_WHEN_TABS_CLOSED); if (showUndoButtonOnTabClosed != null) { showUndoButtonOnTabClosed.setOnPreferenceChangeListener(this); ((ChromeSwitchPreference) showUndoButtonOnTabClosed) .setChecked( ChromeSharedPreferences.getInstance() .readBoolean( - BravePreferenceKeys.SHOW_UNDO_ON_TAB_CLOSED, true)); + BravePreferenceKeys.SHOW_UNDO_WHEN_TABS_CLOSED, true)); } } @@ -269,9 +269,10 @@ public void onDismiss() { } } BraveMultiWindowUtils.updateEnableMultiWindows((boolean) newValue); - } else if (PREF_SHOW_UNDO_ON_TAB_CLOSED.equals(key)) { + } else if (PREF_SHOW_UNDO_WHEN_TABS_CLOSED.equals(key)) { ChromeSharedPreferences.getInstance() - .writeBoolean(BravePreferenceKeys.SHOW_UNDO_ON_TAB_CLOSED, (boolean) newValue); + .writeBoolean( + BravePreferenceKeys.SHOW_UNDO_WHEN_TABS_CLOSED, (boolean) newValue); } if (shouldRelaunch) { BraveRelaunchUtils.askForRelaunch(getActivity()); diff --git a/android/java/org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarControllerBase.java b/android/java/org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarControllerBase.java index f5b94eb97615..819672d62c82 100644 --- a/android/java/org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarControllerBase.java +++ b/android/java/org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarControllerBase.java @@ -17,7 +17,7 @@ public class BraveUndoBarControllerBase implements SnackbarManager.SnackbarContr public void showUndoBar(List closedTabs, boolean isAllTabs) { boolean showUndoBar = ChromeSharedPreferences.getInstance() - .readBoolean(BravePreferenceKeys.SHOW_UNDO_ON_TAB_CLOSED, true); + .readBoolean(BravePreferenceKeys.SHOW_UNDO_WHEN_TABS_CLOSED, true); if (!showUndoBar) { if (closedTabs.isEmpty()) { return; @@ -27,7 +27,7 @@ public void showUndoBar(List closedTabs, boolean isAllTabs) { return; } - BraveReflectionUtil.InvokeMethod( + BraveReflectionUtil.invokeMethod( UndoBarController.class, this, "showUndoBar", diff --git a/android/java/res/xml/appearance_preferences.xml b/android/java/res/xml/appearance_preferences.xml index 3d1beea26ece..d0ca8a485549 100644 --- a/android/java/res/xml/appearance_preferences.xml +++ b/android/java/res/xml/appearance_preferences.xml @@ -50,8 +50,8 @@ android:summary="@string/enable_multi_windows_summary" /> diff --git a/browser/ui/android/strings/android_brave_strings.grd b/browser/ui/android/strings/android_brave_strings.grd index 23e3d60adb2f..ab7b73866c01 100644 --- a/browser/ui/android/strings/android_brave_strings.grd +++ b/browser/ui/android/strings/android_brave_strings.grd @@ -4063,8 +4063,8 @@ If you don't accept this request, VPN will not reconnect and your internet conne Filter list could not be updated. Please try again - - Show undo button on tab closed + + Show undo button when tabs are closed diff --git a/build/android/bytecode/BUILD.gn b/build/android/bytecode/BUILD.gn index 8e852edb30b2..ef20b41862a8 100644 --- a/build/android/bytecode/BUILD.gn +++ b/build/android/bytecode/BUILD.gn @@ -120,7 +120,6 @@ java_binary("java_bytecode_rewriter") { "//brave/build/android/bytecode/java/org/brave/bytecode/BraveToolbarManagerClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveToolbarSwipeLayoutClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveTopToolbarCoordinatorClassAdapter.java", - "//brave/build/android/bytecode/java/org/brave/bytecode/BraveTranslateCompactInfoBarBaseClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveUndoBarControllerBaseClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveVariationsSeedFetcherClassAdapter.java", "//brave/build/android/bytecode/java/org/brave/bytecode/BraveWebsiteClassAdapter.java",