Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(185)

Side by Side Diff: chrome/browser/download/download_item_model_unittest.cc

Issue 1544603003: [Downloads] Do not store error responses during resumption. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@unify-downloader-core
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/download/download_item_model.h" 5 #include "chrome/browser/download/download_item_model.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <vector> 10 #include <vector>
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 TEST_F(DownloadItemModelTest, InterruptedStatus) { 117 TEST_F(DownloadItemModelTest, InterruptedStatus) {
118 // Test that we have the correct interrupt status message for downloads that 118 // Test that we have the correct interrupt status message for downloads that
119 // are in the INTERRUPTED state. 119 // are in the INTERRUPTED state.
120 const struct TestCase { 120 const struct TestCase {
121 // The reason. 121 // The reason.
122 content::DownloadInterruptReason reason; 122 content::DownloadInterruptReason reason;
123 123
124 // Expected status string. This will include the progress as well. 124 // Expected status string. This will include the progress as well.
125 const char* expected_status; 125 const char* expected_status;
126 } kTestCases[] = { 126 } kTestCases[] = {
127 { content::DOWNLOAD_INTERRUPT_REASON_NONE, 127 {content::DOWNLOAD_INTERRUPT_REASON_NONE, "1/2 B"},
128 "1/2 B" }, 128 {content::DOWNLOAD_INTERRUPT_REASON_FILE_FAILED,
129 { content::DOWNLOAD_INTERRUPT_REASON_FILE_FAILED, 129 "Failed - Download error"},
130 "Failed - Download error" }, 130 {content::DOWNLOAD_INTERRUPT_REASON_FILE_ACCESS_DENIED,
131 { content::DOWNLOAD_INTERRUPT_REASON_FILE_ACCESS_DENIED, 131 "Failed - Insufficient permissions"},
132 "Failed - Insufficient permissions" }, 132 {content::DOWNLOAD_INTERRUPT_REASON_FILE_NO_SPACE, "Failed - Disk full"},
133 { content::DOWNLOAD_INTERRUPT_REASON_FILE_NO_SPACE, 133 {content::DOWNLOAD_INTERRUPT_REASON_FILE_NAME_TOO_LONG,
134 "Failed - Disk full" }, 134 "Failed - Path too long"},
135 { content::DOWNLOAD_INTERRUPT_REASON_FILE_NAME_TOO_LONG, 135 {content::DOWNLOAD_INTERRUPT_REASON_FILE_TOO_LARGE,
136 "Failed - Path too long" }, 136 "Failed - File too large"},
137 { content::DOWNLOAD_INTERRUPT_REASON_FILE_TOO_LARGE, 137 {content::DOWNLOAD_INTERRUPT_REASON_FILE_VIRUS_INFECTED,
138 "Failed - File too large" }, 138 "Failed - Virus detected"},
139 { content::DOWNLOAD_INTERRUPT_REASON_FILE_VIRUS_INFECTED, 139 {content::DOWNLOAD_INTERRUPT_REASON_FILE_BLOCKED, "Failed - Blocked"},
140 "Failed - Virus detected" }, 140 {content::DOWNLOAD_INTERRUPT_REASON_FILE_SECURITY_CHECK_FAILED,
141 { content::DOWNLOAD_INTERRUPT_REASON_FILE_BLOCKED, 141 "Failed - Virus scan failed"},
142 "Failed - Blocked" }, 142 {content::DOWNLOAD_INTERRUPT_REASON_FILE_TOO_SHORT,
143 { content::DOWNLOAD_INTERRUPT_REASON_FILE_SECURITY_CHECK_FAILED, 143 "Failed - File truncated"},
144 "Failed - Virus scan failed" }, 144 {content::DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR,
145 { content::DOWNLOAD_INTERRUPT_REASON_FILE_TOO_SHORT, 145 "Failed - System busy"},
146 "Failed - File truncated" }, 146 {content::DOWNLOAD_INTERRUPT_REASON_NETWORK_FAILED,
147 { content::DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR, 147 "Failed - Network error"},
148 "Failed - System busy" }, 148 {content::DOWNLOAD_INTERRUPT_REASON_NETWORK_TIMEOUT,
149 { content::DOWNLOAD_INTERRUPT_REASON_NETWORK_FAILED, 149 "Failed - Network timeout"},
150 "Failed - Network error" }, 150 {content::DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED,
151 { content::DOWNLOAD_INTERRUPT_REASON_NETWORK_TIMEOUT, 151 "Failed - Network disconnected"},
152 "Failed - Network timeout" }, 152 {content::DOWNLOAD_INTERRUPT_REASON_NETWORK_SERVER_DOWN,
153 { content::DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED, 153 "Failed - Server unavailable"},
154 "Failed - Network disconnected" }, 154 {content::DOWNLOAD_INTERRUPT_REASON_NETWORK_INVALID_REQUEST,
155 { content::DOWNLOAD_INTERRUPT_REASON_NETWORK_SERVER_DOWN, 155 "Failed - Network error"},
156 "Failed - Server unavailable" }, 156 {content::DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED,
157 { content::DOWNLOAD_INTERRUPT_REASON_NETWORK_INVALID_REQUEST, 157 "Failed - Server problem"},
158 "Failed - Network error" }, 158 {content::DOWNLOAD_INTERRUPT_REASON_SERVER_NO_RANGE,
159 { content::DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED, 159 "Failed - Download error"},
160 "Failed - Server problem" }, 160 {content::DOWNLOAD_INTERRUPT_REASON_SERVER_BAD_CONTENT,
161 { content::DOWNLOAD_INTERRUPT_REASON_SERVER_NO_RANGE, 161 "Failed - No file"},
162 "Failed - Download error" }, 162 {content::DOWNLOAD_INTERRUPT_REASON_SERVER_UNAUTHORIZED,
163 { content::DOWNLOAD_INTERRUPT_REASON_SERVER_BAD_CONTENT, 163 "Failed - Needs authorization"},
164 "Failed - No file" }, 164 {content::DOWNLOAD_INTERRUPT_REASON_SERVER_CERT_PROBLEM,
165 { content::DOWNLOAD_INTERRUPT_REASON_SERVER_UNAUTHORIZED, 165 "Failed - Bad certificate"},
166 "Failed - Needs authorization" }, 166 {content::DOWNLOAD_INTERRUPT_REASON_SERVER_FORBIDDEN,
167 { content::DOWNLOAD_INTERRUPT_REASON_SERVER_CERT_PROBLEM, 167 "Failed - Forbidden"},
168 "Failed - Bad certificate" }, 168 {content::DOWNLOAD_INTERRUPT_REASON_SERVER_UNREACHABLE,
169 { content::DOWNLOAD_INTERRUPT_REASON_SERVER_FORBIDDEN, 169 "Failed - Server unreachable"},
170 "Failed - Forbidden" }, 170 {content::DOWNLOAD_INTERRUPT_REASON_USER_CANCELED, "Canceled"},
171 { content::DOWNLOAD_INTERRUPT_REASON_USER_CANCELED, 171 {content::DOWNLOAD_INTERRUPT_REASON_USER_SHUTDOWN, "Failed - Shutdown"},
172 "Canceled" }, 172 {content::DOWNLOAD_INTERRUPT_REASON_CRASH, "Failed - Crash"},
173 { content::DOWNLOAD_INTERRUPT_REASON_USER_SHUTDOWN,
174 "Failed - Shutdown" },
175 { content::DOWNLOAD_INTERRUPT_REASON_CRASH,
176 "Failed - Crash" },
177 }; 173 };
178 static_assert(kInterruptReasonCount == arraysize(kTestCases), 174 static_assert(kInterruptReasonCount == arraysize(kTestCases),
179 "interrupt reason mismatch"); 175 "interrupt reason mismatch");
180 176
181 SetupDownloadItemDefaults(); 177 SetupDownloadItemDefaults();
182 for (unsigned i = 0; i < arraysize(kTestCases); ++i) { 178 for (unsigned i = 0; i < arraysize(kTestCases); ++i) {
183 const TestCase& test_case = kTestCases[i]; 179 const TestCase& test_case = kTestCases[i];
184 SetupInterruptedDownloadItem(test_case.reason); 180 SetupInterruptedDownloadItem(test_case.reason);
185 EXPECT_STREQ(test_case.expected_status, 181 EXPECT_STREQ(test_case.expected_status,
186 base::UTF16ToUTF8(model().GetStatusText()).c_str()); 182 base::UTF16ToUTF8(model().GetStatusText()).c_str());
187 } 183 }
188 } 184 }
189 185
190 // Note: This test is currently skipped on Android. See http://crbug.com/139398 186 // Note: This test is currently skipped on Android. See http://crbug.com/139398
191 TEST_F(DownloadItemModelTest, InterruptTooltip) { 187 TEST_F(DownloadItemModelTest, InterruptTooltip) {
192 // Test that we have the correct interrupt tooltip for downloads that are in 188 // Test that we have the correct interrupt tooltip for downloads that are in
193 // the INTERRUPTED state. 189 // the INTERRUPTED state.
194 const struct TestCase { 190 const struct TestCase {
195 // The reason. 191 // The reason.
196 content::DownloadInterruptReason reason; 192 content::DownloadInterruptReason reason;
197 193
198 // Expected tooltip text. The tooltip text for interrupted downloads 194 // Expected tooltip text. The tooltip text for interrupted downloads
199 // typically consist of two lines. One for the filename and one for the 195 // typically consist of two lines. One for the filename and one for the
200 // interrupt reason. The returned string contains a newline. 196 // interrupt reason. The returned string contains a newline.
201 const char* expected_tooltip; 197 const char* expected_tooltip;
202 } kTestCases[] = { 198 } kTestCases[] = {
203 { content::DOWNLOAD_INTERRUPT_REASON_NONE, 199 {content::DOWNLOAD_INTERRUPT_REASON_NONE, "foo.bar"},
204 "foo.bar" }, 200 {content::DOWNLOAD_INTERRUPT_REASON_FILE_FAILED,
205 { content::DOWNLOAD_INTERRUPT_REASON_FILE_FAILED, 201 "foo.bar\nDownload error"},
206 "foo.bar\nDownload error" }, 202 {content::DOWNLOAD_INTERRUPT_REASON_FILE_ACCESS_DENIED,
207 { content::DOWNLOAD_INTERRUPT_REASON_FILE_ACCESS_DENIED, 203 "foo.bar\nInsufficient permissions"},
208 "foo.bar\nInsufficient permissions" }, 204 {content::DOWNLOAD_INTERRUPT_REASON_FILE_NO_SPACE, "foo.bar\nDisk full"},
209 { content::DOWNLOAD_INTERRUPT_REASON_FILE_NO_SPACE, 205 {content::DOWNLOAD_INTERRUPT_REASON_FILE_NAME_TOO_LONG,
210 "foo.bar\nDisk full" }, 206 "foo.bar\nPath too long"},
211 { content::DOWNLOAD_INTERRUPT_REASON_FILE_NAME_TOO_LONG, 207 {content::DOWNLOAD_INTERRUPT_REASON_FILE_TOO_LARGE,
212 "foo.bar\nPath too long" }, 208 "foo.bar\nFile too large"},
213 { content::DOWNLOAD_INTERRUPT_REASON_FILE_TOO_LARGE, 209 {content::DOWNLOAD_INTERRUPT_REASON_FILE_VIRUS_INFECTED,
214 "foo.bar\nFile too large" }, 210 "foo.bar\nVirus detected"},
215 { content::DOWNLOAD_INTERRUPT_REASON_FILE_VIRUS_INFECTED, 211 {content::DOWNLOAD_INTERRUPT_REASON_FILE_BLOCKED, "foo.bar\nBlocked"},
216 "foo.bar\nVirus detected" }, 212 {content::DOWNLOAD_INTERRUPT_REASON_FILE_SECURITY_CHECK_FAILED,
217 { content::DOWNLOAD_INTERRUPT_REASON_FILE_BLOCKED, 213 "foo.bar\nVirus scan failed"},
218 "foo.bar\nBlocked" }, 214 {content::DOWNLOAD_INTERRUPT_REASON_FILE_TOO_SHORT,
219 { content::DOWNLOAD_INTERRUPT_REASON_FILE_SECURITY_CHECK_FAILED, 215 "foo.bar\nFile truncated"},
220 "foo.bar\nVirus scan failed" }, 216 {content::DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR,
221 { content::DOWNLOAD_INTERRUPT_REASON_FILE_TOO_SHORT, 217 "foo.bar\nSystem busy"},
222 "foo.bar\nFile truncated" }, 218 {content::DOWNLOAD_INTERRUPT_REASON_NETWORK_FAILED,
223 { content::DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR, 219 "foo.bar\nNetwork error"},
224 "foo.bar\nSystem busy" }, 220 {content::DOWNLOAD_INTERRUPT_REASON_NETWORK_TIMEOUT,
225 { content::DOWNLOAD_INTERRUPT_REASON_NETWORK_FAILED, 221 "foo.bar\nNetwork timeout"},
226 "foo.bar\nNetwork error" }, 222 {content::DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED,
227 { content::DOWNLOAD_INTERRUPT_REASON_NETWORK_TIMEOUT, 223 "foo.bar\nNetwork disconnected"},
228 "foo.bar\nNetwork timeout" }, 224 {content::DOWNLOAD_INTERRUPT_REASON_NETWORK_SERVER_DOWN,
229 { content::DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED, 225 "foo.bar\nServer unavailable"},
230 "foo.bar\nNetwork disconnected" }, 226 {content::DOWNLOAD_INTERRUPT_REASON_NETWORK_INVALID_REQUEST,
231 { content::DOWNLOAD_INTERRUPT_REASON_NETWORK_SERVER_DOWN, 227 "foo.bar\nNetwork error"},
232 "foo.bar\nServer unavailable" }, 228 {content::DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED,
233 { content::DOWNLOAD_INTERRUPT_REASON_NETWORK_INVALID_REQUEST, 229 "foo.bar\nServer problem"},
234 "foo.bar\nNetwork error" }, 230 {content::DOWNLOAD_INTERRUPT_REASON_SERVER_NO_RANGE,
235 { content::DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED, 231 "foo.bar\nDownload error"},
236 "foo.bar\nServer problem" }, 232 {content::DOWNLOAD_INTERRUPT_REASON_SERVER_BAD_CONTENT,
237 { content::DOWNLOAD_INTERRUPT_REASON_SERVER_NO_RANGE, 233 "foo.bar\nNo file"},
238 "foo.bar\nDownload error" }, 234 {content::DOWNLOAD_INTERRUPT_REASON_SERVER_UNAUTHORIZED,
239 { content::DOWNLOAD_INTERRUPT_REASON_SERVER_BAD_CONTENT, 235 "foo.bar\nNeeds authorization"},
240 "foo.bar\nNo file" }, 236 {content::DOWNLOAD_INTERRUPT_REASON_SERVER_CERT_PROBLEM,
241 { content::DOWNLOAD_INTERRUPT_REASON_SERVER_UNAUTHORIZED, 237 "foo.bar\nBad certificate"},
242 "foo.bar\nNeeds authorization" }, 238 {content::DOWNLOAD_INTERRUPT_REASON_SERVER_FORBIDDEN,
243 { content::DOWNLOAD_INTERRUPT_REASON_SERVER_CERT_PROBLEM, 239 "foo.bar\nForbidden"},
244 "foo.bar\nBad certificate" }, 240 {content::DOWNLOAD_INTERRUPT_REASON_SERVER_UNREACHABLE,
245 { content::DOWNLOAD_INTERRUPT_REASON_SERVER_FORBIDDEN, 241 "foo.bar\nServer unreachable"},
246 "foo.bar\nForbidden" }, 242 {content::DOWNLOAD_INTERRUPT_REASON_USER_CANCELED, "foo.bar"},
247 { content::DOWNLOAD_INTERRUPT_REASON_USER_CANCELED, 243 {content::DOWNLOAD_INTERRUPT_REASON_USER_SHUTDOWN, "foo.bar\nShutdown"},
248 "foo.bar" }, 244 {content::DOWNLOAD_INTERRUPT_REASON_CRASH, "foo.bar\nCrash"},
249 { content::DOWNLOAD_INTERRUPT_REASON_USER_SHUTDOWN,
250 "foo.bar\nShutdown" },
251 { content::DOWNLOAD_INTERRUPT_REASON_CRASH,
252 "foo.bar\nCrash" },
253 }; 245 };
254 static_assert(kInterruptReasonCount == arraysize(kTestCases), 246 static_assert(kInterruptReasonCount == arraysize(kTestCases),
255 "interrupt reason mismatch"); 247 "interrupt reason mismatch");
256 248
257 // Large tooltip width. Should be large enough to accommodate the entire 249 // Large tooltip width. Should be large enough to accommodate the entire
258 // tooltip without truncation. 250 // tooltip without truncation.
259 const int kLargeTooltipWidth = 1000; 251 const int kLargeTooltipWidth = 1000;
260 252
261 // Small tooltip width. Small enough to require truncation of most 253 // Small tooltip width. Small enough to require truncation of most
262 // tooltips. Used to test eliding logic. 254 // tooltips. Used to test eliding logic.
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 EXPECT_CALL(item(), GetAutoOpened()) 424 EXPECT_CALL(item(), GetAutoOpened())
433 .WillRepeatedly(Return(test_case.auto_opened)); 425 .WillRepeatedly(Return(test_case.auto_opened));
434 426
435 EXPECT_EQ(test_case.expected_result, 427 EXPECT_EQ(test_case.expected_result,
436 model().ShouldRemoveFromShelfWhenComplete()) 428 model().ShouldRemoveFromShelfWhenComplete())
437 << "Test case: " << i; 429 << "Test case: " << i;
438 Mock::VerifyAndClearExpectations(&item()); 430 Mock::VerifyAndClearExpectations(&item());
439 Mock::VerifyAndClearExpectations(&model()); 431 Mock::VerifyAndClearExpectations(&model());
440 } 432 }
441 } 433 }
OLDNEW
« no previous file with comments | « chrome/browser/download/download_item_model.cc ('k') | chrome/common/extensions/api/downloads.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698