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 #include "base/mac/scoped_nsobject.h"
6 #include "chrome/browser/download/download_item_model.h"
7 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
8 #import "chrome/browser/ui/cocoa/download/download_item_cell.h"
9 #include "content/public/test/mock_download_item.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11 #include "testing/platform_test.h"
13 using ::testing::Return;
18 using ::testing::ReturnRefOfCopy;
21 class DownloadItemCellTest : public CocoaTest {
23 DownloadItemCellTest() : CocoaTest() {
26 virtual void SetUp() {
28 button_.reset([[NSButton alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)]);
29 [[test_window() contentView] addSubview:button_];
30 cell_.reset([[DownloadItemCell alloc] initTextCell:@""]);
31 [button_ setCell:cell_];
35 base::scoped_nsobject<DownloadItemCell> cell_;
36 base::scoped_nsobject<NSButton> button_;
39 DISALLOW_COPY_AND_ASSIGN(DownloadItemCellTest);
42 TEST_F(DownloadItemCellTest, ToggleStatusText) {
43 EXPECT_FALSE([cell_ isStatusTextVisible]);
44 EXPECT_FLOAT_EQ(0.0, [cell_ statusTextAlpha]);
46 [cell_ showSecondaryTitle];
47 [cell_ skipVisibilityAnimation];
48 EXPECT_TRUE([cell_ isStatusTextVisible]);
49 EXPECT_FLOAT_EQ(1.0, [cell_ statusTextAlpha]);
51 [cell_ hideSecondaryTitle];
52 [cell_ skipVisibilityAnimation];
53 EXPECT_FALSE([cell_ isStatusTextVisible]);
54 EXPECT_FLOAT_EQ(0.0, [cell_ statusTextAlpha]);
57 TEST_F(DownloadItemCellTest, IndeterminateProgress) {
58 testing::NiceMock<content::MockDownloadItem> item;
59 ON_CALL(item, IsPaused()).WillByDefault(Return(false));
60 ON_CALL(item, PercentComplete()).WillByDefault(Return(-1));
61 ON_CALL(item, GetState())
62 .WillByDefault(Return(content::DownloadItem::IN_PROGRESS));
63 ON_CALL(item, GetFileNameToReportUser())
64 .WillByDefault(Return(base::FilePath("foo.bar")));
65 DownloadItemModel model(&item);
67 // Set indeterminate state.
68 EXPECT_FALSE([cell_ indeterminateProgressTimer]);
69 [cell_ setStateFromDownload:&model];
70 EXPECT_TRUE([cell_ indeterminateProgressTimer]);
74 [cell_ drawWithFrame:[button_ bounds]
76 [button_ unlockFocus];
78 // Unset indeterminate state.
79 ON_CALL(item, PercentComplete()).WillByDefault(Return(0));
80 [cell_ setStateFromDownload:&model];
81 EXPECT_FALSE([cell_ indeterminateProgressTimer]);