Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(442)

Side by Side Diff: chrome/browser/download/download_browsertest.cc

Issue 10912173: Replace the DownloadFileManager with direct ownership of DownloadFileImpl (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync'd to LKGR (r162700) Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | content/browser/browser_context.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « no previous file | content/browser/browser_context.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698