| Index: chrome/browser/ui/cocoa/toolbar_controller_unittest.mm
|
| ===================================================================
|
| --- chrome/browser/ui/cocoa/toolbar_controller_unittest.mm (revision 71837)
|
| +++ chrome/browser/ui/cocoa/toolbar_controller_unittest.mm (working copy)
|
| @@ -1,237 +0,0 @@
|
| -// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#import <Cocoa/Cocoa.h>
|
| -
|
| -#import "base/scoped_nsobject.h"
|
| -#include "chrome/app/chrome_command_ids.h"
|
| -#include "chrome/browser/ui/cocoa/browser_test_helper.h"
|
| -#import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
|
| -#import "chrome/browser/ui/cocoa/gradient_button_cell.h"
|
| -#import "chrome/browser/ui/cocoa/toolbar_controller.h"
|
| -#import "chrome/browser/ui/cocoa/view_resizer_pong.h"
|
| -#include "chrome/browser/prefs/pref_service.h"
|
| -#include "chrome/common/pref_names.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -#include "testing/platform_test.h"
|
| -
|
| -// An NSView that fakes out hitTest:.
|
| -@interface HitView : NSView {
|
| - id hitTestReturn_;
|
| -}
|
| -@end
|
| -
|
| -@implementation HitView
|
| -
|
| -- (void)setHitTestReturn:(id)rtn {
|
| - hitTestReturn_ = rtn;
|
| -}
|
| -
|
| -- (NSView *)hitTest:(NSPoint)aPoint {
|
| - return hitTestReturn_;
|
| -}
|
| -
|
| -@end
|
| -
|
| -
|
| -namespace {
|
| -
|
| -class ToolbarControllerTest : public CocoaTest {
|
| - public:
|
| -
|
| - // Indexes that match the ordering returned by the private ToolbarController
|
| - // |-toolbarViews| method.
|
| - enum {
|
| - kBackIndex, kForwardIndex, kReloadIndex, kHomeIndex,
|
| - kWrenchIndex, kLocationIndex, kBrowserActionContainerViewIndex
|
| - };
|
| -
|
| - ToolbarControllerTest() {
|
| - Browser* browser = helper_.browser();
|
| - CommandUpdater* updater = browser->command_updater();
|
| - // The default state for the commands is true, set a couple to false to
|
| - // ensure they get picked up correct on initialization
|
| - updater->UpdateCommandEnabled(IDC_BACK, false);
|
| - updater->UpdateCommandEnabled(IDC_FORWARD, false);
|
| - resizeDelegate_.reset([[ViewResizerPong alloc] init]);
|
| - bar_.reset(
|
| - [[ToolbarController alloc] initWithModel:browser->toolbar_model()
|
| - commands:browser->command_updater()
|
| - profile:helper_.profile()
|
| - browser:browser
|
| - resizeDelegate:resizeDelegate_.get()]);
|
| - EXPECT_TRUE([bar_ view]);
|
| - NSView* parent = [test_window() contentView];
|
| - [parent addSubview:[bar_ view]];
|
| - }
|
| -
|
| - // Make sure the enabled state of the view is the same as the corresponding
|
| - // command in the updater. The views are in the declaration order of outlets.
|
| - void CompareState(CommandUpdater* updater, NSArray* views) {
|
| - EXPECT_EQ(updater->IsCommandEnabled(IDC_BACK),
|
| - [[views objectAtIndex:kBackIndex] isEnabled] ? true : false);
|
| - EXPECT_EQ(updater->IsCommandEnabled(IDC_FORWARD),
|
| - [[views objectAtIndex:kForwardIndex] isEnabled] ? true : false);
|
| - EXPECT_EQ(updater->IsCommandEnabled(IDC_RELOAD),
|
| - [[views objectAtIndex:kReloadIndex] isEnabled] ? true : false);
|
| - EXPECT_EQ(updater->IsCommandEnabled(IDC_HOME),
|
| - [[views objectAtIndex:kHomeIndex] isEnabled] ? true : false);
|
| - }
|
| -
|
| - BrowserTestHelper helper_;
|
| - scoped_nsobject<ViewResizerPong> resizeDelegate_;
|
| - scoped_nsobject<ToolbarController> bar_;
|
| -};
|
| -
|
| -TEST_VIEW(ToolbarControllerTest, [bar_ view])
|
| -
|
| -// Test the initial state that everything is sync'd up
|
| -TEST_F(ToolbarControllerTest, InitialState) {
|
| - CommandUpdater* updater = helper_.browser()->command_updater();
|
| - CompareState(updater, [bar_ toolbarViews]);
|
| -}
|
| -
|
| -// Make sure a "titlebar only" toolbar with location bar works.
|
| -TEST_F(ToolbarControllerTest, TitlebarOnly) {
|
| - NSView* view = [bar_ view];
|
| -
|
| - [bar_ setHasToolbar:NO hasLocationBar:YES];
|
| - EXPECT_NE(view, [bar_ view]);
|
| -
|
| - // Simulate a popup going fullscreen and back by performing the reparenting
|
| - // that happens during fullscreen transitions
|
| - NSView* superview = [view superview];
|
| - [view removeFromSuperview];
|
| - [superview addSubview:view];
|
| -
|
| - [bar_ setHasToolbar:YES hasLocationBar:YES];
|
| - EXPECT_EQ(view, [bar_ view]);
|
| -
|
| - // Leave it off to make sure that's fine
|
| - [bar_ setHasToolbar:NO hasLocationBar:YES];
|
| -}
|
| -
|
| -// Make sure it works in the completely undecorated case.
|
| -TEST_F(ToolbarControllerTest, NoLocationBar) {
|
| - NSView* view = [bar_ view];
|
| -
|
| - [bar_ setHasToolbar:NO hasLocationBar:NO];
|
| - EXPECT_NE(view, [bar_ view]);
|
| - EXPECT_TRUE([[bar_ view] isHidden]);
|
| -
|
| - // Simulate a popup going fullscreen and back by performing the reparenting
|
| - // that happens during fullscreen transitions
|
| - NSView* superview = [view superview];
|
| - [view removeFromSuperview];
|
| - [superview addSubview:view];
|
| -}
|
| -
|
| -// Make some changes to the enabled state of a few of the buttons and ensure
|
| -// that we're still in sync.
|
| -TEST_F(ToolbarControllerTest, UpdateEnabledState) {
|
| - CommandUpdater* updater = helper_.browser()->command_updater();
|
| - EXPECT_FALSE(updater->IsCommandEnabled(IDC_BACK));
|
| - EXPECT_FALSE(updater->IsCommandEnabled(IDC_FORWARD));
|
| - updater->UpdateCommandEnabled(IDC_BACK, true);
|
| - updater->UpdateCommandEnabled(IDC_FORWARD, true);
|
| - CompareState(updater, [bar_ toolbarViews]);
|
| -}
|
| -
|
| -// Focus the location bar and make sure that it's the first responder.
|
| -TEST_F(ToolbarControllerTest, FocusLocation) {
|
| - NSWindow* window = test_window();
|
| - [window makeFirstResponder:[window contentView]];
|
| - EXPECT_EQ([window firstResponder], [window contentView]);
|
| - [bar_ focusLocationBar:YES];
|
| - EXPECT_NE([window firstResponder], [window contentView]);
|
| - NSView* locationBar = [[bar_ toolbarViews] objectAtIndex:kLocationIndex];
|
| - EXPECT_EQ([window firstResponder], [(id)locationBar currentEditor]);
|
| -}
|
| -
|
| -TEST_F(ToolbarControllerTest, LoadingState) {
|
| - // In its initial state, the reload button has a tag of
|
| - // IDC_RELOAD. When loading, it should be IDC_STOP.
|
| - NSButton* reload = [[bar_ toolbarViews] objectAtIndex:kReloadIndex];
|
| - EXPECT_EQ([reload tag], IDC_RELOAD);
|
| - [bar_ setIsLoading:YES force:YES];
|
| - EXPECT_EQ([reload tag], IDC_STOP);
|
| - [bar_ setIsLoading:NO force:YES];
|
| - EXPECT_EQ([reload tag], IDC_RELOAD);
|
| -}
|
| -
|
| -// Check that toggling the state of the home button changes the visible
|
| -// state of the home button and moves the other items accordingly.
|
| -TEST_F(ToolbarControllerTest, ToggleHome) {
|
| - PrefService* prefs = helper_.profile()->GetPrefs();
|
| - bool showHome = prefs->GetBoolean(prefs::kShowHomeButton);
|
| - NSView* homeButton = [[bar_ toolbarViews] objectAtIndex:kHomeIndex];
|
| - EXPECT_EQ(showHome, ![homeButton isHidden]);
|
| -
|
| - NSView* locationBar = [[bar_ toolbarViews] objectAtIndex:kLocationIndex];
|
| - NSRect originalLocationBarFrame = [locationBar frame];
|
| -
|
| - // Toggle the pref and make sure the button changed state and the other
|
| - // views moved.
|
| - prefs->SetBoolean(prefs::kShowHomeButton, !showHome);
|
| - EXPECT_EQ(showHome, [homeButton isHidden]);
|
| - EXPECT_NE(NSMinX(originalLocationBarFrame), NSMinX([locationBar frame]));
|
| - EXPECT_NE(NSWidth(originalLocationBarFrame), NSWidth([locationBar frame]));
|
| -}
|
| -
|
| -// Ensure that we don't toggle the buttons when we have a strip marked as not
|
| -// having the full toolbar. Also ensure that the location bar doesn't change
|
| -// size.
|
| -TEST_F(ToolbarControllerTest, DontToggleWhenNoToolbar) {
|
| - [bar_ setHasToolbar:NO hasLocationBar:YES];
|
| - NSView* homeButton = [[bar_ toolbarViews] objectAtIndex:kHomeIndex];
|
| - NSView* locationBar = [[bar_ toolbarViews] objectAtIndex:kLocationIndex];
|
| - NSRect locationBarFrame = [locationBar frame];
|
| - EXPECT_EQ([homeButton isHidden], YES);
|
| - [bar_ showOptionalHomeButton];
|
| - EXPECT_EQ([homeButton isHidden], YES);
|
| - NSRect newLocationBarFrame = [locationBar frame];
|
| - EXPECT_TRUE(NSEqualRects(locationBarFrame, newLocationBarFrame));
|
| - newLocationBarFrame = [locationBar frame];
|
| - EXPECT_TRUE(NSEqualRects(locationBarFrame, newLocationBarFrame));
|
| -}
|
| -
|
| -TEST_F(ToolbarControllerTest, BookmarkBubblePoint) {
|
| - const NSPoint starPoint = [bar_ bookmarkBubblePoint];
|
| - const NSRect barFrame =
|
| - [[bar_ view] convertRect:[[bar_ view] bounds] toView:nil];
|
| -
|
| - // Make sure the star is completely inside the location bar.
|
| - EXPECT_TRUE(NSPointInRect(starPoint, barFrame));
|
| -}
|
| -
|
| -TEST_F(ToolbarControllerTest, HoverButtonForEvent) {
|
| - scoped_nsobject<HitView> view([[HitView alloc]
|
| - initWithFrame:NSMakeRect(0,0,100,100)]);
|
| - [bar_ setView:view];
|
| - NSEvent* event = [NSEvent mouseEventWithType:NSMouseMoved
|
| - location:NSMakePoint(10,10)
|
| - modifierFlags:0
|
| - timestamp:0
|
| - windowNumber:0
|
| - context:nil
|
| - eventNumber:0
|
| - clickCount:0
|
| - pressure:0.0];
|
| -
|
| - // NOT a match.
|
| - [view setHitTestReturn:bar_.get()];
|
| - EXPECT_FALSE([bar_ hoverButtonForEvent:event]);
|
| -
|
| - // Not yet...
|
| - scoped_nsobject<NSButton> button([[NSButton alloc] init]);
|
| - [view setHitTestReturn:button];
|
| - EXPECT_FALSE([bar_ hoverButtonForEvent:event]);
|
| -
|
| - // Now!
|
| - scoped_nsobject<GradientButtonCell> cell([[GradientButtonCell alloc] init]);
|
| - [button setCell:cell.get()];
|
| - EXPECT_TRUE([bar_ hoverButtonForEvent:nil]);
|
| -}
|
| -
|
| -} // namespace
|
|
|