summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/cocoa/bookmark_menu_bridge.h6
-rw-r--r--chrome/browser/cocoa/bookmark_menu_bridge.mm13
-rw-r--r--chrome/browser/cocoa/bookmark_menu_bridge_unittest.mm21
3 files changed, 35 insertions, 5 deletions
diff --git a/chrome/browser/cocoa/bookmark_menu_bridge.h b/chrome/browser/cocoa/bookmark_menu_bridge.h
index b2c787b..577144e 100644
--- a/chrome/browser/cocoa/bookmark_menu_bridge.h
+++ b/chrome/browser/cocoa/bookmark_menu_bridge.h
@@ -78,7 +78,11 @@ class BookmarkMenuBridge : public BookmarkModelObserver {
// This configures an NSMenuItem with all the data from a BookmarkNode. This
// is used to update existing menu items, as well as to configure newly
// created ones, like in AddNodeToMenu().
- void ConfigureMenuItem(const BookmarkNode* node, NSMenuItem* item);
+ // |set_title| is optional since it is only needed when we get a
+ // node changed notification. On initial build of the menu we set
+ // the title as part of alloc/init.
+ void ConfigureMenuItem(const BookmarkNode* node, NSMenuItem* item,
+ bool set_title);
// Returns the NSMenuItem for a given BookmarkNode.
NSMenuItem* MenuItemForNode(const BookmarkNode* node);
diff --git a/chrome/browser/cocoa/bookmark_menu_bridge.mm b/chrome/browser/cocoa/bookmark_menu_bridge.mm
index 22a207f..70a0983 100644
--- a/chrome/browser/cocoa/bookmark_menu_bridge.mm
+++ b/chrome/browser/cocoa/bookmark_menu_bridge.mm
@@ -94,14 +94,14 @@ void BookmarkMenuBridge::BookmarkNodeChanged(BookmarkModel* model,
const BookmarkNode* node) {
NSMenuItem* item = MenuItemForNode(node);
if (item)
- ConfigureMenuItem(node, item);
+ ConfigureMenuItem(node, item, true);
}
void BookmarkMenuBridge::BookmarkNodeFavIconLoaded(BookmarkModel* model,
const BookmarkNode* node) {
NSMenuItem* item = MenuItemForNode(node);
if (item)
- ConfigureMenuItem(node, item);
+ ConfigureMenuItem(node, item, false);
}
void BookmarkMenuBridge::BookmarkNodeChildrenReordered(
@@ -180,13 +180,18 @@ void BookmarkMenuBridge::AddNodeToMenu(const BookmarkNode* node, NSMenu* menu) {
[menu setSubmenu:submenu forItem:item];
AddNodeToMenu(child, submenu); // recursive call
} else {
- ConfigureMenuItem(child, item);
+ ConfigureMenuItem(child, item, false);
}
}
}
void BookmarkMenuBridge::ConfigureMenuItem(const BookmarkNode* node,
- NSMenuItem* item) {
+ NSMenuItem* item,
+ bool set_title) {
+ if (set_title) {
+ NSString* title = [BookmarkMenuCocoaController menuTitleForNode:node];
+ [item setTitle:title];
+ }
[item setTarget:controller_];
[item setAction:@selector(openBookmarkMenuItem:)];
[item setTag:node->id()];
diff --git a/chrome/browser/cocoa/bookmark_menu_bridge_unittest.mm b/chrome/browser/cocoa/bookmark_menu_bridge_unittest.mm
index 62b6244..7179c4e 100644
--- a/chrome/browser/cocoa/bookmark_menu_bridge_unittest.mm
+++ b/chrome/browser/cocoa/bookmark_menu_bridge_unittest.mm
@@ -231,3 +231,24 @@ TEST_F(BookmarkMenuBridgeTest, TestFavIconLoading) {
bridge_->BookmarkNodeFavIconLoaded(model, node);
EXPECT_TRUE([item image]);
}
+
+TEST_F(BookmarkMenuBridgeTest, TestChangeTitle) {
+ NSMenu* menu = bridge_->menu_;
+ BookmarkModel* model = bridge_->GetBookmarkModel();
+ const BookmarkNode* root = model->GetBookmarkBarNode();
+ EXPECT_TRUE(model && root);
+
+ const BookmarkNode* node =
+ model->AddURL(root, 0, L"Test Item",
+ GURL("http://title-test"));
+ NSMenuItem* item = [menu itemWithTitle:@"Test Item"];
+ EXPECT_TRUE([item image]);
+
+ model->SetTitle(node, L"New Title");
+
+ item = [menu itemWithTitle:@"Test Item"];
+ EXPECT_FALSE(item);
+ item = [menu itemWithTitle:@"New Title"];
+ EXPECT_TRUE(item);
+}
+