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

Side by Side Diff: chrome/browser/cocoa/bookmark_bar_controller_unittest.mm

Issue 391046: Fix "open all" on a folder node to open only 'marks in that folder,... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 <Cocoa/Cocoa.h> 5 #import <Cocoa/Cocoa.h>
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/scoped_nsobject.h" 8 #include "base/scoped_nsobject.h"
9 #include "base/sys_string_conversions.h" 9 #include "base/sys_string_conversions.h"
10 #import "chrome/browser/cocoa/bookmark_bar_constants.h" 10 #import "chrome/browser/cocoa/bookmark_bar_constants.h"
11 #import "chrome/browser/cocoa/bookmark_bar_controller.h" 11 #import "chrome/browser/cocoa/bookmark_bar_controller.h"
12 #import "chrome/browser/cocoa/bookmark_bar_view.h" 12 #import "chrome/browser/cocoa/bookmark_bar_view.h"
13 #import "chrome/browser/cocoa/bookmark_menu.h"
13 #include "chrome/browser/cocoa/browser_test_helper.h" 14 #include "chrome/browser/cocoa/browser_test_helper.h"
14 #import "chrome/browser/cocoa/cocoa_test_helper.h" 15 #import "chrome/browser/cocoa/cocoa_test_helper.h"
15 #include "chrome/browser/cocoa/test_event_utils.h" 16 #include "chrome/browser/cocoa/test_event_utils.h"
16 #import "chrome/browser/cocoa/view_resizer_pong.h" 17 #import "chrome/browser/cocoa/view_resizer_pong.h"
17 #include "chrome/common/pref_names.h" 18 #include "chrome/common/pref_names.h"
18 #include "testing/gtest/include/gtest/gtest.h" 19 #include "testing/gtest/include/gtest/gtest.h"
19 #include "testing/platform_test.h" 20 #include "testing/platform_test.h"
20 21
21 // Just like a BookmarkBarController but openURL: is stubbed out. 22 // Just like a BookmarkBarController but openURL: is stubbed out.
22 @interface BookmarkBarControllerNoOpen : BookmarkBarController { 23 @interface BookmarkBarControllerNoOpen : BookmarkBarController {
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 bar_.reset( 94 bar_.reset(
94 [[BookmarkBarControllerNoOpen alloc] 95 [[BookmarkBarControllerNoOpen alloc]
95 initWithBrowser:helper_.browser() 96 initWithBrowser:helper_.browser()
96 initialWidth:NSWidth(parent_frame) 97 initialWidth:NSWidth(parent_frame)
97 delegate:nil 98 delegate:nil
98 resizeDelegate:resizeDelegate_.get()]); 99 resizeDelegate:resizeDelegate_.get()]);
99 100
100 InstallAndToggleBar(bar_.get()); 101 InstallAndToggleBar(bar_.get());
101 102
102 // Create a menu/item to act like a sender 103 // Create a menu/item to act like a sender
103 menu_.reset([[NSMenu alloc] initWithTitle:@"I_dont_care"]); 104 menu_.reset([[BookmarkMenu alloc] initWithTitle:@"I_dont_care"]);
104 menu_item_.reset([[NSMenuItem alloc] 105 menu_item_.reset([[NSMenuItem alloc]
105 initWithTitle:@"still_dont_care" 106 initWithTitle:@"still_dont_care"
106 action:NULL 107 action:NULL
107 keyEquivalent:@""]); 108 keyEquivalent:@""]);
108 cell_.reset([[NSButtonCell alloc] init]); 109 cell_.reset([[NSButtonCell alloc] init]);
109 [menu_item_ setMenu:menu_.get()]; 110 [menu_item_ setMenu:menu_.get()];
110 [menu_ setDelegate:cell_.get()]; 111 [menu_ setDelegate:cell_.get()];
111 } 112 }
112 113
113 void InstallAndToggleBar(BookmarkBarController* bar) { 114 void InstallAndToggleBar(BookmarkBarController* bar) {
(...skipping 14 matching lines...) Expand all
128 // Update the state of the bookmark bar. 129 // Update the state of the bookmark bar.
129 void UpdateBookmarkBar() { 130 void UpdateBookmarkBar() {
130 [bar_ updateAndShowNormalBar:[bar_ isShownAsToolbar] 131 [bar_ updateAndShowNormalBar:[bar_ isShownAsToolbar]
131 showDetachedBar:[bar_ isShownAsDetachedBar] 132 showDetachedBar:[bar_ isShownAsDetachedBar]
132 withAnimation:NO]; 133 withAnimation:NO];
133 } 134 }
134 135
135 // Return a menu item that points to the right URL. 136 // Return a menu item that points to the right URL.
136 NSMenuItem* ItemForBookmarkBarMenu(GURL& gurl) { 137 NSMenuItem* ItemForBookmarkBarMenu(GURL& gurl) {
137 node_.reset(new BookmarkNode(gurl)); 138 node_.reset(new BookmarkNode(gurl));
138 [cell_ setRepresentedObject:[NSValue valueWithPointer:node_.get()]]; 139 [menu_ setRepresentedObject:[NSValue valueWithPointer:node_.get()]];
139 return menu_item_; 140 return menu_item_;
140 } 141 }
141 142
142 // Does NOT take ownership of node. 143 // Does NOT take ownership of node.
143 NSMenuItem* ItemForBookmarkBarMenu(const BookmarkNode* node) { 144 NSMenuItem* ItemForBookmarkBarMenu(const BookmarkNode* node) {
144 [cell_ setRepresentedObject:[NSValue valueWithPointer:node]]; 145 [menu_ setRepresentedObject:[NSValue valueWithPointer:node]];
145 return menu_item_; 146 return menu_item_;
146 } 147 }
147 148
148 CocoaTestHelper cocoa_helper_; // Inits Cocoa, creates window, etc... 149 CocoaTestHelper cocoa_helper_; // Inits Cocoa, creates window, etc...
149 scoped_nsobject<NSView> parent_view_; 150 scoped_nsobject<NSView> parent_view_;
150 BrowserTestHelper helper_; 151 BrowserTestHelper helper_;
151 scoped_nsobject<ViewResizerPong> resizeDelegate_; 152 scoped_nsobject<ViewResizerPong> resizeDelegate_;
152 scoped_nsobject<BookmarkBarControllerNoOpen> bar_; 153 scoped_nsobject<BookmarkBarControllerNoOpen> bar_;
153 scoped_nsobject<NSMenu> menu_; 154 scoped_nsobject<BookmarkMenu> menu_;
154 scoped_nsobject<NSMenuItem> menu_item_; 155 scoped_nsobject<NSMenuItem> menu_item_;
155 scoped_nsobject<NSButtonCell> cell_; 156 scoped_nsobject<NSButtonCell> cell_;
156 scoped_ptr<BookmarkNode> node_; 157 scoped_ptr<BookmarkNode> node_;
157 }; 158 };
158 159
159 TEST_F(BookmarkBarControllerTest, ShowWhenShowBookmarkBarTrue) { 160 TEST_F(BookmarkBarControllerTest, ShowWhenShowBookmarkBarTrue) {
160 [bar_ updateAndShowNormalBar:YES 161 [bar_ updateAndShowNormalBar:YES
161 showDetachedBar:NO 162 showDetachedBar:NO
162 withAnimation:NO]; 163 withAnimation:NO];
163 EXPECT_TRUE([bar_ isShownAsToolbar]); 164 EXPECT_TRUE([bar_ isShownAsToolbar]);
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after
513 L"title", GURL("http://one.com")); 514 L"title", GURL("http://one.com"));
514 const BookmarkNode* folder = model->AddGroup(parent, 515 const BookmarkNode* folder = model->AddGroup(parent,
515 parent->GetChildCount(), 516 parent->GetChildCount(),
516 L"group"); 517 L"group");
517 model->AddURL(folder, folder->GetChildCount(), 518 model->AddURL(folder, folder->GetChildCount(),
518 L"title", GURL("http://two-one.com")); 519 L"title", GURL("http://two-one.com"));
519 model->AddURL(folder, folder->GetChildCount(), 520 model->AddURL(folder, folder->GetChildCount(),
520 L"title", GURL("http://two-two.com")); 521 L"title", GURL("http://two-two.com"));
521 model->AddURL(parent, parent->GetChildCount(), 522 model->AddURL(parent, parent->GetChildCount(),
522 L"title", GURL("https://three.com")); 523 L"title", GURL("https://three.com"));
523 [bar_ openAllBookmarks:nil];
524 524
525 // Our first OpenAll... is from the bar itself.
526 [bar_ openAllBookmarks:ItemForBookmarkBarMenu(parent)];
525 EXPECT_EQ(bar_.get()->urls_.size(), 4U); 527 EXPECT_EQ(bar_.get()->urls_.size(), 4U);
526 EXPECT_EQ(bar_.get()->dispositions_.size(), 4U); 528 EXPECT_EQ(bar_.get()->dispositions_.size(), 4U);
527 529
528 // I can't use EXPECT_EQ() here since the macro can't expand 530 // I can't use EXPECT_EQ() here since the macro can't expand
529 // properly (no way to print the value of an iterator). 531 // properly (no way to print the value of an iterator).
530 std::vector<GURL>::iterator i; 532 std::vector<GURL>::iterator i;
531 std::vector<GURL>::iterator begin = bar_.get()->urls_.begin(); 533 std::vector<GURL>::iterator begin = bar_.get()->urls_.begin();
532 std::vector<GURL>::iterator end = bar_.get()->urls_.end(); 534 std::vector<GURL>::iterator end = bar_.get()->urls_.end();
533 i = find(begin, end, GURL("http://two-one.com")); 535 i = find(begin, end, GURL("http://two-one.com"));
534 EXPECT_FALSE(i == end); 536 EXPECT_FALSE(i == end);
535 i = find(begin, end, GURL("https://three.com")); 537 i = find(begin, end, GURL("https://three.com"));
536 EXPECT_FALSE(i == end); 538 EXPECT_FALSE(i == end);
537 i = find(begin, end, GURL("https://will-not-be-found.com")); 539 i = find(begin, end, GURL("https://will-not-be-found.com"));
538 EXPECT_TRUE(i == end); 540 EXPECT_TRUE(i == end);
539 541
540 EXPECT_EQ(bar_.get()->dispositions_[3], NEW_BACKGROUND_TAB); 542 EXPECT_EQ(bar_.get()->dispositions_[3], NEW_BACKGROUND_TAB);
543
544 // Now try an OpenAll... from a folder node.
545 bar_.get()->urls_.clear();
546 bar_.get()->dispositions_.clear();
547 [bar_ openAllBookmarks:ItemForBookmarkBarMenu(folder)];
548
549 EXPECT_EQ(bar_.get()->urls_.size(), 2U);
550 EXPECT_EQ(bar_.get()->dispositions_.size(), 2U);
541 } 551 }
542 552
543 // TODO(jrg): write a test to confirm that nodeFavIconLoaded calls 553 // TODO(jrg): write a test to confirm that nodeFavIconLoaded calls
544 // checkForBookmarkButtonGrowth:. 554 // checkForBookmarkButtonGrowth:.
545 555
546 TEST_F(BookmarkBarControllerTest, Cell) { 556 TEST_F(BookmarkBarControllerTest, Cell) {
547 BookmarkModel* model = helper_.profile()->GetBookmarkModel(); 557 BookmarkModel* model = helper_.profile()->GetBookmarkModel();
548 [bar_ loaded:model]; 558 [bar_ loaded:model];
549 559
550 const BookmarkNode* parent = model->GetBookmarkBarNode(); 560 const BookmarkNode* parent = model->GetBookmarkBarNode();
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
684 BookmarkModel* model = helper_.profile()->GetBookmarkModel(); 694 BookmarkModel* model = helper_.profile()->GetBookmarkModel();
685 const BookmarkNode* parent = model->GetBookmarkBarNode(); 695 const BookmarkNode* parent = model->GetBookmarkBarNode();
686 [bar_ addURLs:nsurls withTitles:nstitles at:NSZeroPoint]; 696 [bar_ addURLs:nsurls withTitles:nstitles at:NSZeroPoint];
687 EXPECT_EQ(3, parent->GetChildCount()); 697 EXPECT_EQ(3, parent->GetChildCount());
688 for (int i = 0; i < parent->GetChildCount(); ++i) { 698 for (int i = 0; i < parent->GetChildCount(); ++i) {
689 EXPECT_EQ(parent->GetChild(i)->GetURL(), GURL(urls[i])); 699 EXPECT_EQ(parent->GetChild(i)->GetURL(), GURL(urls[i]));
690 EXPECT_EQ(parent->GetChild(i)->GetTitle(), titles[i]); 700 EXPECT_EQ(parent->GetChild(i)->GetTitle(), titles[i]);
691 } 701 }
692 } 702 }
693 703
704 TEST_F(BookmarkBarControllerTest, TestButtonOrBar) {
705 BookmarkModel* model = helper_.profile()->GetBookmarkModel();
706 GURL gurl1("http://www.google.com");
707 std::wstring title1(L"x");
708 model->SetURLStarred(gurl1, title1, true);
709
710 GURL gurl2("http://www.google.com/gurl_power");
711 std::wstring title2(L"gurl power");
712 model->SetURLStarred(gurl2, title2, true);
713
714 NSButton* first = [[bar_ buttons] objectAtIndex:0];
715 NSButton* second = [[bar_ buttons] objectAtIndex:1];
716 EXPECT_TRUE(first && second);
717
718 NSMenuItem* menuItem = [[[first cell] menu] itemAtIndex:0];
719 BookmarkNode* node = [bar_ nodeFromMenuItem:menuItem];
720 EXPECT_TRUE(node);
721 EXPECT_EQ(node, model->GetBookmarkBarNode()->GetChild(0));
722
723 menuItem = [[[second cell] menu] itemAtIndex:0];
724 node = [bar_ nodeFromMenuItem:menuItem];
725 EXPECT_TRUE(node);
726 EXPECT_EQ(node, model->GetBookmarkBarNode()->GetChild(1));
727
728 menuItem = [[[bar_ view] menu] itemAtIndex:0];
729 node = [bar_ nodeFromMenuItem:menuItem];
730 EXPECT_TRUE(node);
731 EXPECT_EQ(node, model->GetBookmarkBarNode());
732 }
733
734 TEST_F(BookmarkBarControllerTest, TestMenuNodeAndDisable) {
735 BookmarkModel* model = helper_.profile()->GetBookmarkModel();
736 const BookmarkNode* parent = model->GetBookmarkBarNode();
737 const BookmarkNode* folder = model->AddGroup(parent,
738 parent->GetChildCount(),
739 L"group");
740 NSButton* button = [[bar_ buttons] objectAtIndex:0];
741 EXPECT_TRUE(button);
742
743 // Confirm the menu knows which node it is talking about
744 BookmarkMenu* menu = static_cast<BookmarkMenu*>([[button cell] menu]);
745 EXPECT_TRUE(menu);
746 EXPECT_TRUE([menu isKindOfClass:[BookmarkMenu class]]);
747 EXPECT_EQ(folder, [menu node]);
748
749 // Make sure "Open All" is disabled (nothing to open -- no children!)
750 // (Assumes "Open All" is the 1st item)
751 NSMenuItem* item = [menu itemAtIndex:0];
752 EXPECT_FALSE([bar_ validateUserInterfaceItem:item]);
753
754 // Now add a child and make sure the item would be enabled.
755 model->AddURL(folder, folder->GetChildCount(),
756 L"super duper wide title",
757 GURL("http://superfriends.hall-of-justice.edu"));
758 EXPECT_TRUE([bar_ validateUserInterfaceItem:item]);
759 }
760
694 } // namespace 761 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/cocoa/bookmark_bar_controller.mm ('k') | chrome/browser/cocoa/bookmark_button_cell.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698