app_list_window_controller_unittest.mm revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#import "base/memory/scoped_nsobject.h" 6#import "testing/gtest_mac.h" 7#include "ui/app_list/app_list_view_delegate.h" 8#import "ui/app_list/cocoa/app_list_view_controller.h" 9#import "ui/app_list/cocoa/app_list_window_controller.h" 10#include "ui/app_list/test/app_list_test_view_delegate.h" 11#import "ui/base/test/ui_cocoa_test_helper.h" 12 13namespace { 14 15class AppListWindowControllerTest : public ui::CocoaTest { 16 public: 17 AppListWindowControllerTest(); 18 19 protected: 20 virtual void TearDown() OVERRIDE; 21 22 scoped_nsobject<AppListWindowController> controller_; 23 24 app_list::test::AppListTestViewDelegate* delegate() { 25 return static_cast<app_list::test::AppListTestViewDelegate*>( 26 [[controller_ appListViewController] delegate]); 27 } 28 29 private: 30 DISALLOW_COPY_AND_ASSIGN(AppListWindowControllerTest); 31}; 32 33AppListWindowControllerTest::AppListWindowControllerTest() { 34 Init(); 35 scoped_ptr<app_list::AppListViewDelegate> delegate( 36 new app_list::test::AppListTestViewDelegate); 37 controller_.reset([[AppListWindowController alloc] init]); 38 [[controller_ appListViewController] setDelegate:delegate.Pass()]; 39} 40 41void AppListWindowControllerTest::TearDown() { 42 EXPECT_TRUE(controller_.get()); 43 [[controller_ window] close]; 44 controller_.reset(); 45 ui::CocoaTest::TearDown(); 46} 47 48} // namespace 49 50// Test showing, hiding and closing the app list window. 51TEST_F(AppListWindowControllerTest, ShowHideCloseRelease) { 52 EXPECT_TRUE([controller_ window]); 53 [[controller_ window] makeKeyAndOrderFront:nil]; 54 EXPECT_TRUE([[controller_ window] isVisible]); 55 EXPECT_TRUE([[[controller_ window] contentView] superview]); 56 [[controller_ window] close]; // Hide. 57 EXPECT_FALSE([[controller_ window] isVisible]); 58 [[controller_ window] makeKeyAndOrderFront:nil]; 59} 60 61// Test that the key bound to cancel (usually Escape) asks the controller to 62// dismiss the window. 63TEST_F(AppListWindowControllerTest, DismissWithEscape) { 64 [[controller_ window] makeKeyAndOrderFront:nil]; 65 EXPECT_EQ(0, delegate()->dismiss_count()); 66 [[controller_ window] cancelOperation:controller_]; 67 EXPECT_EQ(1, delegate()->dismiss_count()); 68} 69