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 <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 #include <utility> | 10 #include <utility> |
(...skipping 19 matching lines...) Expand all Loading... | |
30 #include "base/threading/sequenced_worker_pool.h" | 30 #include "base/threading/sequenced_worker_pool.h" |
31 #include "base/threading/thread_restrictions.h" | 31 #include "base/threading/thread_restrictions.h" |
32 #include "base/time/time.h" | 32 #include "base/time/time.h" |
33 #include "build/build_config.h" | 33 #include "build/build_config.h" |
34 #include "content/browser/byte_stream.h" | 34 #include "content/browser/byte_stream.h" |
35 #include "content/browser/download/download_file_factory.h" | 35 #include "content/browser/download/download_file_factory.h" |
36 #include "content/browser/download/download_file_impl.h" | 36 #include "content/browser/download/download_file_impl.h" |
37 #include "content/browser/download/download_item_impl.h" | 37 #include "content/browser/download/download_item_impl.h" |
38 #include "content/browser/download/download_manager_impl.h" | 38 #include "content/browser/download/download_manager_impl.h" |
39 #include "content/browser/download/download_resource_handler.h" | 39 #include "content/browser/download/download_resource_handler.h" |
40 #include "content/browser/download/download_task_runner.h" | |
40 #include "content/browser/download/parallel_download_utils.h" | 41 #include "content/browser/download/parallel_download_utils.h" |
41 #include "content/browser/loader/resource_dispatcher_host_impl.h" | 42 #include "content/browser/loader/resource_dispatcher_host_impl.h" |
42 #include "content/browser/web_contents/web_contents_impl.h" | 43 #include "content/browser/web_contents/web_contents_impl.h" |
43 #include "content/public/browser/download_danger_type.h" | 44 #include "content/public/browser/download_danger_type.h" |
44 #include "content/public/browser/resource_dispatcher_host_delegate.h" | 45 #include "content/public/browser/resource_dispatcher_host_delegate.h" |
45 #include "content/public/browser/resource_throttle.h" | 46 #include "content/public/browser/resource_throttle.h" |
46 #include "content/public/common/content_features.h" | 47 #include "content/public/common/content_features.h" |
47 #include "content/public/common/webplugininfo.h" | 48 #include "content/public/common/webplugininfo.h" |
48 #include "content/public/test/browser_test_utils.h" | 49 #include "content/public/test/browser_test_utils.h" |
49 #include "content/public/test/content_browser_test.h" | 50 #include "content/public/test/content_browser_test.h" |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
222 std::move(stream), | 223 std::move(stream), |
223 net_log, | 224 net_log, |
224 observer), | 225 observer), |
225 owner_(owner) {} | 226 owner_(owner) {} |
226 | 227 |
227 DownloadFileWithDelay::~DownloadFileWithDelay() {} | 228 DownloadFileWithDelay::~DownloadFileWithDelay() {} |
228 | 229 |
229 void DownloadFileWithDelay::RenameAndUniquify( | 230 void DownloadFileWithDelay::RenameAndUniquify( |
230 const base::FilePath& full_path, | 231 const base::FilePath& full_path, |
231 const RenameCompletionCallback& callback) { | 232 const RenameCompletionCallback& callback) { |
232 DCHECK_CURRENTLY_ON(BrowserThread::FILE); | 233 DCHECK(GetDownloadTaskRunner()->RunsTasksInCurrentSequence()); |
233 DownloadFileImpl::RenameAndUniquify( | 234 DownloadFileImpl::RenameAndUniquify( |
234 full_path, base::Bind(DownloadFileWithDelay::RenameCallbackWrapper, | 235 full_path, base::Bind(DownloadFileWithDelay::RenameCallbackWrapper, |
235 owner_, callback)); | 236 owner_, callback)); |
236 } | 237 } |
237 | 238 |
238 void DownloadFileWithDelay::RenameAndAnnotate( | 239 void DownloadFileWithDelay::RenameAndAnnotate( |
239 const base::FilePath& full_path, | 240 const base::FilePath& full_path, |
240 const std::string& client_guid, | 241 const std::string& client_guid, |
241 const GURL& source_url, | 242 const GURL& source_url, |
242 const GURL& referrer_url, | 243 const GURL& referrer_url, |
243 const RenameCompletionCallback& callback) { | 244 const RenameCompletionCallback& callback) { |
244 DCHECK_CURRENTLY_ON(BrowserThread::FILE); | 245 DCHECK(GetDownloadTaskRunner()->RunsTasksInCurrentSequence()); |
245 DownloadFileImpl::RenameAndAnnotate( | 246 DownloadFileImpl::RenameAndAnnotate( |
246 full_path, | 247 full_path, |
247 client_guid, | 248 client_guid, |
248 source_url, | 249 source_url, |
249 referrer_url, | 250 referrer_url, |
250 base::Bind( | 251 base::Bind( |
251 DownloadFileWithDelay::RenameCallbackWrapper, owner_, callback)); | 252 DownloadFileWithDelay::RenameCallbackWrapper, owner_, callback)); |
252 } | 253 } |
253 | 254 |
254 // static | 255 // static |
(...skipping 13 matching lines...) Expand all Loading... | |
268 weak_ptr_factory_(this) {} | 269 weak_ptr_factory_(this) {} |
269 | 270 |
270 DownloadFileWithDelayFactory::~DownloadFileWithDelayFactory() {} | 271 DownloadFileWithDelayFactory::~DownloadFileWithDelayFactory() {} |
271 | 272 |
272 DownloadFile* DownloadFileWithDelayFactory::CreateFile( | 273 DownloadFile* DownloadFileWithDelayFactory::CreateFile( |
273 std::unique_ptr<DownloadSaveInfo> save_info, | 274 std::unique_ptr<DownloadSaveInfo> save_info, |
274 const base::FilePath& default_download_directory, | 275 const base::FilePath& default_download_directory, |
275 std::unique_ptr<ByteStreamReader> stream, | 276 std::unique_ptr<ByteStreamReader> stream, |
276 const net::NetLogWithSource& net_log, | 277 const net::NetLogWithSource& net_log, |
277 base::WeakPtr<DownloadDestinationObserver> observer) { | 278 base::WeakPtr<DownloadDestinationObserver> observer) { |
278 return new DownloadFileWithDelay(std::move(save_info), | 279 return new DownloadFileWithDelay( |
279 default_download_directory, | 280 std::move(save_info), default_download_directory, std::move(stream), |
280 std::move(stream), | 281 net_log, observer, weak_ptr_factory_.GetWeakPtr()); |
281 net_log, | |
282 observer, | |
283 weak_ptr_factory_.GetWeakPtr()); | |
284 } | 282 } |
285 | 283 |
286 void DownloadFileWithDelayFactory::AddRenameCallback(base::Closure callback) { | 284 void DownloadFileWithDelayFactory::AddRenameCallback(base::Closure callback) { |
287 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 285 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
288 rename_callbacks_.push_back(callback); | 286 rename_callbacks_.push_back(callback); |
289 if (waiting_) | 287 if (waiting_) |
290 base::MessageLoopForUI::current()->QuitWhenIdle(); | 288 base::MessageLoopForUI::current()->QuitWhenIdle(); |
291 } | 289 } |
292 | 290 |
293 void DownloadFileWithDelayFactory::GetAllRenameCallbacks( | 291 void DownloadFileWithDelayFactory::GetAllRenameCallbacks( |
(...skipping 20 matching lines...) Expand all Loading... | |
314 std::unique_ptr<ByteStreamReader> stream, | 312 std::unique_ptr<ByteStreamReader> stream, |
315 const net::NetLogWithSource& net_log, | 313 const net::NetLogWithSource& net_log, |
316 base::WeakPtr<DownloadDestinationObserver> observer) | 314 base::WeakPtr<DownloadDestinationObserver> observer) |
317 : DownloadFileImpl(std::move(save_info), | 315 : DownloadFileImpl(std::move(save_info), |
318 default_downloads_directory, | 316 default_downloads_directory, |
319 std::move(stream), | 317 std::move(stream), |
320 net_log, | 318 net_log, |
321 observer) {} | 319 observer) {} |
322 | 320 |
323 ~CountingDownloadFile() override { | 321 ~CountingDownloadFile() override { |
324 DCHECK_CURRENTLY_ON(BrowserThread::FILE); | 322 DCHECK(GetDownloadTaskRunner()->RunsTasksInCurrentSequence()); |
325 active_files_--; | 323 active_files_--; |
326 } | 324 } |
327 | 325 |
328 void Initialize( | 326 void Initialize( |
329 const InitializeCallback& callback, | 327 const InitializeCallback& callback, |
330 const CancelRequestCallback& cancel_request_callback, | 328 const CancelRequestCallback& cancel_request_callback, |
331 const DownloadItem::ReceivedSlices& received_slices, | 329 const DownloadItem::ReceivedSlices& received_slices, |
332 bool is_parallelizable) override { | 330 bool is_parallelizable) override { |
333 DCHECK_CURRENTLY_ON(BrowserThread::FILE); | 331 DCHECK(GetDownloadTaskRunner()->RunsTasksInCurrentSequence()); |
334 active_files_++; | 332 active_files_++; |
335 DownloadFileImpl::Initialize(callback, cancel_request_callback, | 333 DownloadFileImpl::Initialize(callback, cancel_request_callback, |
336 received_slices, is_parallelizable); | 334 received_slices, is_parallelizable); |
337 } | 335 } |
338 | 336 |
339 static void GetNumberActiveFiles(int* result) { | 337 static void GetNumberActiveFiles(int* result) { |
340 DCHECK_CURRENTLY_ON(BrowserThread::FILE); | 338 DCHECK(GetDownloadTaskRunner()->RunsTasksInCurrentSequence()); |
341 *result = active_files_; | 339 *result = active_files_; |
342 } | 340 } |
343 | 341 |
344 // Can be called on any thread, and will block (running message loop) | 342 // Can be called on any thread, and will block (running message loop) |
345 // until data is returned. | 343 // until data is returned. |
346 static int GetNumberActiveFilesFromFileThread() { | 344 static int GetNumberActiveFilesFromFileThread() { |
347 int result = -1; | 345 int result = -1; |
348 BrowserThread::PostTaskAndReply( | 346 GetDownloadTaskRunner()->PostTaskAndReply( |
349 BrowserThread::FILE, FROM_HERE, | 347 FROM_HERE, |
350 base::Bind(&CountingDownloadFile::GetNumberActiveFiles, &result), | 348 base::Bind(&CountingDownloadFile::GetNumberActiveFiles, &result), |
351 base::MessageLoop::current()->QuitWhenIdleClosure()); | 349 base::MessageLoop::current()->QuitWhenIdleClosure()); |
352 base::RunLoop().Run(); | 350 base::RunLoop().Run(); |
353 DCHECK_NE(-1, result); | 351 DCHECK_NE(-1, result); |
354 return result; | 352 return result; |
355 } | 353 } |
356 | 354 |
357 private: | 355 private: |
358 static int active_files_; | 356 static int active_files_; |
359 }; | 357 }; |
360 | 358 |
361 int CountingDownloadFile::active_files_ = 0; | 359 int CountingDownloadFile::active_files_ = 0; |
362 | 360 |
363 class CountingDownloadFileFactory : public DownloadFileFactory { | 361 class CountingDownloadFileFactory : public DownloadFileFactory { |
364 public: | 362 public: |
365 CountingDownloadFileFactory() {} | 363 CountingDownloadFileFactory() {} |
366 ~CountingDownloadFileFactory() override {} | 364 ~CountingDownloadFileFactory() override {} |
367 | 365 |
368 // DownloadFileFactory interface. | 366 // DownloadFileFactory interface. |
369 DownloadFile* CreateFile( | 367 DownloadFile* CreateFile( |
370 std::unique_ptr<DownloadSaveInfo> save_info, | 368 std::unique_ptr<DownloadSaveInfo> save_info, |
371 const base::FilePath& default_downloads_directory, | 369 const base::FilePath& default_downloads_directory, |
372 std::unique_ptr<ByteStreamReader> stream, | 370 std::unique_ptr<ByteStreamReader> stream, |
373 const net::NetLogWithSource& net_log, | 371 const net::NetLogWithSource& net_log, |
374 base::WeakPtr<DownloadDestinationObserver> observer) override { | 372 base::WeakPtr<DownloadDestinationObserver> observer) override { |
375 return new CountingDownloadFile(std::move(save_info), | 373 return new CountingDownloadFile(std::move(save_info), |
376 default_downloads_directory, | 374 default_downloads_directory, |
377 std::move(stream), | 375 std::move(stream), net_log, observer); |
378 net_log, | |
379 observer); | |
380 } | 376 } |
381 }; | 377 }; |
382 | 378 |
383 class TestShellDownloadManagerDelegate : public ShellDownloadManagerDelegate { | 379 class TestShellDownloadManagerDelegate : public ShellDownloadManagerDelegate { |
384 public: | 380 public: |
385 TestShellDownloadManagerDelegate() | 381 TestShellDownloadManagerDelegate() |
386 : delay_download_open_(false) {} | 382 : delay_download_open_(false) {} |
387 ~TestShellDownloadManagerDelegate() override {} | 383 ~TestShellDownloadManagerDelegate() override {} |
388 | 384 |
389 bool ShouldOpenDownload( | 385 bool ShouldOpenDownload( |
(...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
901 // Wait until the second (final) rename callback is posted. | 897 // Wait until the second (final) rename callback is posted. |
902 file_factory->WaitForSomeCallback(); | 898 file_factory->WaitForSomeCallback(); |
903 file_factory->GetAllRenameCallbacks(&callbacks); | 899 file_factory->GetAllRenameCallbacks(&callbacks); |
904 ASSERT_EQ(1u, callbacks.size()); | 900 ASSERT_EQ(1u, callbacks.size()); |
905 | 901 |
906 // Cancel it. | 902 // Cancel it. |
907 std::vector<DownloadItem*> items; | 903 std::vector<DownloadItem*> items; |
908 download_manager->GetAllDownloads(&items); | 904 download_manager->GetAllDownloads(&items); |
909 ASSERT_EQ(1u, items.size()); | 905 ASSERT_EQ(1u, items.size()); |
910 items[0]->Cancel(true); | 906 items[0]->Cancel(true); |
911 RunAllPendingInMessageLoop(); | 907 RunAllBlockingPoolTasksUntilIdle(); |
912 | 908 |
913 // Check state. | 909 // Check state. |
914 EXPECT_EQ(DownloadItem::CANCELLED, items[0]->GetState()); | 910 EXPECT_EQ(DownloadItem::CANCELLED, items[0]->GetState()); |
915 | 911 |
916 // Run final rename callback. | 912 // Run final rename callback. |
917 callbacks[0].Run(); | 913 callbacks[0].Run(); |
918 callbacks.clear(); | 914 callbacks.clear(); |
919 | 915 |
920 // Check state. | 916 // Check state. |
921 EXPECT_EQ(DownloadItem::CANCELLED, items[0]->GetState()); | 917 EXPECT_EQ(DownloadItem::CANCELLED, items[0]->GetState()); |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1069 | 1065 |
1070 // Confirm download isn't complete yet. | 1066 // Confirm download isn't complete yet. |
1071 std::vector<DownloadItem*> items; | 1067 std::vector<DownloadItem*> items; |
1072 DownloadManagerForShell(shell())->GetAllDownloads(&items); | 1068 DownloadManagerForShell(shell())->GetAllDownloads(&items); |
1073 EXPECT_EQ(DownloadItem::IN_PROGRESS, items[0]->GetState()); | 1069 EXPECT_EQ(DownloadItem::IN_PROGRESS, items[0]->GetState()); |
1074 | 1070 |
1075 // Cancel the download; confirm cancel fails anyway. | 1071 // Cancel the download; confirm cancel fails anyway. |
1076 ASSERT_EQ(1u, items.size()); | 1072 ASSERT_EQ(1u, items.size()); |
1077 items[0]->Cancel(true); | 1073 items[0]->Cancel(true); |
1078 EXPECT_EQ(DownloadItem::IN_PROGRESS, items[0]->GetState()); | 1074 EXPECT_EQ(DownloadItem::IN_PROGRESS, items[0]->GetState()); |
1079 RunAllPendingInMessageLoop(); | 1075 RunAllBlockingPoolTasksUntilIdle(); |
1080 EXPECT_EQ(DownloadItem::IN_PROGRESS, items[0]->GetState()); | 1076 EXPECT_EQ(DownloadItem::IN_PROGRESS, items[0]->GetState()); |
1081 | 1077 |
1082 MockDownloadItemObserver observer; | 1078 MockDownloadItemObserver observer; |
1083 items[0]->AddObserver(&observer); | 1079 items[0]->AddObserver(&observer); |
1084 EXPECT_CALL(observer, OnDownloadDestroyed(items[0])); | 1080 EXPECT_CALL(observer, OnDownloadDestroyed(items[0])); |
1085 | 1081 |
1086 // Shutdown the download manager. Mostly this is confirming a lack of | 1082 // Shutdown the download manager. Mostly this is confirming a lack of |
1087 // crashes. | 1083 // crashes. |
1088 DownloadManagerForShell(shell())->Shutdown(); | 1084 DownloadManagerForShell(shell())->Shutdown(); |
1089 } | 1085 } |
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1490 EXPECT_EQ(DOWNLOAD_INTERRUPT_REASON_FILE_NO_SPACE, | 1486 EXPECT_EQ(DOWNLOAD_INTERRUPT_REASON_FILE_NO_SPACE, |
1491 download->GetLastReason()); | 1487 download->GetLastReason()); |
1492 EXPECT_EQ(0, download->GetReceivedBytes()); | 1488 EXPECT_EQ(0, download->GetReceivedBytes()); |
1493 EXPECT_TRUE(download->GetFullPath().empty()); | 1489 EXPECT_TRUE(download->GetFullPath().empty()); |
1494 EXPECT_FALSE(download->GetTargetFilePath().empty()); | 1490 EXPECT_FALSE(download->GetTargetFilePath().empty()); |
1495 | 1491 |
1496 // We need to make sure that any cross-thread downloads communication has | 1492 // We need to make sure that any cross-thread downloads communication has |
1497 // quiesced before clearing and injecting the new errors, as the | 1493 // quiesced before clearing and injecting the new errors, as the |
1498 // InjectErrors() routine alters the currently in use download file | 1494 // InjectErrors() routine alters the currently in use download file |
1499 // factory, which is a file thread object. | 1495 // factory, which is a file thread object. |
1500 RunAllPendingInMessageLoop(BrowserThread::FILE); | 1496 RunAllBlockingPoolTasksUntilIdle(); |
1501 RunAllPendingInMessageLoop(); | |
1502 | 1497 |
1503 // Clear the old errors list. | 1498 // Clear the old errors list. |
1504 injector->ClearError(); | 1499 injector->ClearError(); |
1505 | 1500 |
1506 // Resume and watch completion. | 1501 // Resume and watch completion. |
1507 download->Resume(); | 1502 download->Resume(); |
1508 WaitForCompletion(download); | 1503 WaitForCompletion(download); |
1509 EXPECT_EQ(download->GetState(), DownloadItem::COMPLETE); | 1504 EXPECT_EQ(download->GetState(), DownloadItem::COMPLETE); |
1510 } | 1505 } |
1511 | 1506 |
(...skipping 21 matching lines...) Expand all Loading... | |
1533 EXPECT_TRUE(download->GetFullPath().empty()); | 1528 EXPECT_TRUE(download->GetFullPath().empty()); |
1534 // Target path will have been set after file name determination. GetFullPath() | 1529 // Target path will have been set after file name determination. GetFullPath() |
1535 // being empty is sufficient to signal that filename determination needs to be | 1530 // being empty is sufficient to signal that filename determination needs to be |
1536 // redone. | 1531 // redone. |
1537 EXPECT_FALSE(download->GetTargetFilePath().empty()); | 1532 EXPECT_FALSE(download->GetTargetFilePath().empty()); |
1538 | 1533 |
1539 // We need to make sure that any cross-thread downloads communication has | 1534 // We need to make sure that any cross-thread downloads communication has |
1540 // quiesced before clearing and injecting the new errors, as the | 1535 // quiesced before clearing and injecting the new errors, as the |
1541 // InjectErrors() routine alters the currently in use download file | 1536 // InjectErrors() routine alters the currently in use download file |
1542 // factory, which is a file thread object. | 1537 // factory, which is a file thread object. |
1543 RunAllPendingInMessageLoop(BrowserThread::FILE); | 1538 RunAllBlockingPoolTasksUntilIdle(); |
1544 RunAllPendingInMessageLoop(); | |
1545 | 1539 |
1546 // Clear the old errors list. | 1540 // Clear the old errors list. |
1547 injector->ClearError(); | 1541 injector->ClearError(); |
1548 | 1542 |
1549 download->Resume(); | 1543 download->Resume(); |
1550 WaitForCompletion(download); | 1544 WaitForCompletion(download); |
1551 EXPECT_EQ(download->GetState(), DownloadItem::COMPLETE); | 1545 EXPECT_EQ(download->GetState(), DownloadItem::COMPLETE); |
1552 } | 1546 } |
1553 | 1547 |
1554 IN_PROC_BROWSER_TEST_F(DownloadContentTest, RecoverFromFinalRenameError) { | 1548 IN_PROC_BROWSER_TEST_F(DownloadContentTest, RecoverFromFinalRenameError) { |
(...skipping 15 matching lines...) Expand all Loading... | |
1570 WaitForInterrupt(download); | 1564 WaitForInterrupt(download); |
1571 ASSERT_EQ(DownloadItem::INTERRUPTED, download->GetState()); | 1565 ASSERT_EQ(DownloadItem::INTERRUPTED, download->GetState()); |
1572 EXPECT_EQ(DOWNLOAD_INTERRUPT_REASON_FILE_FAILED, download->GetLastReason()); | 1566 EXPECT_EQ(DOWNLOAD_INTERRUPT_REASON_FILE_FAILED, download->GetLastReason()); |
1573 EXPECT_TRUE(download->GetFullPath().empty()); | 1567 EXPECT_TRUE(download->GetFullPath().empty()); |
1574 // Target path should still be intact. | 1568 // Target path should still be intact. |
1575 EXPECT_FALSE(download->GetTargetFilePath().empty()); | 1569 EXPECT_FALSE(download->GetTargetFilePath().empty()); |
1576 | 1570 |
1577 // We need to make sure that any cross-thread downloads communication has | 1571 // We need to make sure that any cross-thread downloads communication has |
1578 // quiesced before clearing and injecting the new errors, as the | 1572 // quiesced before clearing and injecting the new errors, as the |
1579 // InjectErrors() routine alters the currently in use download file | 1573 // InjectErrors() routine alters the currently in use download file |
1580 // factory, which is a file thread object. | 1574 // factory, which is a file thread object. |
gab
2017/06/21 19:42:24
update reference to "file thread"
Sigurður Ásgeirsson
2017/06/22 14:50:06
Done.
| |
1581 RunAllPendingInMessageLoop(BrowserThread::FILE); | 1575 RunAllBlockingPoolTasksUntilIdle(); |
1582 RunAllPendingInMessageLoop(); | |
1583 | 1576 |
1584 // Clear the old errors list. | 1577 // Clear the old errors list. |
1585 injector->ClearError(); | 1578 injector->ClearError(); |
1586 | 1579 |
1587 download->Resume(); | 1580 download->Resume(); |
1588 WaitForCompletion(download); | 1581 WaitForCompletion(download); |
1589 EXPECT_EQ(download->GetState(), DownloadItem::COMPLETE); | 1582 EXPECT_EQ(download->GetState(), DownloadItem::COMPLETE); |
1590 } | 1583 } |
1591 | 1584 |
1592 IN_PROC_BROWSER_TEST_F(DownloadContentTest, Resume_Hash) { | 1585 IN_PROC_BROWSER_TEST_F(DownloadContentTest, Resume_Hash) { |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1650 | 1643 |
1651 DownloadItem* download = | 1644 DownloadItem* download = |
1652 StartDownloadAndReturnItem(shell(), request_handler.url()); | 1645 StartDownloadAndReturnItem(shell(), request_handler.url()); |
1653 WaitForInterrupt(download); | 1646 WaitForInterrupt(download); |
1654 | 1647 |
1655 base::FilePath intermediate_path = download->GetFullPath(); | 1648 base::FilePath intermediate_path = download->GetFullPath(); |
1656 ASSERT_FALSE(intermediate_path.empty()); | 1649 ASSERT_FALSE(intermediate_path.empty()); |
1657 ASSERT_TRUE(PathExists(intermediate_path)); | 1650 ASSERT_TRUE(PathExists(intermediate_path)); |
1658 | 1651 |
1659 download->Cancel(true /* user_cancel */); | 1652 download->Cancel(true /* user_cancel */); |
1660 RunAllPendingInMessageLoop(BrowserThread::FILE); | 1653 RunAllBlockingPoolTasksUntilIdle(); |
1661 RunAllPendingInMessageLoop(); | |
1662 | 1654 |
1663 // The intermediate file should now be gone. | 1655 // The intermediate file should now be gone. |
1664 EXPECT_FALSE(PathExists(intermediate_path)); | 1656 EXPECT_FALSE(PathExists(intermediate_path)); |
1665 EXPECT_TRUE(download->GetFullPath().empty()); | 1657 EXPECT_TRUE(download->GetFullPath().empty()); |
1666 } | 1658 } |
1667 | 1659 |
1668 IN_PROC_BROWSER_TEST_F(DownloadContentTest, RemoveInterruptedDownload) { | 1660 IN_PROC_BROWSER_TEST_F(DownloadContentTest, RemoveInterruptedDownload) { |
1669 TestDownloadRequestHandler request_handler; | 1661 TestDownloadRequestHandler request_handler; |
1670 request_handler.StartServing( | 1662 request_handler.StartServing( |
1671 TestDownloadRequestHandler::Parameters::WithSingleInterruption()); | 1663 TestDownloadRequestHandler::Parameters::WithSingleInterruption()); |
1672 | 1664 |
1673 DownloadItem* download = | 1665 DownloadItem* download = |
1674 StartDownloadAndReturnItem(shell(), request_handler.url()); | 1666 StartDownloadAndReturnItem(shell(), request_handler.url()); |
1675 WaitForInterrupt(download); | 1667 WaitForInterrupt(download); |
1676 | 1668 |
1677 base::FilePath intermediate_path = download->GetFullPath(); | 1669 base::FilePath intermediate_path = download->GetFullPath(); |
1678 ASSERT_FALSE(intermediate_path.empty()); | 1670 ASSERT_FALSE(intermediate_path.empty()); |
1679 ASSERT_TRUE(PathExists(intermediate_path)); | 1671 ASSERT_TRUE(PathExists(intermediate_path)); |
1680 | 1672 |
1681 download->Remove(); | 1673 download->Remove(); |
1682 RunAllPendingInMessageLoop(BrowserThread::FILE); | 1674 RunAllBlockingPoolTasksUntilIdle(); |
1683 RunAllPendingInMessageLoop(); | |
1684 | 1675 |
1685 // The intermediate file should now be gone. | 1676 // The intermediate file should now be gone. |
1686 EXPECT_FALSE(PathExists(intermediate_path)); | 1677 EXPECT_FALSE(PathExists(intermediate_path)); |
1687 } | 1678 } |
1688 | 1679 |
1689 IN_PROC_BROWSER_TEST_F(DownloadContentTest, RemoveCompletedDownload) { | 1680 IN_PROC_BROWSER_TEST_F(DownloadContentTest, RemoveCompletedDownload) { |
1690 // A completed download shouldn't delete the downloaded file when it is | 1681 // A completed download shouldn't delete the downloaded file when it is |
1691 // removed. | 1682 // removed. |
1692 TestDownloadRequestHandler request_handler; | 1683 TestDownloadRequestHandler request_handler; |
1693 request_handler.StartServing(TestDownloadRequestHandler::Parameters()); | 1684 request_handler.StartServing(TestDownloadRequestHandler::Parameters()); |
1694 std::unique_ptr<DownloadTestObserver> completion_observer( | 1685 std::unique_ptr<DownloadTestObserver> completion_observer( |
1695 CreateWaiter(shell(), 1)); | 1686 CreateWaiter(shell(), 1)); |
1696 DownloadItem* download( | 1687 DownloadItem* download( |
1697 StartDownloadAndReturnItem(shell(), request_handler.url())); | 1688 StartDownloadAndReturnItem(shell(), request_handler.url())); |
1698 completion_observer->WaitForFinished(); | 1689 completion_observer->WaitForFinished(); |
1699 | 1690 |
1700 // The target path should exist. | 1691 // The target path should exist. |
1701 base::FilePath target_path(download->GetTargetFilePath()); | 1692 base::FilePath target_path(download->GetTargetFilePath()); |
1702 EXPECT_TRUE(PathExists(target_path)); | 1693 EXPECT_TRUE(PathExists(target_path)); |
1703 download->Remove(); | 1694 download->Remove(); |
1704 RunAllPendingInMessageLoop(BrowserThread::FILE); | 1695 RunAllBlockingPoolTasksUntilIdle(); |
1705 RunAllPendingInMessageLoop(); | |
1706 | 1696 |
1707 // The file should still exist. | 1697 // The file should still exist. |
1708 EXPECT_TRUE(PathExists(target_path)); | 1698 EXPECT_TRUE(PathExists(target_path)); |
1709 } | 1699 } |
1710 | 1700 |
1711 IN_PROC_BROWSER_TEST_F(DownloadContentTest, RemoveResumingDownload) { | 1701 IN_PROC_BROWSER_TEST_F(DownloadContentTest, RemoveResumingDownload) { |
1712 TestDownloadRequestHandler::Parameters parameters = | 1702 TestDownloadRequestHandler::Parameters parameters = |
1713 TestDownloadRequestHandler::Parameters::WithSingleInterruption(); | 1703 TestDownloadRequestHandler::Parameters::WithSingleInterruption(); |
1714 TestDownloadRequestHandler request_handler; | 1704 TestDownloadRequestHandler request_handler; |
1715 request_handler.StartServing(parameters); | 1705 request_handler.StartServing(parameters); |
(...skipping 18 matching lines...) Expand all Loading... | |
1734 download->Resume(); | 1724 download->Resume(); |
1735 request_start_handler.WaitForCallback(); | 1725 request_start_handler.WaitForCallback(); |
1736 | 1726 |
1737 // At this point, the download resumption request has been sent out, but the | 1727 // At this point, the download resumption request has been sent out, but the |
1738 // reponse hasn't been received yet. | 1728 // reponse hasn't been received yet. |
1739 download->Remove(); | 1729 download->Remove(); |
1740 | 1730 |
1741 request_start_handler.RespondWith(std::string(), net::OK); | 1731 request_start_handler.RespondWith(std::string(), net::OK); |
1742 | 1732 |
1743 // The intermediate file should now be gone. | 1733 // The intermediate file should now be gone. |
1744 RunAllPendingInMessageLoop(BrowserThread::FILE); | 1734 RunAllBlockingPoolTasksUntilIdle(); |
1745 RunAllPendingInMessageLoop(); | |
1746 EXPECT_FALSE(PathExists(intermediate_path)); | 1735 EXPECT_FALSE(PathExists(intermediate_path)); |
1747 | 1736 |
1748 parameters.ClearInjectedErrors(); | 1737 parameters.ClearInjectedErrors(); |
1749 parameters.on_start_handler.Reset(); | 1738 parameters.on_start_handler.Reset(); |
1750 request_handler.StartServing(parameters); | 1739 request_handler.StartServing(parameters); |
1751 | 1740 |
1752 // Start the second download and wait until it's done. This exercises the | 1741 // Start the second download and wait until it's done. This exercises the |
1753 // entire downloads stack and effectively flushes all of our worker threads. | 1742 // entire downloads stack and effectively flushes all of our worker threads. |
1754 // We are testing whether the URL request created in the previous | 1743 // We are testing whether the URL request created in the previous |
1755 // DownloadItem::Resume() call reulted in a new download or not. | 1744 // DownloadItem::Resume() call reulted in a new download or not. |
(...skipping 28 matching lines...) Expand all Loading... | |
1784 download->Resume(); | 1773 download->Resume(); |
1785 request_start_handler.WaitForCallback(); | 1774 request_start_handler.WaitForCallback(); |
1786 | 1775 |
1787 // At this point, the download item has initiated a network request for the | 1776 // At this point, the download item has initiated a network request for the |
1788 // resumption attempt, but hasn't received a response yet. | 1777 // resumption attempt, but hasn't received a response yet. |
1789 download->Cancel(true /* user_cancel */); | 1778 download->Cancel(true /* user_cancel */); |
1790 | 1779 |
1791 request_start_handler.RespondWith(std::string(), net::OK); | 1780 request_start_handler.RespondWith(std::string(), net::OK); |
1792 | 1781 |
1793 // The intermediate file should now be gone. | 1782 // The intermediate file should now be gone. |
1794 RunAllPendingInMessageLoop(BrowserThread::IO); | 1783 RunAllBlockingPoolTasksUntilIdle(); |
1795 RunAllPendingInMessageLoop(BrowserThread::FILE); | |
1796 RunAllPendingInMessageLoop(); | |
1797 EXPECT_FALSE(PathExists(intermediate_path)); | 1784 EXPECT_FALSE(PathExists(intermediate_path)); |
1798 | 1785 |
1799 parameters.ClearInjectedErrors(); | 1786 parameters.ClearInjectedErrors(); |
1800 parameters.on_start_handler.Reset(); | 1787 parameters.on_start_handler.Reset(); |
1801 request_handler.StartServing(parameters); | 1788 request_handler.StartServing(parameters); |
1802 | 1789 |
1803 // Start the second download and wait until it's done. This exercises the | 1790 // Start the second download and wait until it's done. This exercises the |
1804 // entire downloads stack and effectively flushes all of our worker threads. | 1791 // entire downloads stack and effectively flushes all of our worker threads. |
1805 // We are testing whether the URL request created in the previous | 1792 // We are testing whether the URL request created in the previous |
1806 // DownloadItem::Resume() call reulted in a new download or not. | 1793 // DownloadItem::Resume() call reulted in a new download or not. |
(...skipping 21 matching lines...) Expand all Loading... | |
1828 // Resume and remove download. We don't expect OnDownloadCreated() calls. | 1815 // Resume and remove download. We don't expect OnDownloadCreated() calls. |
1829 MockDownloadManagerObserver dm_observer(DownloadManagerForShell(shell())); | 1816 MockDownloadManagerObserver dm_observer(DownloadManagerForShell(shell())); |
1830 EXPECT_CALL(dm_observer, OnDownloadCreated(_, _)).Times(0); | 1817 EXPECT_CALL(dm_observer, OnDownloadCreated(_, _)).Times(0); |
1831 | 1818 |
1832 download->Resume(); | 1819 download->Resume(); |
1833 WaitForInProgress(download); | 1820 WaitForInProgress(download); |
1834 | 1821 |
1835 download->Remove(); | 1822 download->Remove(); |
1836 | 1823 |
1837 // The intermediate file should now be gone. | 1824 // The intermediate file should now be gone. |
1838 RunAllPendingInMessageLoop(BrowserThread::FILE); | 1825 RunAllBlockingPoolTasksUntilIdle(); |
1839 RunAllPendingInMessageLoop(); | |
1840 EXPECT_FALSE(PathExists(intermediate_path)); | 1826 EXPECT_FALSE(PathExists(intermediate_path)); |
1841 EXPECT_FALSE(PathExists(target_path)); | 1827 EXPECT_FALSE(PathExists(target_path)); |
1842 EXPECT_TRUE(EnsureNoPendingDownloads()); | 1828 EXPECT_TRUE(EnsureNoPendingDownloads()); |
1843 } | 1829 } |
1844 | 1830 |
1845 IN_PROC_BROWSER_TEST_F(DownloadContentTest, CancelResumedDownload) { | 1831 IN_PROC_BROWSER_TEST_F(DownloadContentTest, CancelResumedDownload) { |
1846 TestDownloadRequestHandler::Parameters parameters = | 1832 TestDownloadRequestHandler::Parameters parameters = |
1847 TestDownloadRequestHandler::Parameters::WithSingleInterruption(); | 1833 TestDownloadRequestHandler::Parameters::WithSingleInterruption(); |
1848 TestDownloadRequestHandler request_handler; | 1834 TestDownloadRequestHandler request_handler; |
1849 request_handler.StartServing(parameters); | 1835 request_handler.StartServing(parameters); |
(...skipping 11 matching lines...) Expand all Loading... | |
1861 // Resume and remove download. We don't expect OnDownloadCreated() calls. | 1847 // Resume and remove download. We don't expect OnDownloadCreated() calls. |
1862 MockDownloadManagerObserver dm_observer(DownloadManagerForShell(shell())); | 1848 MockDownloadManagerObserver dm_observer(DownloadManagerForShell(shell())); |
1863 EXPECT_CALL(dm_observer, OnDownloadCreated(_, _)).Times(0); | 1849 EXPECT_CALL(dm_observer, OnDownloadCreated(_, _)).Times(0); |
1864 | 1850 |
1865 download->Resume(); | 1851 download->Resume(); |
1866 WaitForInProgress(download); | 1852 WaitForInProgress(download); |
1867 | 1853 |
1868 download->Cancel(true); | 1854 download->Cancel(true); |
1869 | 1855 |
1870 // The intermediate file should now be gone. | 1856 // The intermediate file should now be gone. |
1871 RunAllPendingInMessageLoop(BrowserThread::FILE); | 1857 RunAllBlockingPoolTasksUntilIdle(); |
1872 RunAllPendingInMessageLoop(); | |
1873 EXPECT_FALSE(PathExists(intermediate_path)); | 1858 EXPECT_FALSE(PathExists(intermediate_path)); |
1874 EXPECT_FALSE(PathExists(target_path)); | 1859 EXPECT_FALSE(PathExists(target_path)); |
1875 EXPECT_TRUE(EnsureNoPendingDownloads()); | 1860 EXPECT_TRUE(EnsureNoPendingDownloads()); |
1876 } | 1861 } |
1877 | 1862 |
1878 IN_PROC_BROWSER_TEST_F(DownloadContentTest, ResumeRestoredDownload_NoFile) { | 1863 IN_PROC_BROWSER_TEST_F(DownloadContentTest, ResumeRestoredDownload_NoFile) { |
1879 TestDownloadRequestHandler request_handler; | 1864 TestDownloadRequestHandler request_handler; |
1880 TestDownloadRequestHandler::Parameters parameters; | 1865 TestDownloadRequestHandler::Parameters parameters; |
1881 request_handler.StartServing(parameters); | 1866 request_handler.StartServing(parameters); |
1882 | 1867 |
(...skipping 870 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2753 | 2738 |
2754 std::vector<DownloadItem*> downloads; | 2739 std::vector<DownloadItem*> downloads; |
2755 DownloadManagerForShell(shell())->GetAllDownloads(&downloads); | 2740 DownloadManagerForShell(shell())->GetAllDownloads(&downloads); |
2756 ASSERT_EQ(1u, downloads.size()); | 2741 ASSERT_EQ(1u, downloads.size()); |
2757 | 2742 |
2758 EXPECT_EQ(FILE_PATH_LITERAL("foo"), | 2743 EXPECT_EQ(FILE_PATH_LITERAL("foo"), |
2759 downloads[0]->GetTargetFilePath().BaseName().value()); | 2744 downloads[0]->GetTargetFilePath().BaseName().value()); |
2760 } | 2745 } |
2761 | 2746 |
2762 } // namespace content | 2747 } // namespace content |
OLD | NEW |