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