| Index: chrome/browser/cocoa/infobar_container_controller_unittest.mm
|
| ===================================================================
|
| --- chrome/browser/cocoa/infobar_container_controller_unittest.mm (revision 0)
|
| +++ chrome/browser/cocoa/infobar_container_controller_unittest.mm (revision 0)
|
| @@ -0,0 +1,123 @@
|
| +// Copyright (c) 2009 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>
|
| +
|
| +#include "base/scoped_nsautorelease_pool.h"
|
| +#include "base/scoped_nsobject.h"
|
| +#include "chrome/browser/cocoa/browser_test_helper.h"
|
| +#import "chrome/browser/cocoa/browser_window_controller.h"
|
| +#import "chrome/browser/cocoa/cocoa_test_helper.h"
|
| +#import "chrome/browser/cocoa/infobar_container_controller.h"
|
| +#include "chrome/browser/cocoa/infobar_test_helper.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +// Objective-C classes must be defined outside the namespace.
|
| +@interface BrowserWindowControllerPong : BrowserWindowController {
|
| + BOOL pong_;
|
| +}
|
| +@property(readonly) BOOL pong;
|
| +@end
|
| +
|
| +@implementation BrowserWindowControllerPong
|
| +@synthesize pong = pong_;
|
| +
|
| +- (id)initWithBrowser:(Browser*)browser {
|
| + if ((self = [super initWithBrowser:browser takeOwnership:NO])) {
|
| + pong_ = NO;
|
| + }
|
| + return self;
|
| +}
|
| +
|
| +- (void)infoBarResized:(float)newHeight {
|
| + pong_ = TRUE;
|
| +}
|
| +@end
|
| +
|
| +namespace {
|
| +
|
| +class InfoBarContainerControllerTest : public testing::Test {
|
| + virtual void SetUp() {
|
| + browserController_.reset([[BrowserWindowControllerPong alloc]
|
| + initWithBrowser:browser_helper_.browser()]);
|
| + TabStripModel* model = browser_helper_.browser()->tabstrip_model();
|
| + controller_.reset([[InfoBarContainerController alloc]
|
| + initWithTabStripModel:model
|
| + browserWindowController:browserController_]);
|
| + }
|
| +
|
| + public:
|
| + // Order is very important here. We want the controller deleted
|
| + // before the pool, and want the pool deleted before
|
| + // BrowserTestHelper.
|
| + CocoaTestHelper cocoa_helper_;
|
| + BrowserTestHelper browser_helper_;
|
| + base::ScopedNSAutoreleasePool pool_;
|
| + scoped_nsobject<BrowserWindowControllerPong> browserController_;
|
| + scoped_nsobject<InfoBarContainerController> controller_;
|
| +};
|
| +
|
| +TEST_F(InfoBarContainerControllerTest, Show) {
|
| + // Make sure the container's view is non-nil and draws without crashing.
|
| + NSView* view = [controller_ view];
|
| + EXPECT_TRUE(view != nil);
|
| +
|
| + [cocoa_helper_.contentView() addSubview:view];
|
| +}
|
| +
|
| +TEST_F(InfoBarContainerControllerTest, BWCPong) {
|
| + // Call positionInfoBarsAndResize and check that the BWC got a resize message.
|
| + [controller_ positionInfoBarsAndRedraw];
|
| + EXPECT_TRUE([browserController_ pong]);
|
| +}
|
| +
|
| +TEST_F(InfoBarContainerControllerTest, AddAndRemoveInfoBars) {
|
| + NSView* view = [controller_ view];
|
| + [cocoa_helper_.contentView() addSubview:view];
|
| +
|
| + // Add three infobars, one of each type, and then remove them.
|
| + // After each step check to make sure we have the correct number of
|
| + // infobar subviews.
|
| + MockAlertInfoBarDelegate alertDelegate;
|
| + MockLinkInfoBarDelegate linkDelegate;
|
| + MockConfirmInfoBarDelegate confirmDelegate;
|
| +
|
| + [controller_ addInfoBar:&alertDelegate];
|
| + EXPECT_EQ(1U, [[view subviews] count]);
|
| +
|
| + [controller_ addInfoBar:&linkDelegate];
|
| + EXPECT_EQ(2U, [[view subviews] count]);
|
| +
|
| + [controller_ addInfoBar:&confirmDelegate];
|
| + EXPECT_EQ(3U, [[view subviews] count]);
|
| +
|
| + // Just to mix things up, remove them in a different order.
|
| + [controller_ removeInfoBarsForDelegate:&linkDelegate];
|
| + EXPECT_EQ(2U, [[view subviews] count]);
|
| +
|
| + [controller_ removeInfoBarsForDelegate:&confirmDelegate];
|
| + EXPECT_EQ(1U, [[view subviews] count]);
|
| +
|
| + [controller_ removeInfoBarsForDelegate:&alertDelegate];
|
| + EXPECT_EQ(0U, [[view subviews] count]);
|
| +}
|
| +
|
| +TEST_F(InfoBarContainerControllerTest, RemoveAllInfoBars) {
|
| + NSView* view = [controller_ view];
|
| + [cocoa_helper_.contentView() addSubview:view];
|
| +
|
| + // Add three infobars and then remove them all.
|
| + MockAlertInfoBarDelegate alertDelegate;
|
| + MockLinkInfoBarDelegate linkDelegate;
|
| + MockConfirmInfoBarDelegate confirmDelegate;
|
| +
|
| + [controller_ addInfoBar:&alertDelegate];
|
| + [controller_ addInfoBar:&linkDelegate];
|
| + [controller_ addInfoBar:&confirmDelegate];
|
| + EXPECT_EQ(3U, [[view subviews] count]);
|
| +
|
| + [controller_ removeAllInfoBars];
|
| + EXPECT_EQ(0U, [[view subviews] count]);
|
| +}
|
| +} // namespace
|
|
|
| Property changes on: chrome/browser/cocoa/infobar_container_controller_unittest.mm
|
| ___________________________________________________________________
|
| Name: svn:eol-style
|
| + LF
|
|
|
|
|