From 94ff42e57f809ab6b5ca362b8f5bdaa7ed1df186 Mon Sep 17 00:00:00 2001 From: AlexeyBarabash Date: Mon, 10 Nov 2025 16:39:47 +0200 Subject: [PATCH] [cr144][Android] New arg hierarchicalMenuController at AppMenu.ctor Chromium change: https://source.chromium.org/chromium/chromium/src/+/828199472d91584dcdc29b5d85587bfe3326df42 flyout: AppMenu: Implement FlyoutHandler for AppMenu This CL implements flyoutHandler for app menu so that flyout can be used to display submenus in app menu. Because we want to use `AnchoredPopupWindow` for the flyout popups but also use `PopupWindow` for the main menu, we create a wrapper type `AppMenuPopup` and provide a common interface so that `HierarchicalMenuController` can control both. This change is behind the flag #submenus-in-app-menu, and there should be no functional change with this CL if the flag is disabled. Demo: http://screencast/cast/NTM4MTIzMDUzNDA2NjE3NnxmOGJhODgyYS1iMQ Bug: 438629323 Change-Id: I26327b1b0806b173936c6edd66ca7f0b4411076e Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7058413 --- .../chromium/chrome/browser/ui/appmenu/BraveAppMenu.java | 8 ++++++-- .../chrome/browser/ui/appmenu/BraveAppMenuDummySuper.java | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/BraveAppMenu.java b/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/BraveAppMenu.java index 6f93d275510..fd0bc7ef4e2 100644 --- a/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/BraveAppMenu.java +++ b/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/BraveAppMenu.java @@ -16,6 +16,7 @@ import org.chromium.base.ContextUtils; import org.chromium.base.SysUtils; import org.chromium.build.annotations.NullMarked; import org.chromium.chrome.browser.ui.appmenu.internal.R; +import org.chromium.ui.hierarchicalmenu.HierarchicalMenuController; @NullMarked class BraveAppMenu extends BraveAppMenuDummySuper { @@ -23,8 +24,11 @@ class BraveAppMenu extends BraveAppMenuDummySuper { private static int sMenuHeight; private static int sNegativeVerticalOffsetNotTopAnchored; - BraveAppMenu(AppMenuHandlerImpl handler, Resources res) { - super(handler, res); + BraveAppMenu( + AppMenuHandlerImpl handler, + Resources res, + HierarchicalMenuController hierarchicalMenuController) { + super(handler, res, hierarchicalMenuController); final float scale = res.getDisplayMetrics().density; sNegativeVerticalOffsetNotTopAnchored = diff --git a/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/BraveAppMenuDummySuper.java b/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/BraveAppMenuDummySuper.java index 618bc44043b..a3430ff4e6d 100644 --- a/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/BraveAppMenuDummySuper.java +++ b/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/BraveAppMenuDummySuper.java @@ -8,6 +8,7 @@ package org.chromium.chrome.browser.ui.appmenu; import android.content.res.Resources; import org.chromium.build.annotations.NullMarked; +import org.chromium.ui.hierarchicalmenu.HierarchicalMenuController; /* * This is dummy super class for BraveAppMenu. @@ -15,8 +16,11 @@ import org.chromium.build.annotations.NullMarked; */ @NullMarked class BraveAppMenuDummySuper extends AppMenu { - BraveAppMenuDummySuper(AppMenuHandlerImpl handler, Resources res) { - super(handler, res); + BraveAppMenuDummySuper( + AppMenuHandlerImpl handler, + Resources res, + HierarchicalMenuController hierarchicalMenuController) { + super(handler, res, hierarchicalMenuController); assert false : "This class usage should be removed in the bytecode!"; }