| 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 <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/callback_helpers.h" | 10 #include "base/callback_helpers.h" |
| (...skipping 1503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1514 request_handler.StartServing(parameters); | 1514 request_handler.StartServing(parameters); |
| 1515 | 1515 |
| 1516 DownloadItem* download = StartDownloadAndReturnItem( | 1516 DownloadItem* download = StartDownloadAndReturnItem( |
| 1517 initiator_shell_for_resumption(), request_handler.url()); | 1517 initiator_shell_for_resumption(), request_handler.url()); |
| 1518 WaitForInterrupt(download); | 1518 WaitForInterrupt(download); |
| 1519 | 1519 |
| 1520 base::FilePath intermediate_path(download->GetFullPath()); | 1520 base::FilePath intermediate_path(download->GetFullPath()); |
| 1521 ASSERT_FALSE(intermediate_path.empty()); | 1521 ASSERT_FALSE(intermediate_path.empty()); |
| 1522 EXPECT_TRUE(base::PathExists(intermediate_path)); | 1522 EXPECT_TRUE(base::PathExists(intermediate_path)); |
| 1523 | 1523 |
| 1524 // Resume and remove download. We expect only a single OnDownloadCreated() | 1524 // Resume and cancel download. We expect only a single OnDownloadCreated() |
| 1525 // call, and that's for the second download created below. | 1525 // call, and that's for the second download created below. |
| 1526 MockDownloadManagerObserver dm_observer( | 1526 MockDownloadManagerObserver dm_observer( |
| 1527 DownloadManagerForShell(initiator_shell_for_resumption())); | 1527 DownloadManagerForShell(initiator_shell_for_resumption())); |
| 1528 EXPECT_CALL(dm_observer, OnDownloadCreated(_,_)).Times(1); | 1528 EXPECT_CALL(dm_observer, OnDownloadCreated(_,_)).Times(1); |
| 1529 | 1529 |
| 1530 TestRequestStartHandler request_start_handler; | 1530 TestRequestStartHandler request_start_handler; |
| 1531 parameters.on_start_handler = request_start_handler.GetOnStartHandler(); | 1531 parameters.on_start_handler = request_start_handler.GetOnStartHandler(); |
| 1532 request_handler.StartServing(parameters); | 1532 request_handler.StartServing(parameters); |
| 1533 | 1533 |
| 1534 PrepareToResume(); | 1534 PrepareToResume(); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1553 | 1553 |
| 1554 // Start the second download and wait until it's done. This exercises the | 1554 // Start the second download and wait until it's done. This exercises the |
| 1555 // entire downloads stack and effectively flushes all of our worker threads. | 1555 // entire downloads stack and effectively flushes all of our worker threads. |
| 1556 // We are testing whether the URL request created in the previous | 1556 // We are testing whether the URL request created in the previous |
| 1557 // DownloadItem::Resume() call reulted in a new download or not. | 1557 // DownloadItem::Resume() call reulted in a new download or not. |
| 1558 NavigateToURLAndWaitForDownload(shell(), request_handler.url(), | 1558 NavigateToURLAndWaitForDownload(shell(), request_handler.url(), |
| 1559 DownloadItem::COMPLETE); | 1559 DownloadItem::COMPLETE); |
| 1560 EXPECT_TRUE(EnsureNoPendingDownloads()); | 1560 EXPECT_TRUE(EnsureNoPendingDownloads()); |
| 1561 } | 1561 } |
| 1562 | 1562 |
| 1563 IN_PROC_BROWSER_TEST_P(DownloadResumptionContentTest, RemoveResumedDownload) { |
| 1564 TestDownloadRequestHandler::Parameters parameters = |
| 1565 TestDownloadRequestHandler::Parameters::WithSingleInterruption(); |
| 1566 TestDownloadRequestHandler request_handler; |
| 1567 request_handler.StartServing(parameters); |
| 1568 |
| 1569 DownloadItem* download = StartDownloadAndReturnItem( |
| 1570 initiator_shell_for_resumption(), request_handler.url()); |
| 1571 WaitForInterrupt(download); |
| 1572 |
| 1573 base::FilePath intermediate_path(download->GetFullPath()); |
| 1574 base::FilePath target_path(download->GetTargetFilePath()); |
| 1575 ASSERT_FALSE(intermediate_path.empty()); |
| 1576 EXPECT_TRUE(base::PathExists(intermediate_path)); |
| 1577 EXPECT_FALSE(base::PathExists(target_path)); |
| 1578 |
| 1579 // Resume and remove download. We don't expect OnDownloadCreated() calls. |
| 1580 MockDownloadManagerObserver dm_observer( |
| 1581 DownloadManagerForShell(initiator_shell_for_resumption())); |
| 1582 EXPECT_CALL(dm_observer, OnDownloadCreated(_, _)).Times(0); |
| 1583 |
| 1584 PrepareToResume(); |
| 1585 download->Resume(); |
| 1586 WaitForInProgress(download); |
| 1587 |
| 1588 download->Remove(); |
| 1589 |
| 1590 // The intermediate file should now be gone. |
| 1591 RunAllPendingInMessageLoop(BrowserThread::FILE); |
| 1592 RunAllPendingInMessageLoop(); |
| 1593 EXPECT_FALSE(base::PathExists(intermediate_path)); |
| 1594 EXPECT_FALSE(base::PathExists(target_path)); |
| 1595 EXPECT_TRUE(EnsureNoPendingDownloads()); |
| 1596 } |
| 1597 |
| 1598 IN_PROC_BROWSER_TEST_P(DownloadResumptionContentTest, CancelResumedDownload) { |
| 1599 TestDownloadRequestHandler::Parameters parameters = |
| 1600 TestDownloadRequestHandler::Parameters::WithSingleInterruption(); |
| 1601 TestDownloadRequestHandler request_handler; |
| 1602 request_handler.StartServing(parameters); |
| 1603 |
| 1604 DownloadItem* download = StartDownloadAndReturnItem( |
| 1605 initiator_shell_for_resumption(), request_handler.url()); |
| 1606 WaitForInterrupt(download); |
| 1607 |
| 1608 base::FilePath intermediate_path(download->GetFullPath()); |
| 1609 base::FilePath target_path(download->GetTargetFilePath()); |
| 1610 ASSERT_FALSE(intermediate_path.empty()); |
| 1611 EXPECT_TRUE(base::PathExists(intermediate_path)); |
| 1612 EXPECT_FALSE(base::PathExists(target_path)); |
| 1613 |
| 1614 // Resume and remove download. We don't expect OnDownloadCreated() calls. |
| 1615 MockDownloadManagerObserver dm_observer( |
| 1616 DownloadManagerForShell(initiator_shell_for_resumption())); |
| 1617 EXPECT_CALL(dm_observer, OnDownloadCreated(_, _)).Times(0); |
| 1618 |
| 1619 PrepareToResume(); |
| 1620 download->Resume(); |
| 1621 WaitForInProgress(download); |
| 1622 |
| 1623 download->Cancel(true); |
| 1624 |
| 1625 // The intermediate file should now be gone. |
| 1626 RunAllPendingInMessageLoop(BrowserThread::FILE); |
| 1627 RunAllPendingInMessageLoop(); |
| 1628 EXPECT_FALSE(base::PathExists(intermediate_path)); |
| 1629 EXPECT_FALSE(base::PathExists(target_path)); |
| 1630 EXPECT_TRUE(EnsureNoPendingDownloads()); |
| 1631 } |
| 1632 |
| 1563 // Check that the cookie policy is correctly updated when downloading a file | 1633 // Check that the cookie policy is correctly updated when downloading a file |
| 1564 // that redirects cross origin. | 1634 // that redirects cross origin. |
| 1565 IN_PROC_BROWSER_TEST_F(DownloadContentTest, CookiePolicy) { | 1635 IN_PROC_BROWSER_TEST_F(DownloadContentTest, CookiePolicy) { |
| 1566 net::EmbeddedTestServer origin_one; | 1636 net::EmbeddedTestServer origin_one; |
| 1567 net::EmbeddedTestServer origin_two; | 1637 net::EmbeddedTestServer origin_two; |
| 1568 ASSERT_TRUE(origin_one.Start()); | 1638 ASSERT_TRUE(origin_one.Start()); |
| 1569 ASSERT_TRUE(origin_two.Start()); | 1639 ASSERT_TRUE(origin_two.Start()); |
| 1570 | 1640 |
| 1571 // Block third-party cookies. | 1641 // Block third-party cookies. |
| 1572 ShellNetworkDelegate::SetAcceptAllCookies(false); | 1642 ShellNetworkDelegate::SetAcceptAllCookies(false); |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1698 | 1768 |
| 1699 // The file empty.bin is served with a MIME type of application/octet-stream. | 1769 // The file empty.bin is served with a MIME type of application/octet-stream. |
| 1700 // The content body is empty. Make sure this case is handled properly and we | 1770 // The content body is empty. Make sure this case is handled properly and we |
| 1701 // don't regress on http://crbug.com/320394. | 1771 // don't regress on http://crbug.com/320394. |
| 1702 IN_PROC_BROWSER_TEST_F(DownloadContentTest, DownloadGZipWithNoContent) { | 1772 IN_PROC_BROWSER_TEST_F(DownloadContentTest, DownloadGZipWithNoContent) { |
| 1703 GURL url = net::URLRequestMockHTTPJob::GetMockUrl("empty.bin"); | 1773 GURL url = net::URLRequestMockHTTPJob::GetMockUrl("empty.bin"); |
| 1704 NavigateToURLAndWaitForDownload(shell(), url, DownloadItem::COMPLETE); | 1774 NavigateToURLAndWaitForDownload(shell(), url, DownloadItem::COMPLETE); |
| 1705 // That's it. This should work without crashing. | 1775 // That's it. This should work without crashing. |
| 1706 } | 1776 } |
| 1707 | 1777 |
| 1778 // Make sure that sniffed MIME types are correctly passed through to the |
| 1779 // download item. |
| 1780 IN_PROC_BROWSER_TEST_F(DownloadContentTest, SniffedMimeType) { |
| 1781 GURL url = net::URLRequestMockHTTPJob::GetMockUrl("gzip-content.gz"); |
| 1782 DownloadItem* item = StartDownloadAndReturnItem(shell(), url); |
| 1783 WaitForCompletion(item); |
| 1784 |
| 1785 EXPECT_STREQ("application/x-gzip", item->GetMimeType().c_str()); |
| 1786 EXPECT_TRUE(item->GetOriginalMimeType().empty()); |
| 1787 } |
| 1788 |
| 1708 IN_PROC_BROWSER_TEST_F(DownloadContentTest, Spam) { | 1789 IN_PROC_BROWSER_TEST_F(DownloadContentTest, Spam) { |
| 1709 ASSERT_TRUE(embedded_test_server()->Start()); | 1790 ASSERT_TRUE(embedded_test_server()->Start()); |
| 1710 | 1791 |
| 1711 NavigateToURLAndWaitForDownload( | 1792 NavigateToURLAndWaitForDownload( |
| 1712 shell(), | 1793 shell(), |
| 1713 embedded_test_server()->GetURL( | 1794 embedded_test_server()->GetURL( |
| 1714 "/download/double-content-disposition.txt"), | 1795 "/download/double-content-disposition.txt"), |
| 1715 DownloadItem::COMPLETE); | 1796 DownloadItem::COMPLETE); |
| 1716 | 1797 |
| 1717 std::vector<DownloadItem*> downloads; | 1798 std::vector<DownloadItem*> downloads; |
| 1718 DownloadManagerForShell(shell())->GetAllDownloads(&downloads); | 1799 DownloadManagerForShell(shell())->GetAllDownloads(&downloads); |
| 1719 ASSERT_EQ(1u, downloads.size()); | 1800 ASSERT_EQ(1u, downloads.size()); |
| 1720 | 1801 |
| 1721 EXPECT_EQ(FILE_PATH_LITERAL("Jumboshrimp.txt"), | 1802 EXPECT_EQ(FILE_PATH_LITERAL("Jumboshrimp.txt"), |
| 1722 downloads[0]->GetTargetFilePath().BaseName().value()); | 1803 downloads[0]->GetTargetFilePath().BaseName().value()); |
| 1723 } | 1804 } |
| 1724 | 1805 |
| 1725 } // namespace content | 1806 } // namespace content |
| OLD | NEW |