[Android] Fix for details action on advanced protection message (#35386)

* [Android] Fix for details action on advanced protection message

* [Tests] Fix for bytecode test
This commit is contained in:
samartnik
2026-04-09 00:24:17 +02:00
committed by GitHub
parent b2c1f97c7a
commit 890fcfb8b8
4 changed files with 26 additions and 0 deletions
+1
View File
@@ -782,6 +782,7 @@
-keep class org.chromium.chrome.browser.tabbed_mode.TabbedRootUiCoordinator {
public <init>(...);
*** mAdvancedProtectionCoordinator;
}
-keep class org.chromium.chrome.browser.tabbed_mode.BraveTabbedRootUiCoordinator {
@@ -39,7 +39,9 @@ import org.chromium.chrome.browser.keyboard_accessory.ManualFillingComponent;
import org.chromium.chrome.browser.layouts.LayoutStateProvider;
import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
import org.chromium.chrome.browser.multiwindow.MultiInstanceManager;
import org.chromium.chrome.browser.privacy.settings.BravePrivacySettings;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.safe_browsing.AdvancedProtectionCoordinator;
import org.chromium.chrome.browser.share.ShareDelegate;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab_ui.TabContentManager;
@@ -71,6 +73,9 @@ import java.util.function.Function;
import java.util.function.Supplier;
public class BraveTabbedRootUiCoordinator extends TabbedRootUiCoordinator {
// To delete in bytecode, parent class field will be used instead.
private AdvancedProtectionCoordinator mAdvancedProtectionCoordinator;
private final AppCompatActivity mBraveActivity;
private final OneshotSupplier<HubManager> mHubManagerSupplier;
private final MonotonicObservableSupplier<EdgeToEdgeController>
@@ -191,6 +196,19 @@ public class BraveTabbedRootUiCoordinator extends TabbedRootUiCoordinator {
mBraveEdgeToEdgeControllerSupplier = edgeToEdgeSupplier;
}
@Override
public void onFinishNativeInitialization() {
super.onFinishNativeInitialization();
// Replace the upstream coordinator (which uses PrivacySettings.class) with one that
// points to BravePrivacySettings so the advanced protection message navigates correctly.
if (mAdvancedProtectionCoordinator != null) {
mAdvancedProtectionCoordinator.destroy();
}
mAdvancedProtectionCoordinator =
new AdvancedProtectionCoordinator(mWindowAndroid, BravePrivacySettings.class);
}
@Override
public void onPostInflationStartup() {
super.onPostInflationStartup();
@@ -2768,6 +2768,10 @@ public class BytecodeTest {
fieldExists(
"org/chromium/chrome/browser/ui/appmenu/AppMenuHandlerImpl",
"mAppMenuDragHelper"));
Assert.assertTrue(
fieldExists(
"org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator",
"mAdvancedProtectionCoordinator"));
}
@Test
@@ -18,5 +18,8 @@ public class BraveTabbedRootUiCoordinatorClassAdapter extends BraveClassVisitor
redirectConstructor(
sTabbedRootUiCoordinatorClassName, sBraveTabbedRootUiCoordinatorClassName);
deleteField(sBraveTabbedRootUiCoordinatorClassName, "mAdvancedProtectionCoordinator");
makeProtectedField(sTabbedRootUiCoordinatorClassName, "mAdvancedProtectionCoordinator");
}
}