OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2015 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 #include "chrome/browser/download/download_commands.h" | |
6 | |
7 #include <vector> | |
8 | |
9 #include "content/public/test/mock_download_item.h" | |
10 #include "testing/gmock/include/gmock/gmock.h" | |
11 #include "testing/gtest/include/gtest/gtest.h" | |
12 | |
13 using content::DownloadItem; | |
14 using ::testing::Mock; | |
15 using ::testing::NiceMock; | |
16 using ::testing::Return; | |
17 using ::testing::ReturnRefOfCopy; | |
18 using ::testing::_; | |
19 | |
20 namespace { | |
21 | |
22 // Default URL for a mock download item in DownloadCommandsTest. | |
23 const char kDefaultURL[] = "http://example.com/foo.bar"; | |
24 | |
25 class DownloadCommandsTest : public testing::Test { | |
26 public: | |
27 DownloadCommandsTest() : commands_(&item_) {} | |
28 | |
29 virtual ~DownloadCommandsTest() { | |
30 } | |
31 | |
32 protected: | |
33 // Sets up defaults for the download item. | |
34 void SetupDownloadItemDefaults() { | |
35 ON_CALL(item_, GetMimeType()).WillByDefault(Return("text/html")); | |
36 ON_CALL(item_, CanShowInFolder()).WillByDefault(Return(true)); | |
37 ON_CALL(item_, CanOpenDownload()).WillByDefault(Return(true)); | |
38 ON_CALL(item_, IsDone()).WillByDefault(Return(false)); | |
39 ON_CALL(item_, GetOpenWhenComplete()).WillByDefault(Return(false)); | |
40 ON_CALL(item_, GetState()) | |
41 .WillByDefault(Return(DownloadItem::IN_PROGRESS)); | |
42 ON_CALL(item_, IsPaused()).WillByDefault(Return(false)); | |
43 | |
44 ON_CALL(item_, GetTargetDisposition()) | |
45 .WillByDefault( | |
46 Return(DownloadItem::TARGET_DISPOSITION_OVERWRITE)); | |
47 ON_CALL(item_, GetMimeType()).WillByDefault(Return("text/html")); | |
48 ON_CALL(item_, GetURL()) | |
49 .WillByDefault(ReturnRefOfCopy(GURL(kDefaultURL))); | |
50 } | |
51 | |
52 content::MockDownloadItem& item() { | |
53 return item_; | |
54 } | |
55 | |
56 bool IsCommandEnabled(DownloadCommands::Command command) { | |
57 return commands().IsCommandEnabled(command); | |
58 } | |
59 | |
60 bool IsCommandChecked(DownloadCommands::Command command) { | |
61 return commands().IsCommandChecked(command); | |
62 } | |
63 | |
64 | |
65 DownloadCommands& commands() { | |
66 return commands_; | |
67 } | |
68 | |
69 private: | |
70 NiceMock<content::MockDownloadItem> item_; | |
71 DownloadCommands commands_; | |
72 }; | |
73 | |
74 } // namespace | |
75 | |
76 TEST_F(DownloadCommandsTest, StartAndFinish) { | |
77 SetupDownloadItemDefaults(); | |
asanka
2015/03/09 19:02:20
Add a SetUp() function to DownloadCommandsTest and
| |
78 | |
79 EXPECT_TRUE(IsCommandEnabled(DownloadCommands::SHOW_IN_FOLDER)); | |
80 EXPECT_TRUE(IsCommandEnabled(DownloadCommands::CANCEL)); | |
81 EXPECT_TRUE(IsCommandEnabled(DownloadCommands::PAUSE)); | |
82 EXPECT_FALSE(IsCommandEnabled(DownloadCommands::RESUME)); | |
83 EXPECT_TRUE(IsCommandEnabled(DownloadCommands::OPEN_WHEN_COMPLETE)); | |
84 | |
85 EXPECT_FALSE(IsCommandChecked(DownloadCommands::OPEN_WHEN_COMPLETE)); | |
86 | |
87 // Open when complete. | |
88 EXPECT_CALL(item(), OpenDownload()).Times(1); | |
89 commands().ExecuteCommand(DownloadCommands::OPEN_WHEN_COMPLETE); | |
90 ON_CALL(item(), GetOpenWhenComplete()).WillByDefault(Return(true)); | |
91 | |
92 EXPECT_TRUE(IsCommandEnabled(DownloadCommands::OPEN_WHEN_COMPLETE)); | |
93 EXPECT_TRUE(IsCommandChecked(DownloadCommands::OPEN_WHEN_COMPLETE)); | |
94 | |
95 // Finish a download. | |
96 ON_CALL(item(), IsDone()).WillByDefault(Return(true)); | |
97 | |
98 EXPECT_FALSE(IsCommandEnabled(DownloadCommands::CANCEL)); | |
99 EXPECT_FALSE(IsCommandEnabled(DownloadCommands::PAUSE)); | |
100 EXPECT_FALSE(IsCommandEnabled(DownloadCommands::RESUME)); | |
101 } | |
102 | |
103 TEST_F(DownloadCommandsTest, Cancel) { | |
104 SetupDownloadItemDefaults(); | |
105 | |
106 EXPECT_TRUE(IsCommandEnabled(DownloadCommands::CANCEL)); | |
107 | |
108 // Cancel. | |
109 EXPECT_CALL(item(), Cancel(true)).Times(1); | |
110 commands().ExecuteCommand(DownloadCommands::CANCEL); | |
111 ON_CALL(item(), IsDone()).WillByDefault(Return(true)); | |
112 | |
113 EXPECT_FALSE(IsCommandEnabled(DownloadCommands::CANCEL)); | |
114 EXPECT_FALSE(IsCommandEnabled(DownloadCommands::RESUME)); | |
115 EXPECT_FALSE(IsCommandEnabled(DownloadCommands::PAUSE)); | |
116 } | |
117 | |
118 TEST_F(DownloadCommandsTest, PauseAndResume) { | |
119 SetupDownloadItemDefaults(); | |
120 | |
121 EXPECT_TRUE(IsCommandEnabled(DownloadCommands::PAUSE)); | |
122 EXPECT_FALSE(IsCommandEnabled(DownloadCommands::RESUME)); | |
123 | |
124 // Pause. | |
125 EXPECT_CALL(item(), Pause()).Times(1); | |
126 commands().ExecuteCommand(DownloadCommands::PAUSE); | |
127 ON_CALL(item(), IsPaused()).WillByDefault(Return(true)); | |
128 ON_CALL(item(), CanResume()).WillByDefault(Return(true)); | |
129 | |
130 EXPECT_FALSE(IsCommandEnabled(DownloadCommands::PAUSE)); | |
131 EXPECT_TRUE(IsCommandEnabled(DownloadCommands::RESUME)); | |
132 | |
133 // Resume. | |
134 EXPECT_CALL(item(), Resume()).Times(1); | |
135 commands().ExecuteCommand(DownloadCommands::RESUME); | |
136 ON_CALL(item(), IsPaused()).WillByDefault(Return(false)); | |
137 | |
138 EXPECT_TRUE(IsCommandEnabled(DownloadCommands::PAUSE)); | |
139 EXPECT_FALSE(IsCommandEnabled(DownloadCommands::RESUME)); | |
140 } | |
141 | |
142 TEST_F(DownloadCommandsTest, UnableToResume) { | |
143 SetupDownloadItemDefaults(); | |
144 | |
145 EXPECT_TRUE(IsCommandEnabled(DownloadCommands::PAUSE)); | |
146 EXPECT_FALSE(IsCommandEnabled(DownloadCommands::RESUME)); | |
147 | |
148 // Pause. | |
149 EXPECT_CALL(item(), Pause()).Times(1); | |
150 commands().ExecuteCommand(DownloadCommands::PAUSE); | |
151 ON_CALL(item(), IsPaused()).WillByDefault(Return(true)); | |
152 ON_CALL(item(), CanResume()).WillByDefault(Return(false)); | |
153 | |
154 EXPECT_FALSE(IsCommandEnabled(DownloadCommands::PAUSE)); | |
155 EXPECT_FALSE(IsCommandEnabled(DownloadCommands::RESUME)); | |
156 } | |
OLD | NEW |