diff options
Diffstat (limited to 'chrome/browser/cocoa/bookmark_bar_controller_unittest.mm')
-rw-r--r-- | chrome/browser/cocoa/bookmark_bar_controller_unittest.mm | 105 |
1 files changed, 84 insertions, 21 deletions
diff --git a/chrome/browser/cocoa/bookmark_bar_controller_unittest.mm b/chrome/browser/cocoa/bookmark_bar_controller_unittest.mm index bc72e65..5da3d0a 100644 --- a/chrome/browser/cocoa/bookmark_bar_controller_unittest.mm +++ b/chrome/browser/cocoa/bookmark_bar_controller_unittest.mm @@ -10,8 +10,10 @@ #import "chrome/browser/cocoa/bookmark_bar_view.h" #include "chrome/browser/cocoa/browser_test_helper.h" #import "chrome/browser/cocoa/cocoa_test_helper.h" +#import "chrome/browser/cocoa/toolbar_compressable.h" #include "chrome/browser/cocoa/test_event_utils.h" #import "chrome/browser/cocoa/view_resizer_pong.h" +#include "chrome/common/pref_names.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/platform_test.h" @@ -76,6 +78,33 @@ @end +// A BookmarkBarController that always beleives that it's on the new tab page. +@interface AlwaysNewTabPageBookmarkBarController : BookmarkBarController { +} +@end + +@implementation AlwaysNewTabPageBookmarkBarController +-(BOOL)isNewTabPage { + return YES; +} +@end + +@interface CompressablePong : NSObject<ToolbarCompressable> { +@private + BOOL compressed_; +} +@property (readonly) BOOL compressed; +@end + +@implementation CompressablePong + +@synthesize compressed = compressed_; + +- (void)setShouldBeCompressed:(BOOL)compressed { + compressed_ = compressed; +} + +@end namespace { @@ -86,12 +115,14 @@ class BookmarkBarControllerTest : public PlatformTest { public: BookmarkBarControllerTest() { resizeDelegate_.reset([[ViewResizerPong alloc] init]); + compressDelegate_.reset([[CompressablePong alloc] init]); NSRect parent_frame = NSMakeRect(0, 0, 800, 50); parent_view_.reset([[NSView alloc] initWithFrame:parent_frame]); [parent_view_ setHidden:YES]; bar_.reset( - [[BookmarkBarController alloc] initWithProfile:helper_.profile() + [[BookmarkBarController alloc] initWithBrowser:helper_.browser() initialWidth:NSWidth(parent_frame) + compressDelegate:compressDelegate_.get() resizeDelegate:resizeDelegate_.get() urlDelegate:nil]); @@ -118,10 +149,9 @@ class BookmarkBarControllerTest : public PlatformTest { [[[bar view] superview] setFrame:frame]; // make sure it's open so certain things aren't no-ops - [bar toggleBookmarkBar]; + helper_.profile()->GetPrefs()->SetBoolean(prefs::kShowBookmarkBar, true); } - // Return a menu item that points to the right URL. NSMenuItem* ItemForBookmarkBarMenu(GURL& gurl) { node_.reset(new BookmarkNode(gurl)); @@ -140,6 +170,7 @@ class BookmarkBarControllerTest : public PlatformTest { scoped_nsobject<NSView> parent_view_; BrowserTestHelper helper_; scoped_nsobject<ViewResizerPong> resizeDelegate_; + scoped_nsobject<CompressablePong> compressDelegate_; scoped_nsobject<BookmarkBarController> bar_; scoped_nsobject<NSMenu> menu_; scoped_nsobject<NSMenuItem> menu_item_; @@ -147,45 +178,77 @@ class BookmarkBarControllerTest : public PlatformTest { scoped_ptr<BookmarkNode> node_; }; -TEST_F(BookmarkBarControllerTest, ShowHide) { - // The test class opens the bar by default since many actions are - // no-ops with it closed. Set back to closed as a baseline. - if ([bar_ isBookmarkBarVisible]) - [bar_ toggleBookmarkBar]; - - // Start hidden. - EXPECT_FALSE([bar_ isBookmarkBarVisible]); - EXPECT_TRUE([[bar_ view] isHidden]); +TEST_F(BookmarkBarControllerTest, ShowWhenShowBookmarkBarTrue) { + helper_.profile()->GetPrefs()->SetBoolean(prefs::kShowBookmarkBar, true); + [bar_ updateVisibility]; - // Show and hide it by toggling. - [bar_ toggleBookmarkBar]; - EXPECT_TRUE([bar_ isBookmarkBarVisible]); + EXPECT_TRUE([bar_ isVisible]); EXPECT_FALSE([[bar_ view] isHidden]); EXPECT_GT([resizeDelegate_ height], 0); EXPECT_GT([[bar_ view] frame].size.height, 0); +} + +TEST_F(BookmarkBarControllerTest, HideWhenShowBookmarkBarFalse) { + helper_.profile()->GetPrefs()->SetBoolean(prefs::kShowBookmarkBar, false); + [bar_ updateVisibility]; - [bar_ toggleBookmarkBar]; - EXPECT_FALSE([bar_ isBookmarkBarVisible]); + EXPECT_FALSE([bar_ isVisible]); EXPECT_TRUE([[bar_ view] isHidden]); EXPECT_EQ(0, [resizeDelegate_ height]); EXPECT_EQ(0, [[bar_ view] frame].size.height); } +TEST_F(BookmarkBarControllerTest, HideWhenShowBookmarkBarTrueButDisabled) { + helper_.profile()->GetPrefs()->SetBoolean(prefs::kShowBookmarkBar, true); + [bar_ setBookmarkBarEnabled:NO]; + [bar_ updateVisibility]; + + EXPECT_FALSE([bar_ isVisible]); + EXPECT_TRUE([[bar_ view] isHidden]); + EXPECT_EQ(0, [resizeDelegate_ height]); + EXPECT_EQ(0, [[bar_ view] frame].size.height); +} + +TEST_F(BookmarkBarControllerTest, ShowOnNewTabPage) { + helper_.profile()->GetPrefs()->SetBoolean(prefs::kShowBookmarkBar, false); + + scoped_nsobject<BookmarkBarControllerTogglePong> bar; + bar.reset( + [[AlwaysNewTabPageBookmarkBarController alloc] + initWithBrowser:helper_.browser() + initialWidth:100 // arbitrary + compressDelegate:compressDelegate_.get() + resizeDelegate:resizeDelegate_.get() + urlDelegate:nil]); + InstallAndToggleBar(bar.get()); + + [bar setBookmarkBarEnabled:NO]; + [bar updateVisibility]; + + EXPECT_TRUE([bar isVisible]); + EXPECT_FALSE([[bar view] isHidden]); + EXPECT_GT([resizeDelegate_ height], 0); + EXPECT_GT([[bar view] frame].size.height, 0); +} + // Make sure we're watching for frame change notifications. TEST_F(BookmarkBarControllerTest, FrameChangeNotification) { scoped_nsobject<BookmarkBarControllerTogglePong> bar; bar.reset( [[BookmarkBarControllerTogglePong alloc] - initWithProfile:helper_.profile() + initWithBrowser:helper_.browser() initialWidth:100 // arbitrary + compressDelegate:compressDelegate_.get() resizeDelegate:resizeDelegate_.get() urlDelegate:nil]); InstallAndToggleBar(bar.get()); - EXPECT_GT([bar toggles], 0); + // Send a frame did change notification for the pong's view. + [[NSNotificationCenter defaultCenter] + postNotificationName:NSViewFrameDidChangeNotification + object:[bar view]]; - // Hard to force toggles -- simple whacking the frame is inadequate. - // TODO(jrg): find a way to set frame, force a toggle, and verify it. + EXPECT_GT([bar toggles], 0); } // Confirm off the side button only enabled when reasonable. |