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 #include <sstream> | 5 #include <sstream> |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/file_path.h" | 9 #include "base/file_path.h" |
10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
(...skipping 778 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
789 if (info.download_info.show_download_item) | 789 if (info.download_info.show_download_item) |
790 EXPECT_TRUE(injector->HadFile(GURL(info.error_info.url))) << s.str(); | 790 EXPECT_TRUE(injector->HadFile(GURL(info.error_info.url))) << s.str(); |
791 } | 791 } |
792 | 792 |
793 void DownloadInsertFilesErrorCheckErrors(size_t count, | 793 void DownloadInsertFilesErrorCheckErrors(size_t count, |
794 FileErrorInjectInfo* info) { | 794 FileErrorInjectInfo* info) { |
795 DownloadFilesCheckErrorsSetup(); | 795 DownloadFilesCheckErrorsSetup(); |
796 | 796 |
797 // Set up file failures. | 797 // Set up file failures. |
798 scoped_refptr<content::TestFileErrorInjector> injector( | 798 scoped_refptr<content::TestFileErrorInjector> injector( |
799 content::TestFileErrorInjector::Create()); | 799 content::TestFileErrorInjector::Create( |
| 800 DownloadManagerForBrowser(browser()))); |
800 | 801 |
801 for (size_t i = 0; i < count; ++i) { | 802 for (size_t i = 0; i < count; ++i) { |
802 // Set up the full URL, for download file tracking. | 803 // Set up the full URL, for download file tracking. |
803 std::string server_path = "files/downloads/"; | 804 std::string server_path = "files/downloads/"; |
804 server_path += info[i].download_info.url_name; | 805 server_path += info[i].download_info.url_name; |
805 GURL url = test_server()->GetURL(server_path); | 806 GURL url = test_server()->GetURL(server_path); |
806 info[i].error_info.url = url.spec(); | 807 info[i].error_info.url = url.spec(); |
807 | 808 |
808 DownloadInsertFilesErrorCheckErrorsLoopBody(injector, info[i], i); | 809 DownloadInsertFilesErrorCheckErrorsLoopBody(injector, info[i], i); |
809 } | 810 } |
(...skipping 712 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1522 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | 1523 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); |
1523 CheckDownloadStates(1, DownloadItem::COMPLETE); | 1524 CheckDownloadStates(1, DownloadItem::COMPLETE); |
1524 | 1525 |
1525 // Confirm the downloaded data exists. | 1526 // Confirm the downloaded data exists. |
1526 FilePath downloaded_file = GetDownloadDirectory(browser()); | 1527 FilePath downloaded_file = GetDownloadDirectory(browser()); |
1527 downloaded_file = downloaded_file.Append(FILE_PATH_LITERAL("a_red_dot.png")); | 1528 downloaded_file = downloaded_file.Append(FILE_PATH_LITERAL("a_red_dot.png")); |
1528 EXPECT_TRUE(file_util::PathExists(downloaded_file)); | 1529 EXPECT_TRUE(file_util::PathExists(downloaded_file)); |
1529 } | 1530 } |
1530 | 1531 |
1531 // Test to make sure auto-open works. | 1532 // Test to make sure auto-open works. |
1532 // Feel free to re-disable this test if it starts failing again, but please see | |
1533 // if the failure looks like http://crbug.com/118159 and use that bug if so. | |
1534 IN_PROC_BROWSER_TEST_F(DownloadTest, AutoOpen) { | 1533 IN_PROC_BROWSER_TEST_F(DownloadTest, AutoOpen) { |
1535 FilePath file(FILE_PATH_LITERAL("download-autoopen.txt")); | 1534 FilePath file(FILE_PATH_LITERAL("download-autoopen.txt")); |
1536 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); | 1535 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); |
1537 | 1536 |
1538 ASSERT_TRUE( | 1537 ASSERT_TRUE( |
1539 GetDownloadPrefs(browser())->EnableAutoOpenBasedOnExtension(file)); | 1538 GetDownloadPrefs(browser())->EnableAutoOpenBasedOnExtension(file)); |
1540 | 1539 |
1541 // Mock out external opening on all downloads until end of test. | 1540 // Mock out external opening on all downloads until end of test. |
1542 MockDownloadOpeningObserver observer( | 1541 MockDownloadOpeningObserver observer(DownloadManagerForBrowser(browser())); |
1543 DownloadManagerForBrowser(browser())); | |
1544 | 1542 |
1545 DownloadAndWait(browser(), url); | 1543 DownloadAndWait(browser(), url); |
1546 | 1544 |
1547 // Find the download and confirm it was opened. | 1545 // Find the download and confirm it was opened. |
1548 std::vector<DownloadItem*> downloads; | 1546 std::vector<DownloadItem*> downloads; |
1549 DownloadManagerForBrowser(browser())->GetAllDownloads(&downloads); | 1547 DownloadManagerForBrowser(browser())->GetAllDownloads(&downloads); |
1550 ASSERT_EQ(1u, downloads.size()); | 1548 ASSERT_EQ(1u, downloads.size()); |
1551 EXPECT_EQ(DownloadItem::COMPLETE, downloads[0]->GetState()); | 1549 EXPECT_EQ(DownloadItem::COMPLETE, downloads[0]->GetState()); |
1552 EXPECT_TRUE(downloads[0]->GetOpened()); | 1550 |
| 1551 // Unfortunately, this will block forever, causing a timeout, if |
| 1552 // the download is never opened. |
| 1553 content::DownloadUpdatedObserver( |
| 1554 downloads[0], base::Bind(&WasAutoOpened)).WaitForEvent(); |
| 1555 EXPECT_TRUE(downloads[0]->GetOpened()); // Confirm it anyway. |
1553 | 1556 |
1554 // As long as we're here, confirmed everything else is good. | 1557 // As long as we're here, confirmed everything else is good. |
1555 EXPECT_EQ(1, browser()->tab_count()); | 1558 EXPECT_EQ(1, browser()->tab_count()); |
1556 CheckDownload(browser(), file, file); | 1559 CheckDownload(browser(), file, file); |
1557 // Download shelf should close. Download panel stays open on ChromeOS. | 1560 // Download shelf should close. Download panel stays open on ChromeOS. |
1558 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); | 1561 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); |
1559 } | 1562 } |
1560 | 1563 |
1561 // Download an extension. Expect a dangerous download warning. | 1564 // Download an extension. Expect a dangerous download warning. |
1562 // Deny the download. | 1565 // Deny the download. |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1644 observer->WaitForFinished(); | 1647 observer->WaitForFinished(); |
1645 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | 1648 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); |
1646 CheckDownloadStates(1, DownloadItem::COMPLETE); | 1649 CheckDownloadStates(1, DownloadItem::COMPLETE); |
1647 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); | 1650 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); |
1648 | 1651 |
1649 // Download shelf should close from auto-open. | 1652 // Download shelf should close from auto-open. |
1650 content::DownloadManager::DownloadVector downloads; | 1653 content::DownloadManager::DownloadVector downloads; |
1651 DownloadManagerForBrowser(browser())->GetAllDownloads(&downloads); | 1654 DownloadManagerForBrowser(browser())->GetAllDownloads(&downloads); |
1652 ASSERT_EQ(1u, downloads.size()); | 1655 ASSERT_EQ(1u, downloads.size()); |
1653 content::DownloadUpdatedObserver( | 1656 content::DownloadUpdatedObserver( |
1654 downloads[0], base::Bind(WasAutoOpened)).WaitForEvent(); | 1657 downloads[0], base::Bind(&WasAutoOpened)).WaitForEvent(); |
1655 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); | 1658 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); |
1656 | 1659 |
1657 // Check that the extension was installed. | 1660 // Check that the extension was installed. |
1658 ExtensionService* extension_service = | 1661 ExtensionService* extension_service = |
1659 browser()->profile()->GetExtensionService(); | 1662 browser()->profile()->GetExtensionService(); |
1660 ASSERT_TRUE(extension_service->GetExtensionById(kGoodCrxId, false)); | 1663 ASSERT_TRUE(extension_service->GetExtensionById(kGoodCrxId, false)); |
1661 } | 1664 } |
1662 | 1665 |
1663 // Test installing a CRX that fails integrity checks. | 1666 // Test installing a CRX that fails integrity checks. |
1664 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxInvalid) { | 1667 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxInvalid) { |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1706 observer->WaitForFinished(); | 1709 observer->WaitForFinished(); |
1707 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | 1710 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); |
1708 CheckDownloadStates(1, DownloadItem::COMPLETE); | 1711 CheckDownloadStates(1, DownloadItem::COMPLETE); |
1709 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); | 1712 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); |
1710 | 1713 |
1711 // Download shelf should close from auto-open. | 1714 // Download shelf should close from auto-open. |
1712 content::DownloadManager::DownloadVector downloads; | 1715 content::DownloadManager::DownloadVector downloads; |
1713 DownloadManagerForBrowser(browser())->GetAllDownloads(&downloads); | 1716 DownloadManagerForBrowser(browser())->GetAllDownloads(&downloads); |
1714 ASSERT_EQ(1u, downloads.size()); | 1717 ASSERT_EQ(1u, downloads.size()); |
1715 content::DownloadUpdatedObserver( | 1718 content::DownloadUpdatedObserver( |
1716 downloads[0], base::Bind(WasAutoOpened)).WaitForEvent(); | 1719 downloads[0], base::Bind(&WasAutoOpened)).WaitForEvent(); |
1717 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); | 1720 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); |
1718 | 1721 |
1719 // Check that the extension was installed. | 1722 // Check that the extension was installed. |
1720 ExtensionService* extension_service = | 1723 ExtensionService* extension_service = |
1721 browser()->profile()->GetExtensionService(); | 1724 browser()->profile()->GetExtensionService(); |
1722 ASSERT_TRUE(extension_service->GetExtensionById(kLargeThemeCrxId, false)); | 1725 ASSERT_TRUE(extension_service->GetExtensionById(kLargeThemeCrxId, false)); |
1723 } | 1726 } |
1724 | 1727 |
1725 // Tests for download initiation functions. | 1728 // Tests for download initiation functions. |
1726 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadUrl) { | 1729 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadUrl) { |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1777 DownloadManagerForBrowser(browser())->DownloadUrl(params.Pass()); | 1780 DownloadManagerForBrowser(browser())->DownloadUrl(params.Pass()); |
1778 observer->WaitForFinished(); | 1781 observer->WaitForFinished(); |
1779 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | 1782 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); |
1780 | 1783 |
1781 // Check state. | 1784 // Check state. |
1782 EXPECT_EQ(1, browser()->tab_count()); | 1785 EXPECT_EQ(1, browser()->tab_count()); |
1783 ASSERT_TRUE(CheckDownloadFullPaths(browser(), | 1786 ASSERT_TRUE(CheckDownloadFullPaths(browser(), |
1784 target_file_full_path, | 1787 target_file_full_path, |
1785 OriginFile(file))); | 1788 OriginFile(file))); |
1786 | 1789 |
1787 // Temporary downloads won't be visible. | 1790 // Temporary are treated as auto-opened, and after that open won't be |
| 1791 // visible; wait for auto-open and confirm not visible. |
| 1792 std::vector<DownloadItem*> downloads; |
| 1793 DownloadManagerForBrowser(browser())->GetAllDownloads(&downloads); |
| 1794 ASSERT_EQ(1u, downloads.size()); |
| 1795 content::DownloadUpdatedObserver( |
| 1796 downloads[0], base::Bind(&WasAutoOpened)).WaitForEvent(); |
1788 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); | 1797 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); |
1789 } | 1798 } |
1790 | 1799 |
1791 IN_PROC_BROWSER_TEST_F(DownloadTest, SavePageNonHTMLViaGet) { | 1800 IN_PROC_BROWSER_TEST_F(DownloadTest, SavePageNonHTMLViaGet) { |
1792 // Do initial setup. | 1801 // Do initial setup. |
1793 ASSERT_TRUE(test_server()->Start()); | 1802 ASSERT_TRUE(test_server()->Start()); |
1794 EnableFileChooser(true); | 1803 EnableFileChooser(true); |
1795 std::vector<DownloadItem*> download_items; | 1804 std::vector<DownloadItem*> download_items; |
1796 GetDownloads(browser(), &download_items); | 1805 GetDownloads(browser(), &download_items); |
1797 ASSERT_TRUE(download_items.empty()); | 1806 ASSERT_TRUE(download_items.empty()); |
(...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2277 scoped_ptr<DownloadUrlParameters> params( | 2286 scoped_ptr<DownloadUrlParameters> params( |
2278 DownloadUrlParameters::FromWebContents( | 2287 DownloadUrlParameters::FromWebContents( |
2279 web_contents, url, save_info.Pass())); | 2288 web_contents, url, save_info.Pass())); |
2280 params->set_callback(base::Bind(&SetHiddenDownloadCallback)); | 2289 params->set_callback(base::Bind(&SetHiddenDownloadCallback)); |
2281 download_manager->DownloadUrl(params.Pass()); | 2290 download_manager->DownloadUrl(params.Pass()); |
2282 observer->WaitForFinished(); | 2291 observer->WaitForFinished(); |
2283 | 2292 |
2284 // Verify that download shelf is not shown. | 2293 // Verify that download shelf is not shown. |
2285 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); | 2294 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); |
2286 } | 2295 } |
OLD | NEW |