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