1 // Copyright (c) 2011 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.
5 #import "base/mac/scoped_nsobject.h"
6 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h"
7 #include "chrome/browser/ui/cocoa/download/download_shelf_mac.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9 #include "testing/platform_test.h"
11 // A fake implementation of DownloadShelfController. It implements only the
12 // methods that DownloadShelfMac call during the tests in this file. We get this
13 // class into the DownloadShelfMac constructor by some questionable casting --
14 // Objective C is a dynamic language, so we pretend that's ok.
16 @interface FakeDownloadShelfController : NSObject {
18 int callCountIsVisible;
21 int callCountCloseWithUserAction;
25 - (void)showDownloadShelf:(BOOL)enable
26 isUserAction:(BOOL)isUserAction;
29 @implementation FakeDownloadShelfController
36 - (void)showDownloadShelf:(BOOL)enable
37 isUserAction:(BOOL)isUserAction {
42 if (isUserAction && !enable)
43 ++callCountCloseWithUserAction;
51 class DownloadShelfMacTest : public CocoaProfileTest {
53 virtual void SetUp() {
54 CocoaProfileTest::SetUp();
55 shelf_controller_.reset([[FakeDownloadShelfController alloc] init]);
59 base::scoped_nsobject<FakeDownloadShelfController> shelf_controller_;
62 TEST_F(DownloadShelfMacTest, CreationDoesNotCallShow) {
63 // Also make sure the DownloadShelfMacTest constructor doesn't crash.
64 DownloadShelfMac shelf(browser(),
65 (DownloadShelfController*)shelf_controller_.get());
66 EXPECT_EQ(0, shelf_controller_.get()->callCountShow);
69 TEST_F(DownloadShelfMacTest, ForwardsShow) {
70 DownloadShelfMac shelf(browser(),
71 (DownloadShelfController*)shelf_controller_.get());
72 EXPECT_EQ(0, shelf_controller_.get()->callCountShow);
74 EXPECT_EQ(1, shelf_controller_.get()->callCountShow);
77 TEST_F(DownloadShelfMacTest, ForwardsHide) {
78 DownloadShelfMac shelf(browser(),
79 (DownloadShelfController*)shelf_controller_.get());
80 EXPECT_EQ(0, shelf_controller_.get()->callCountHide);
81 shelf.Close(DownloadShelf::AUTOMATIC);
82 EXPECT_EQ(1, shelf_controller_.get()->callCountHide);
83 EXPECT_EQ(0, shelf_controller_.get()->callCountCloseWithUserAction);
86 TEST_F(DownloadShelfMacTest, ForwardsHideWithUserAction) {
87 DownloadShelfMac shelf(browser(),
88 (DownloadShelfController*)shelf_controller_.get());
89 EXPECT_EQ(0, shelf_controller_.get()->callCountHide);
90 shelf.Close(DownloadShelf::USER_ACTION);
91 EXPECT_EQ(1, shelf_controller_.get()->callCountHide);
92 EXPECT_EQ(1, shelf_controller_.get()->callCountCloseWithUserAction);
95 TEST_F(DownloadShelfMacTest, ForwardsIsShowing) {
96 DownloadShelfMac shelf(browser(),
97 (DownloadShelfController*)shelf_controller_.get());
98 EXPECT_EQ(0, shelf_controller_.get()->callCountIsVisible);
100 EXPECT_EQ(1, shelf_controller_.get()->callCountIsVisible);