[cr148] BookmarkContextMenuController added can_paste

This requires adding extra atgs on our own overrides of these classes.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/bca4b0a240b3c641d10a1518b232bc432c9f7472

commit bca4b0a240b3c641d10a1518b232bc432c9f7472
Author: Tom Anderson <thomasanderson@chromium.org>
Date:   Mon Mar 9 14:47:10 2026 -0700

    [Reland] Fix BookmarkContextMenu paste menu enabled state

    BookmarkContextMenu::BookmarkContextMenu indirectly called
    BookmarkContextMenuController::IsCommandIdEnabled for IDC_PASTE. This
    breaks since can_paste_ is only set when showing the menu. This CL fixes
    the issue by passing can_paste to BookmarkContextMenu().

    R=avi

    Bug: 40398800
    Change-Id: I130da5d5fca333508bbde8e0b02c57f03adb5e78
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7640749
    Reviewed-by: David Yeung <dayeung@chromium.org>
    Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
    Reviewed-by: Avi Drissman <avi@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1596622}
This commit is contained in:
Claudio DeSouza
2026-04-27 12:00:43 +01:00
parent d7df7d8aae
commit 3431a56692
6 changed files with 22 additions and 13 deletions
@@ -35,13 +35,15 @@ BraveBookmarkContextMenuController::BraveBookmarkContextMenuController(
Profile* profile,
BookmarkLaunchLocation opened_from,
const std::vector<
raw_ptr<const bookmarks::BookmarkNode, VectorExperimental>>& selection)
raw_ptr<const bookmarks::BookmarkNode, VectorExperimental>>& selection,
bool can_paste)
: BookmarkContextMenuController(parent_window,
delegate,
browser,
profile,
opened_from,
selection),
selection,
can_paste),
browser_(browser),
prefs_(browser_ ? browser_->profile()->GetPrefs() : nullptr) {
if (!browser_) {
@@ -41,7 +41,8 @@ class BraveBookmarkContextMenuController
Profile* profile,
BookmarkLaunchLocation opened_from,
const std::vector<raw_ptr<const bookmarks::BookmarkNode,
VectorExperimental>>& selection);
VectorExperimental>>& selection,
bool can_paste);
BraveBookmarkContextMenuController(
const BraveBookmarkContextMenuController&) = delete;
@@ -79,7 +79,7 @@ TEST_F(BraveBookmarkContextMenuControllerTest,
BookmarkContextMenuController controller(
gfx::NativeWindow(), nullptr, nullptr, profile_.get(),
BookmarkLaunchLocation::kSidePanelContextMenu,
{model_->bookmark_bar_node()});
{model_->bookmark_bar_node()}, /*can_paste=*/false);
// Show apps command is not present by default.
sync_preferences::TestingPrefServiceSyncable* prefs =
@@ -116,7 +116,8 @@ TEST_F(BraveBookmarkContextMenuControllerTest,
TEST_F(BraveBookmarkContextMenuControllerTest, AddBraveBookmarksSubmenu) {
BraveBookmarkContextMenuController controller(
gfx::NativeWindow(), nullptr, nullptr, profile_.get(),
BookmarkLaunchLocation::kSidePanelFolder, {model_->bookmark_bar_node()});
BookmarkLaunchLocation::kSidePanelFolder, {model_->bookmark_bar_node()},
/*can_paste=*/false);
EXPECT_FALSE(controller.menu_model()
->GetIndexOfCommandId(IDC_BOOKMARK_BAR_ALWAYS_SHOW)
.has_value());
@@ -191,7 +192,8 @@ TEST_F(BraveBookmarkContextMenuControllerTest,
model_->bookmark_bar_node(), 0, u"t", GURL("https://example.com"));
BraveBookmarkContextMenuController controller(
gfx::NativeWindow(), nullptr, nullptr, profile_.get(),
BookmarkLaunchLocation::kSidePanelFolder, {url_node});
BookmarkLaunchLocation::kSidePanelFolder, {url_node},
/*can_paste=*/false);
EXPECT_FALSE(
controller.menu_model()->GetIndexOfCommandId(IDC_OPEN_IN_CONTAINER));
@@ -215,7 +217,8 @@ TEST_F(BraveBookmarkContextMenuContainersTest,
model_->bookmark_bar_node(), 0, u"t", GURL("https://example.com"));
BraveBookmarkContextMenuController controller(
gfx::NativeWindow(), nullptr, nullptr, profile_.get(),
BookmarkLaunchLocation::kSidePanelFolder, {url_node});
BookmarkLaunchLocation::kSidePanelFolder, {url_node},
/*can_paste=*/false);
ASSERT_TRUE(
controller.menu_model()->GetIndexOfCommandId(IDC_OPEN_IN_CONTAINER));
@@ -238,7 +241,7 @@ TEST_F(BraveBookmarkContextMenuContainersTest,
model_->AddFolder(model_->bookmark_bar_node(), 0, u"f");
BraveBookmarkContextMenuController controller(
gfx::NativeWindow(), nullptr, nullptr, profile_.get(),
BookmarkLaunchLocation::kSidePanelFolder, {folder});
BookmarkLaunchLocation::kSidePanelFolder, {folder}, /*can_paste=*/false);
EXPECT_FALSE(
controller.menu_model()->GetIndexOfCommandId(IDC_OPEN_IN_CONTAINER));
@@ -253,7 +256,7 @@ TEST_F(BraveBookmarkContextMenuContainersTest,
u"b", GURL("https://b.example/"));
BraveBookmarkContextMenuController controller(
gfx::NativeWindow(), nullptr, nullptr, profile_.get(),
BookmarkLaunchLocation::kSidePanelFolder, {a, b});
BookmarkLaunchLocation::kSidePanelFolder, {a, b}, /*can_paste=*/false);
EXPECT_FALSE(
controller.menu_model()->GetIndexOfCommandId(IDC_OPEN_IN_CONTAINER));
@@ -27,13 +27,15 @@ BraveBookmarkContextMenu::BraveBookmarkContextMenu(
BookmarkLaunchLocation opened_from,
const std::vector<
raw_ptr<const bookmarks::BookmarkNode, VectorExperimental>>& selection,
bool close_on_remove)
bool close_on_remove,
bool can_paste)
: BookmarkContextMenu(parent_widget,
browser,
profile,
opened_from,
selection,
close_on_remove) {
close_on_remove,
can_paste) {
auto* submenu = menu()->GetMenuItemByID(IDC_BRAVE_BOOKMARK_BAR_SUBMENU);
DCHECK(submenu);
auto* submenu_model = controller_->GetBookmarkSubmenuModel();
@@ -21,7 +21,8 @@ class BraveBookmarkContextMenu : public BookmarkContextMenu {
BookmarkLaunchLocation opened_from,
const std::vector<raw_ptr<const bookmarks::BookmarkNode,
VectorExperimental>>& selection,
bool close_on_remove);
bool close_on_remove,
bool can_paste);
BraveBookmarkContextMenu(const BraveBookmarkContextMenu&) = delete;
BraveBookmarkContextMenu& operator=(const BraveBookmarkContextMenu&) = delete;
@@ -66,7 +66,7 @@ class BraveBookmarkContextMenuTest : public testing::Test {
model_->bookmark_bar_node()};
auto menu = std::make_unique<BraveBookmarkContextMenu>(
nullptr, nullptr, profile_.get(), BookmarkLaunchLocation::kNone, nodes,
false);
false, /*can_paste=*/false);
menu->GetControllerForTesting()->SetPrefsForTesting(prefs_.get());
return menu;
}