diff options
author | jrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-29 17:28:46 +0000 |
---|---|---|
committer | jrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-29 17:28:46 +0000 |
commit | c83aca60c53e6196a38fac5431b25a82b0a0c94a (patch) | |
tree | 4899d1769063be0e803bd680d42562bb784c761d | |
parent | 2de1e53f716e5fc1264a680be94f371d01002108 (diff) | |
download | chromium_src-c83aca60c53e6196a38fac5431b25a82b0a0c94a.zip chromium_src-c83aca60c53e6196a38fac5431b25a82b0a0c94a.tar.gz chromium_src-c83aca60c53e6196a38fac5431b25a82b0a0c94a.tar.bz2 |
Bookmark menus not updated when their name is edited in the bookmark bar.
BUG=http://crbug.com/23301
TEST=see bug
Review URL: http://codereview.chromium.org/245035
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27502 0039d316-1c4b-4281-b951-d872f2087c98
-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); +} + |