| OLD | NEW |
| 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 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 bool enable) { | 74 bool enable) { |
| 75 bridge->AddItemToMenu(command_id, message_id, node, menu, enable); | 75 bridge->AddItemToMenu(command_id, message_id, node, menu, enable); |
| 76 } | 76 } |
| 77 | 77 |
| 78 NSMenuItem* MenuItemForNode(BookmarkMenuBridge* bridge, | 78 NSMenuItem* MenuItemForNode(BookmarkMenuBridge* bridge, |
| 79 const BookmarkNode* node) { | 79 const BookmarkNode* node) { |
| 80 return bridge->MenuItemForNode(node); | 80 return bridge->MenuItemForNode(node); |
| 81 } | 81 } |
| 82 | 82 |
| 83 NSMenuItem* AddTestMenuItem(NSMenu *menu, NSString *title, SEL selector) { | 83 NSMenuItem* AddTestMenuItem(NSMenu *menu, NSString *title, SEL selector) { |
| 84 NSMenuItem *item = [[[NSMenuItem alloc] initWithTitle:title action:NULL | 84 NSMenuItem* item = [[[NSMenuItem alloc] initWithTitle:title |
| 85 action:nullptr |
| 85 keyEquivalent:@""] autorelease]; | 86 keyEquivalent:@""] autorelease]; |
| 86 if (selector) | 87 if (selector) |
| 87 [item setAction:selector]; | 88 [item setAction:selector]; |
| 88 [menu addItem:item]; | 89 [menu addItem:item]; |
| 89 return item; | 90 return item; |
| 90 } | 91 } |
| 91 std::unique_ptr<TestBookmarkMenuBridge> bridge_; | 92 std::unique_ptr<TestBookmarkMenuBridge> bridge_; |
| 92 }; | 93 }; |
| 93 | 94 |
| 94 TEST_F(BookmarkMenuBridgeTest, TestBookmarkMenuAutoSeparator) { | 95 TEST_F(BookmarkMenuBridgeTest, TestBookmarkMenuAutoSeparator) { |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 EXPECT_TRUE(model && root); | 176 EXPECT_TRUE(model && root); |
| 176 | 177 |
| 177 const char* short_url = "http://foo/"; | 178 const char* short_url = "http://foo/"; |
| 178 const char* long_url = "http://super-duper-long-url--." | 179 const char* long_url = "http://super-duper-long-url--." |
| 179 "that.cannot.possibly.fit.even-in-80-columns" | 180 "that.cannot.possibly.fit.even-in-80-columns" |
| 180 "or.be.reasonably-displayed-in-a-menu" | 181 "or.be.reasonably-displayed-in-a-menu" |
| 181 "without.looking-ridiculous.com/"; // 140 chars total | 182 "without.looking-ridiculous.com/"; // 140 chars total |
| 182 | 183 |
| 183 // 3 nodes; middle one has a child, last one has a HUGE URL | 184 // 3 nodes; middle one has a child, last one has a HUGE URL |
| 184 // Set their titles to be the same as the URLs | 185 // Set their titles to be the same as the URLs |
| 185 const BookmarkNode* node = NULL; | 186 const BookmarkNode* node = nullptr; |
| 186 model->AddURL(root, 0, ASCIIToUTF16(short_url), GURL(short_url)); | 187 model->AddURL(root, 0, ASCIIToUTF16(short_url), GURL(short_url)); |
| 187 bridge_->UpdateMenu(menu); | 188 bridge_->UpdateMenu(menu); |
| 188 int prev_count = [menu numberOfItems] - 1; // "extras" added at this point | 189 int prev_count = [menu numberOfItems] - 1; // "extras" added at this point |
| 189 node = model->AddFolder(root, 1, empty); | 190 node = model->AddFolder(root, 1, empty); |
| 190 model->AddURL(root, 2, ASCIIToUTF16(long_url), GURL(long_url)); | 191 model->AddURL(root, 2, ASCIIToUTF16(long_url), GURL(long_url)); |
| 191 | 192 |
| 192 // And the submenu fo the middle one | 193 // And the submenu fo the middle one |
| 193 model->AddURL(node, 0, empty, GURL("http://sub")); | 194 model->AddURL(node, 0, empty, GURL("http://sub")); |
| 194 bridge_->UpdateMenu(menu); | 195 bridge_->UpdateMenu(menu); |
| 195 | 196 |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 253 EXPECT_EQ(0, [menu numberOfItems]); | 254 EXPECT_EQ(0, [menu numberOfItems]); |
| 254 | 255 |
| 255 AddItemToMenu(bridge_.get(), IDC_BOOKMARK_BAR_OPEN_ALL, | 256 AddItemToMenu(bridge_.get(), IDC_BOOKMARK_BAR_OPEN_ALL, |
| 256 IDS_BOOKMARK_BAR_OPEN_ALL, root, menu, true); | 257 IDS_BOOKMARK_BAR_OPEN_ALL, root, menu, true); |
| 257 AddItemToMenu(bridge_.get(), IDC_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW, | 258 AddItemToMenu(bridge_.get(), IDC_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW, |
| 258 IDS_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW, root, menu, true); | 259 IDS_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW, root, menu, true); |
| 259 AddItemToMenu(bridge_.get(), IDC_BOOKMARK_BAR_OPEN_ALL_INCOGNITO, | 260 AddItemToMenu(bridge_.get(), IDC_BOOKMARK_BAR_OPEN_ALL_INCOGNITO, |
| 260 IDS_BOOKMARK_BAR_OPEN_INCOGNITO, root, menu, true); | 261 IDS_BOOKMARK_BAR_OPEN_INCOGNITO, root, menu, true); |
| 261 EXPECT_EQ(3, [menu numberOfItems]); | 262 EXPECT_EQ(3, [menu numberOfItems]); |
| 262 | 263 |
| 263 title = l10n_util::GetNSStringWithFixup(IDS_BOOKMARK_BAR_OPEN_ALL); | 264 title = l10n_util::GetPluralNSStringF(IDS_BOOKMARK_BAR_OPEN_ALL, 0); |
| 264 item = [menu itemWithTitle:title]; | 265 item = [menu itemWithTitle:title]; |
| 265 EXPECT_TRUE(item); | 266 EXPECT_TRUE(item); |
| 266 EXPECT_EQ(@selector(openAllBookmarks:), [item action]); | 267 EXPECT_EQ(@selector(openAllBookmarks:), [item action]); |
| 267 EXPECT_TRUE([item isEnabled]); | 268 EXPECT_TRUE([item isEnabled]); |
| 268 | 269 |
| 269 title = l10n_util::GetNSStringWithFixup(IDS_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW); | 270 title = |
| 271 l10n_util::GetPluralNSStringF(IDS_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW, 0); |
| 270 item = [menu itemWithTitle:title]; | 272 item = [menu itemWithTitle:title]; |
| 271 EXPECT_TRUE(item); | 273 EXPECT_TRUE(item); |
| 272 EXPECT_EQ(@selector(openAllBookmarksNewWindow:), [item action]); | 274 EXPECT_EQ(@selector(openAllBookmarksNewWindow:), [item action]); |
| 273 EXPECT_TRUE([item isEnabled]); | 275 EXPECT_TRUE([item isEnabled]); |
| 274 | 276 |
| 275 title = l10n_util::GetNSStringWithFixup(IDS_BOOKMARK_BAR_OPEN_INCOGNITO); | 277 title = l10n_util::GetPluralNSStringF(IDS_BOOKMARK_BAR_OPEN_INCOGNITO, 0); |
| 276 item = [menu itemWithTitle:title]; | 278 item = [menu itemWithTitle:title]; |
| 277 EXPECT_TRUE(item); | 279 EXPECT_TRUE(item); |
| 278 EXPECT_EQ(@selector(openAllBookmarksIncognitoWindow:), [item action]); | 280 EXPECT_EQ(@selector(openAllBookmarksIncognitoWindow:), [item action]); |
| 279 EXPECT_TRUE([item isEnabled]); | 281 EXPECT_TRUE([item isEnabled]); |
| 280 | 282 |
| 281 ClearBookmarkMenu(bridge_.get(), menu); | 283 ClearBookmarkMenu(bridge_.get(), menu); |
| 282 EXPECT_EQ(0, [menu numberOfItems]); | 284 EXPECT_EQ(0, [menu numberOfItems]); |
| 283 | 285 |
| 284 AddItemToMenu(bridge_.get(), IDC_BOOKMARK_BAR_OPEN_ALL, | 286 AddItemToMenu(bridge_.get(), IDC_BOOKMARK_BAR_OPEN_ALL, |
| 285 IDS_BOOKMARK_BAR_OPEN_ALL, root, menu, false); | 287 IDS_BOOKMARK_BAR_OPEN_ALL, root, menu, false); |
| 286 AddItemToMenu(bridge_.get(), IDC_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW, | 288 AddItemToMenu(bridge_.get(), IDC_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW, |
| 287 IDS_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW, root, menu, false); | 289 IDS_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW, root, menu, false); |
| 288 AddItemToMenu(bridge_.get(), IDC_BOOKMARK_BAR_OPEN_ALL_INCOGNITO, | 290 AddItemToMenu(bridge_.get(), IDC_BOOKMARK_BAR_OPEN_ALL_INCOGNITO, |
| 289 IDS_BOOKMARK_BAR_OPEN_INCOGNITO, root, menu, false); | 291 IDS_BOOKMARK_BAR_OPEN_INCOGNITO, root, menu, false); |
| 290 EXPECT_EQ(3, [menu numberOfItems]); | 292 EXPECT_EQ(3, [menu numberOfItems]); |
| 291 | 293 |
| 292 title = l10n_util::GetNSStringWithFixup(IDS_BOOKMARK_BAR_OPEN_ALL); | 294 title = l10n_util::GetPluralNSStringF(IDS_BOOKMARK_BAR_OPEN_ALL, 0); |
| 293 item = [menu itemWithTitle:title]; | 295 item = [menu itemWithTitle:title]; |
| 294 EXPECT_TRUE(item); | 296 EXPECT_TRUE(item); |
| 295 EXPECT_EQ(nil, [item action]); | 297 EXPECT_EQ(nil, [item action]); |
| 296 EXPECT_FALSE([item isEnabled]); | 298 EXPECT_FALSE([item isEnabled]); |
| 297 | 299 |
| 298 title = l10n_util::GetNSStringWithFixup(IDS_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW); | 300 title = |
| 301 l10n_util::GetPluralNSStringF(IDS_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW, 0); |
| 299 item = [menu itemWithTitle:title]; | 302 item = [menu itemWithTitle:title]; |
| 300 EXPECT_TRUE(item); | 303 EXPECT_TRUE(item); |
| 301 EXPECT_EQ(nil, [item action]); | 304 EXPECT_EQ(nil, [item action]); |
| 302 EXPECT_FALSE([item isEnabled]); | 305 EXPECT_FALSE([item isEnabled]); |
| 303 | 306 |
| 304 title = l10n_util::GetNSStringWithFixup(IDS_BOOKMARK_BAR_OPEN_INCOGNITO); | 307 title = l10n_util::GetPluralNSStringF(IDS_BOOKMARK_BAR_OPEN_INCOGNITO, 0); |
| 305 item = [menu itemWithTitle:title]; | 308 item = [menu itemWithTitle:title]; |
| 306 EXPECT_TRUE(item); | 309 EXPECT_TRUE(item); |
| 307 EXPECT_EQ(nil, [item action]); | 310 EXPECT_EQ(nil, [item action]); |
| 308 EXPECT_FALSE([item isEnabled]); | 311 EXPECT_FALSE([item isEnabled]); |
| 309 } | 312 } |
| 310 | 313 |
| 311 // Makes sure our internal map of BookmarkNode to NSMenuItem works. | 314 // Makes sure our internal map of BookmarkNode to NSMenuItem works. |
| 312 TEST_F(BookmarkMenuBridgeTest, TestGetMenuItemForNode) { | 315 TEST_F(BookmarkMenuBridgeTest, TestGetMenuItemForNode) { |
| 313 base::string16 empty; | 316 base::string16 empty; |
| 314 NSMenu* menu = bridge_->menu_; | 317 NSMenu* menu = bridge_->menu_; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 330 const BookmarkNode* removed_node = root->GetChild(0); | 333 const BookmarkNode* removed_node = root->GetChild(0); |
| 331 EXPECT_EQ(2, root->child_count()); | 334 EXPECT_EQ(2, root->child_count()); |
| 332 model->Remove(root->GetChild(0)); | 335 model->Remove(root->GetChild(0)); |
| 333 EXPECT_EQ(1, root->child_count()); | 336 EXPECT_EQ(1, root->child_count()); |
| 334 bridge_->UpdateMenu(menu); | 337 bridge_->UpdateMenu(menu); |
| 335 EXPECT_FALSE(MenuItemForNode(bridge_.get(), removed_node)); | 338 EXPECT_FALSE(MenuItemForNode(bridge_.get(), removed_node)); |
| 336 EXPECT_TRUE(MenuItemForNode(bridge_.get(), root->GetChild(0))); | 339 EXPECT_TRUE(MenuItemForNode(bridge_.get(), root->GetChild(0))); |
| 337 | 340 |
| 338 const BookmarkNode empty_node(GURL("http://no-where/")); | 341 const BookmarkNode empty_node(GURL("http://no-where/")); |
| 339 EXPECT_FALSE(MenuItemForNode(bridge_.get(), &empty_node)); | 342 EXPECT_FALSE(MenuItemForNode(bridge_.get(), &empty_node)); |
| 340 EXPECT_FALSE(MenuItemForNode(bridge_.get(), NULL)); | 343 EXPECT_FALSE(MenuItemForNode(bridge_.get(), nullptr)); |
| 341 } | 344 } |
| 342 | 345 |
| 343 // Test that Loaded() adds both the bookmark bar nodes and the "other" nodes. | 346 // Test that Loaded() adds both the bookmark bar nodes and the "other" nodes. |
| 344 TEST_F(BookmarkMenuBridgeTest, TestAddNodeToOther) { | 347 TEST_F(BookmarkMenuBridgeTest, TestAddNodeToOther) { |
| 345 NSMenu* menu = bridge_->menu_; | 348 NSMenu* menu = bridge_->menu_; |
| 346 | 349 |
| 347 BookmarkModel* model = bridge_->GetBookmarkModel(); | 350 BookmarkModel* model = bridge_->GetBookmarkModel(); |
| 348 const BookmarkNode* root = model->other_node(); | 351 const BookmarkNode* root = model->other_node(); |
| 349 EXPECT_TRUE(model && root); | 352 EXPECT_TRUE(model && root); |
| 350 | 353 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 392 EXPECT_TRUE([item image]); | 395 EXPECT_TRUE([item image]); |
| 393 | 396 |
| 394 model->SetTitle(node, ASCIIToUTF16("New Title")); | 397 model->SetTitle(node, ASCIIToUTF16("New Title")); |
| 395 | 398 |
| 396 item = [menu itemWithTitle:@"Test Item"]; | 399 item = [menu itemWithTitle:@"Test Item"]; |
| 397 EXPECT_FALSE(item); | 400 EXPECT_FALSE(item); |
| 398 item = [menu itemWithTitle:@"New Title"]; | 401 item = [menu itemWithTitle:@"New Title"]; |
| 399 EXPECT_TRUE(item); | 402 EXPECT_TRUE(item); |
| 400 } | 403 } |
| 401 | 404 |
| OLD | NEW |