Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(793)

Side by Side Diff: chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge_unittest.mm

Issue 2804903003: [Mac] Remove "Open All Bookmarks" menu items from application and wrench menus (Closed)
Patch Set: Rebase Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import <AppKit/AppKit.h> 5 #import <AppKit/AppKit.h>
6 6
7 #include "base/strings/string16.h" 7 #include "base/strings/string16.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/app/chrome_command_ids.h" 10 #include "chrome/app/chrome_command_ids.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 59
60 void InvalidateMenu() { bridge_->InvalidateMenu(); } 60 void InvalidateMenu() { bridge_->InvalidateMenu(); }
61 bool menu_is_valid() { return bridge_->menuIsValid_; } 61 bool menu_is_valid() { return bridge_->menuIsValid_; }
62 62
63 void AddNodeToMenu(BookmarkMenuBridge* bridge, 63 void AddNodeToMenu(BookmarkMenuBridge* bridge,
64 const BookmarkNode* root, 64 const BookmarkNode* root,
65 NSMenu* menu) { 65 NSMenu* menu) {
66 bridge->AddNodeToMenu(root, menu, true); 66 bridge->AddNodeToMenu(root, menu, true);
67 } 67 }
68 68
69 void AddItemToMenu(BookmarkMenuBridge* bridge,
70 int command_id,
71 int message_id,
72 const BookmarkNode* node,
73 NSMenu* menu,
74 bool enable) {
75 bridge->AddItemToMenu(command_id, message_id, node, menu, enable);
76 }
77
78 NSMenuItem* MenuItemForNode(BookmarkMenuBridge* bridge, 69 NSMenuItem* MenuItemForNode(BookmarkMenuBridge* bridge,
79 const BookmarkNode* node) { 70 const BookmarkNode* node) {
80 return bridge->MenuItemForNode(node); 71 return bridge->MenuItemForNode(node);
81 } 72 }
82 73
83 NSMenuItem* AddTestMenuItem(NSMenu *menu, NSString *title, SEL selector) { 74 NSMenuItem* AddTestMenuItem(NSMenu *menu, NSString *title, SEL selector) {
84 NSMenuItem* item = [[[NSMenuItem alloc] initWithTitle:title 75 NSMenuItem* item = [[[NSMenuItem alloc] initWithTitle:title
85 action:nullptr 76 action:nullptr
86 keyEquivalent:@""] autorelease]; 77 keyEquivalent:@""] autorelease];
87 if (selector) 78 if (selector)
88 [item setAction:selector]; 79 [item setAction:selector];
89 [menu addItem:item]; 80 [menu addItem:item];
90 return item; 81 return item;
91 } 82 }
92 std::unique_ptr<TestBookmarkMenuBridge> bridge_; 83 std::unique_ptr<TestBookmarkMenuBridge> bridge_;
93 }; 84 };
94 85
95 TEST_F(BookmarkMenuBridgeTest, TestBookmarkMenuAutoSeparator) { 86 TEST_F(BookmarkMenuBridgeTest, TestBookmarkMenuAutoSeparator) {
96 BookmarkModel* model = bridge_->GetBookmarkModel(); 87 BookmarkModel* model = bridge_->GetBookmarkModel();
97 bridge_->BookmarkModelLoaded(model, false); 88 bridge_->BookmarkModelLoaded(model, false);
98 NSMenu* menu = bridge_->menu_; 89 NSMenu* menu = bridge_->menu_;
99 bridge_->UpdateMenu(menu); 90 bridge_->UpdateMenu(menu);
100 // The bare menu after loading used to have a separator and an 91 // The bare menu after loading used to have a separator and an
101 // "Other Bookmarks" submenu, but we no longer show those items if the 92 // "Other Bookmarks" submenu, but we no longer show those items if the
102 // "Other Bookmarks" submenu would be empty. 93 // "Other Bookmarks" submenu would be empty.
103 EXPECT_EQ(0, [menu numberOfItems]); 94 EXPECT_EQ(0, [menu numberOfItems]);
104 // Add a bookmark and reload and there should be 8 items: the previous 95 // Add a bookmark and reload and there should be 2 items:
105 // menu contents plus two new separator, the new bookmark and three 96 // a new separator and the new bookmark.
106 // versions of 'Open All Bookmarks' menu items.
107 const BookmarkNode* parent = model->bookmark_bar_node(); 97 const BookmarkNode* parent = model->bookmark_bar_node();
108 const char* url = "http://www.zim-bop-a-dee.com/"; 98 const char* url = "http://www.zim-bop-a-dee.com/";
109 model->AddURL(parent, 0, ASCIIToUTF16("Bookmark"), GURL(url)); 99 model->AddURL(parent, 0, ASCIIToUTF16("Bookmark"), GURL(url));
110 bridge_->UpdateMenu(menu); 100 bridge_->UpdateMenu(menu);
111 EXPECT_EQ(6, [menu numberOfItems]); 101 EXPECT_EQ(2, [menu numberOfItems]);
112 // Remove the new bookmark and reload and we should have 2 items again 102 // Remove the new bookmark and reload and we should have 0 items again
113 // because the separator should have been removed as well. 103 // because the separator should have been removed as well.
114 model->Remove(parent->GetChild(0)); 104 model->Remove(parent->GetChild(0));
115 bridge_->UpdateMenu(menu); 105 bridge_->UpdateMenu(menu);
116 EXPECT_EQ(0, [menu numberOfItems]); 106 EXPECT_EQ(0, [menu numberOfItems]);
117 } 107 }
118 108
119 // Test that ClearBookmarkMenu() removes all bookmark menus. 109 // Test that ClearBookmarkMenu() removes all bookmark menus.
120 TEST_F(BookmarkMenuBridgeTest, TestClearBookmarkMenu) { 110 TEST_F(BookmarkMenuBridgeTest, TestClearBookmarkMenu) {
121 NSMenu* menu = bridge_->menu_; 111 NSMenu* menu = bridge_->menu_;
122 112
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 // e.g. http://foo becomes http://foo/) 224 // e.g. http://foo becomes http://foo/)
235 EXPECT_GE([[short_item toolTip] length], strlen(short_url) - 3); 225 EXPECT_GE([[short_item toolTip] length], strlen(short_url) - 3);
236 EXPECT_GE([[long_item toolTip] length], strlen(long_url) - 3); 226 EXPECT_GE([[long_item toolTip] length], strlen(long_url) - 3);
237 227
238 // Make sure the favicon is non-nil (should be either the default site 228 // Make sure the favicon is non-nil (should be either the default site
239 // icon or a favicon, if present). 229 // icon or a favicon, if present).
240 EXPECT_TRUE([short_item image]); 230 EXPECT_TRUE([short_item image]);
241 EXPECT_TRUE([long_item image]); 231 EXPECT_TRUE([long_item image]);
242 } 232 }
243 233
244 // Test that AddItemToMenu() properly added versions of
245 // 'Open All Bookmarks' as menu items.
246 TEST_F(BookmarkMenuBridgeTest, TestAddItemToMenu) {
247 NSString* title;
248 NSMenuItem* item;
249 NSMenu* menu = bridge_->menu_;
250
251 BookmarkModel* model = bridge_->GetBookmarkModel();
252 const BookmarkNode* root = model->bookmark_bar_node();
253 EXPECT_TRUE(model && root);
254 EXPECT_EQ(0, [menu numberOfItems]);
255
256 AddItemToMenu(bridge_.get(), IDC_BOOKMARK_BAR_OPEN_ALL,
257 IDS_BOOKMARK_BAR_OPEN_ALL_COUNT, root, menu, true);
258 AddItemToMenu(bridge_.get(), IDC_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW,
259 IDS_BOOKMARK_BAR_OPEN_ALL_COUNT_NEW_WINDOW, root, menu, true);
260 AddItemToMenu(bridge_.get(), IDC_BOOKMARK_BAR_OPEN_ALL_INCOGNITO,
261 IDS_BOOKMARK_BAR_OPEN_INCOGNITO, root, menu, true);
262 EXPECT_EQ(3, [menu numberOfItems]);
263
264 title = l10n_util::GetPluralNSStringF(IDS_BOOKMARK_BAR_OPEN_ALL_COUNT, 0);
265 item = [menu itemWithTitle:title];
266 EXPECT_TRUE(item);
267 EXPECT_EQ(@selector(openAllBookmarks:), [item action]);
268 EXPECT_TRUE([item isEnabled]);
269
270 title = l10n_util::GetPluralNSStringF(
271 IDS_BOOKMARK_BAR_OPEN_ALL_COUNT_NEW_WINDOW, 0);
272 item = [menu itemWithTitle:title];
273 EXPECT_TRUE(item);
274 EXPECT_EQ(@selector(openAllBookmarksNewWindow:), [item action]);
275 EXPECT_TRUE([item isEnabled]);
276
277 title = l10n_util::GetPluralNSStringF(IDS_BOOKMARK_BAR_OPEN_INCOGNITO, 0);
278 item = [menu itemWithTitle:title];
279 EXPECT_TRUE(item);
280 EXPECT_EQ(@selector(openAllBookmarksIncognitoWindow:), [item action]);
281 EXPECT_TRUE([item isEnabled]);
282
283 ClearBookmarkMenu(bridge_.get(), menu);
284 EXPECT_EQ(0, [menu numberOfItems]);
285
286 AddItemToMenu(bridge_.get(), IDC_BOOKMARK_BAR_OPEN_ALL,
287 IDS_BOOKMARK_BAR_OPEN_ALL_COUNT, root, menu, false);
288 AddItemToMenu(bridge_.get(), IDC_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW,
289 IDS_BOOKMARK_BAR_OPEN_ALL_COUNT_NEW_WINDOW, root, menu, false);
290 AddItemToMenu(bridge_.get(), IDC_BOOKMARK_BAR_OPEN_ALL_INCOGNITO,
291 IDS_BOOKMARK_BAR_OPEN_INCOGNITO, root, menu, false);
292 EXPECT_EQ(3, [menu numberOfItems]);
293
294 title = l10n_util::GetPluralNSStringF(IDS_BOOKMARK_BAR_OPEN_ALL_COUNT, 0);
295 item = [menu itemWithTitle:title];
296 EXPECT_TRUE(item);
297 EXPECT_EQ(nil, [item action]);
298 EXPECT_FALSE([item isEnabled]);
299
300 title = l10n_util::GetPluralNSStringF(
301 IDS_BOOKMARK_BAR_OPEN_ALL_COUNT_NEW_WINDOW, 0);
302 item = [menu itemWithTitle:title];
303 EXPECT_TRUE(item);
304 EXPECT_EQ(nil, [item action]);
305 EXPECT_FALSE([item isEnabled]);
306
307 title = l10n_util::GetPluralNSStringF(IDS_BOOKMARK_BAR_OPEN_INCOGNITO, 0);
308 item = [menu itemWithTitle:title];
309 EXPECT_TRUE(item);
310 EXPECT_EQ(nil, [item action]);
311 EXPECT_FALSE([item isEnabled]);
312 }
313
314 // Makes sure our internal map of BookmarkNode to NSMenuItem works. 234 // Makes sure our internal map of BookmarkNode to NSMenuItem works.
315 TEST_F(BookmarkMenuBridgeTest, TestGetMenuItemForNode) { 235 TEST_F(BookmarkMenuBridgeTest, TestGetMenuItemForNode) {
316 base::string16 empty; 236 base::string16 empty;
317 NSMenu* menu = bridge_->menu_; 237 NSMenu* menu = bridge_->menu_;
318 238
319 BookmarkModel* model = bridge_->GetBookmarkModel(); 239 BookmarkModel* model = bridge_->GetBookmarkModel();
320 const BookmarkNode* bookmark_bar = model->bookmark_bar_node(); 240 const BookmarkNode* bookmark_bar = model->bookmark_bar_node();
321 const BookmarkNode* root = model->AddFolder(bookmark_bar, 0, empty); 241 const BookmarkNode* root = model->AddFolder(bookmark_bar, 0, empty);
322 EXPECT_TRUE(model && root); 242 EXPECT_TRUE(model && root);
323 243
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 EXPECT_TRUE([item image]); 315 EXPECT_TRUE([item image]);
396 316
397 model->SetTitle(node, ASCIIToUTF16("New Title")); 317 model->SetTitle(node, ASCIIToUTF16("New Title"));
398 318
399 item = [menu itemWithTitle:@"Test Item"]; 319 item = [menu itemWithTitle:@"Test Item"];
400 EXPECT_FALSE(item); 320 EXPECT_FALSE(item);
401 item = [menu itemWithTitle:@"New Title"]; 321 item = [menu itemWithTitle:@"New Title"];
402 EXPECT_TRUE(item); 322 EXPECT_TRUE(item);
403 } 323 }
404 324
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698