OLD | NEW |
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 // This file contains download browser tests that are known to be runnable | 5 // This file contains download browser tests that are known to be runnable |
6 // in a pure content context. Over time tests should be migrated here. | 6 // in a pure content context. Over time tests should be migrated here. |
7 | 7 |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
10 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
(...skipping 1163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1174 {DownloadItem::IN_PROGRESS, GetSafeBufferChunk()}, | 1174 {DownloadItem::IN_PROGRESS, GetSafeBufferChunk()}, |
1175 // Notification of receiving whole file. | 1175 // Notification of receiving whole file. |
1176 {DownloadItem::IN_PROGRESS, 0}, | 1176 {DownloadItem::IN_PROGRESS, 0}, |
1177 // Completion. | 1177 // Completion. |
1178 {DownloadItem::COMPLETE, GetSafeBufferChunk() * 3}, | 1178 {DownloadItem::COMPLETE, GetSafeBufferChunk() * 3}, |
1179 }; | 1179 }; |
1180 | 1180 |
1181 recorder.CompareToExpectedRecord(expected_record, arraysize(expected_record)); | 1181 recorder.CompareToExpectedRecord(expected_record, arraysize(expected_record)); |
1182 } | 1182 } |
1183 | 1183 |
1184 // Confirm restart fallback happens if a precondition is failed. | |
1185 IN_PROC_BROWSER_TEST_F(DownloadContentTest, | |
1186 ResumeInterruptedDownloadBadPrecondition) { | |
1187 base::CommandLine::ForCurrentProcess()->AppendSwitch( | |
1188 switches::kEnableDownloadResumption); | |
1189 ASSERT_TRUE(spawned_test_server()->Start()); | |
1190 | |
1191 GURL url = spawned_test_server()->GetURL(base::StringPrintf( | |
1192 // First download hits an RST, rest don't, precondition fail. | |
1193 "rangereset?size=%d&rst_boundary=%d&" | |
1194 "token=BadPrecondition&rst_limit=1&fail_precondition=2", | |
1195 GetSafeBufferChunk() * 3, GetSafeBufferChunk())); | |
1196 | |
1197 // Start the download and wait for first data chunk. | |
1198 DownloadItem* download(StartDownloadAndReturnItem(url)); | |
1199 WaitForData(download, GetSafeBufferChunk()); | |
1200 | |
1201 RecordingDownloadObserver recorder(download); | |
1202 | |
1203 ReleaseRSTAndConfirmInterruptForResume(download); | |
1204 ConfirmFileStatusForResume( | |
1205 download, true, GetSafeBufferChunk(), GetSafeBufferChunk() * 3, | |
1206 base::FilePath(FILE_PATH_LITERAL("rangereset.crdownload"))); | |
1207 EXPECT_EQ("BadPrecondition2", download->GetETag()); | |
1208 | |
1209 DownloadUpdatedObserver completion_observer( | |
1210 download, base::Bind(DownloadCompleteFilter)); | |
1211 download->Resume(); | |
1212 completion_observer.WaitForEvent(); | |
1213 | |
1214 ConfirmFileStatusForResume( | |
1215 download, true, GetSafeBufferChunk() * 3, GetSafeBufferChunk() * 3, | |
1216 base::FilePath(FILE_PATH_LITERAL("rangereset"))); | |
1217 EXPECT_EQ("BadPrecondition0", download->GetETag()); | |
1218 | |
1219 static const RecordingDownloadObserver::RecordStruct expected_record[] = { | |
1220 // Result of RST | |
1221 {DownloadItem::INTERRUPTED, GetSafeBufferChunk()}, | |
1222 // Starting continuation | |
1223 {DownloadItem::IN_PROGRESS, GetSafeBufferChunk()}, | |
1224 // Server precondition fail. | |
1225 {DownloadItem::INTERRUPTED, 0}, | |
1226 // Notification of successful restart. | |
1227 {DownloadItem::IN_PROGRESS, 0}, | |
1228 // Completion. | |
1229 {DownloadItem::COMPLETE, GetSafeBufferChunk() * 3}, | |
1230 }; | |
1231 | |
1232 recorder.CompareToExpectedRecord(expected_record, arraysize(expected_record)); | |
1233 } | |
1234 | |
1235 // Confirm we don't try to resume if we don't have a verifier. | 1184 // Confirm we don't try to resume if we don't have a verifier. |
1236 IN_PROC_BROWSER_TEST_F(DownloadContentTest, | 1185 IN_PROC_BROWSER_TEST_F(DownloadContentTest, |
1237 ResumeInterruptedDownloadNoVerifiers) { | 1186 ResumeInterruptedDownloadNoVerifiers) { |
1238 base::CommandLine::ForCurrentProcess()->AppendSwitch( | 1187 base::CommandLine::ForCurrentProcess()->AppendSwitch( |
1239 switches::kEnableDownloadResumption); | 1188 switches::kEnableDownloadResumption); |
1240 ASSERT_TRUE(spawned_test_server()->Start()); | 1189 ASSERT_TRUE(spawned_test_server()->Start()); |
1241 | 1190 |
1242 GURL url = spawned_test_server()->GetURL(base::StringPrintf( | 1191 GURL url = spawned_test_server()->GetURL(base::StringPrintf( |
1243 // First download hits an RST, rest don't, no verifiers. | 1192 // First download hits an RST, rest don't, no verifiers. |
1244 "rangereset?size=%d&rst_boundary=%d&" | 1193 "rangereset?size=%d&rst_boundary=%d&" |
(...skipping 570 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1815 | 1764 |
1816 std::vector<DownloadItem*> downloads; | 1765 std::vector<DownloadItem*> downloads; |
1817 DownloadManagerForShell(shell())->GetAllDownloads(&downloads); | 1766 DownloadManagerForShell(shell())->GetAllDownloads(&downloads); |
1818 ASSERT_EQ(1u, downloads.size()); | 1767 ASSERT_EQ(1u, downloads.size()); |
1819 | 1768 |
1820 EXPECT_EQ(FILE_PATH_LITERAL("Jumboshrimp.txt"), | 1769 EXPECT_EQ(FILE_PATH_LITERAL("Jumboshrimp.txt"), |
1821 downloads[0]->GetTargetFilePath().BaseName().value()); | 1770 downloads[0]->GetTargetFilePath().BaseName().value()); |
1822 } | 1771 } |
1823 | 1772 |
1824 } // namespace content | 1773 } // namespace content |
OLD | NEW |