diff options
-rw-r--r-- | chrome/browser/cocoa/bookmark_menu_bridge.h | 6 | ||||
-rw-r--r-- | chrome/browser/cocoa/bookmark_menu_bridge.mm | 13 | ||||
-rw-r--r-- | chrome/browser/cocoa/bookmark_menu_bridge_unittest.mm | 21 |
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); +} + |