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

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

Issue 9570005: Added callback to DownloadUrl() so we can find download failures. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merged with trunk Created 8 years, 9 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
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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/bind_helpers.h" 6 #include "base/bind_helpers.h"
7 #include "base/file_path.h" 7 #include "base/file_path.h"
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
(...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after
640 return true; 640 return true;
641 } 641 }
642 642
643 // Attempts to download a file, based on information in |download_info|. 643 // Attempts to download a file, based on information in |download_info|.
644 void DownloadFileCheckErrors(const DownloadInfo& download_info) { 644 void DownloadFileCheckErrors(const DownloadInfo& download_info) {
645 ASSERT_TRUE(test_server()->Start()); 645 ASSERT_TRUE(test_server()->Start());
646 std::vector<DownloadItem*> download_items; 646 std::vector<DownloadItem*> download_items;
647 GetDownloads(browser(), &download_items); 647 GetDownloads(browser(), &download_items);
648 ASSERT_TRUE(download_items.empty()); 648 ASSERT_TRUE(download_items.empty());
649 649
650 NullSelectFile(browser());
651
650 std::string server_path = "files/downloads/"; 652 std::string server_path = "files/downloads/";
651 server_path += download_info.url_name; 653 server_path += download_info.url_name;
652 GURL url = test_server()->GetURL(server_path); 654 GURL url = test_server()->GetURL(server_path);
653 ASSERT_TRUE(url.is_valid()); 655 ASSERT_TRUE(url.is_valid());
654 656
655 DownloadManager* download_manager = DownloadManagerForBrowser(browser()); 657 DownloadManager* download_manager = DownloadManagerForBrowser(browser());
656 scoped_ptr<DownloadTestObserver> observer( 658 scoped_ptr<DownloadTestObserver> observer(
657 new DownloadTestObserverTerminal( 659 new DownloadTestObserverTerminal(
658 download_manager, 660 download_manager,
659 1, 661 1,
660 true, // Bail on select file 662 false, // Don't bail on select file.
661 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); 663 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL));
662 664
663 if (download_info.download_method == DOWNLOAD_DIRECT) { 665 if (download_info.download_method == DOWNLOAD_DIRECT) {
664 // Go directly to download. 666 // Go directly to download.
665 WebContents* web_contents = browser()->GetSelectedWebContents(); 667 WebContents* web_contents = browser()->GetSelectedWebContents();
666 ASSERT_TRUE(web_contents); 668 ASSERT_TRUE(web_contents);
667 DownloadSaveInfo save_info; 669 DownloadSaveInfo save_info;
668 save_info.prompt_for_save_location = false; 670 save_info.prompt_for_save_location = false;
669 671
672 scoped_refptr<DownloadTestItemCreationObserver> creation_observer(
673 new DownloadTestItemCreationObserver);
674
670 DownloadManagerForBrowser(browser())->DownloadUrl( 675 DownloadManagerForBrowser(browser())->DownloadUrl(
671 url, GURL(""), "", false, -1, save_info, web_contents); 676 url, GURL(""), "", false, -1, save_info, web_contents,
677 creation_observer->callback());
678
679 // Wait until the item is created, or we have determined that it
680 // won't be.
681 creation_observer->WaitForDownloadItemCreation();
682
683 int32 invalid_id = content::DownloadId::Invalid().local();
684 EXPECT_EQ(download_info.show_download_item,
685 creation_observer->succeeded());
686 if (download_info.show_download_item) {
687 EXPECT_EQ(net::OK, creation_observer->error());
688 EXPECT_NE(invalid_id, creation_observer->download_id().local());
689 } else {
690 EXPECT_NE(net::OK, creation_observer->error());
691 EXPECT_EQ(invalid_id, creation_observer->download_id().local());
692 }
672 } else { 693 } else {
673 // Navigate to URL normally, wait until done. 694 // Navigate to URL normally, wait until done.
674 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(browser(), 695 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(browser(),
675 url, 696 url,
676 1); 697 1);
677 } 698 }
678 699
679 if (download_info.show_download_item) { 700 if (download_info.show_download_item) {
680 observer->WaitForFinished(); 701 observer->WaitForFinished();
681 DownloadItem::DownloadState final_state = 702 DownloadItem::DownloadState final_state =
(...skipping 1111 matching lines...) Expand 10 before | Expand all | Expand 10 after
1793 ASSERT_TRUE(web_contents); 1814 ASSERT_TRUE(web_contents);
1794 1815
1795 DownloadTestObserver* observer( 1816 DownloadTestObserver* observer(
1796 new DownloadTestObserverTerminal( 1817 new DownloadTestObserverTerminal(
1797 DownloadManagerForBrowser(browser()), 1, 1818 DownloadManagerForBrowser(browser()), 1,
1798 false, // Ignore select file. 1819 false, // Ignore select file.
1799 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); 1820 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL));
1800 DownloadSaveInfo save_info; 1821 DownloadSaveInfo save_info;
1801 save_info.prompt_for_save_location = true; 1822 save_info.prompt_for_save_location = true;
1802 DownloadManagerForBrowser(browser())->DownloadUrl( 1823 DownloadManagerForBrowser(browser())->DownloadUrl(
1803 url, GURL(""), "", false, -1, save_info, web_contents); 1824 url, GURL(""), "", false, -1, save_info, web_contents,
1825 DownloadManager::OnStartedCallback());
1804 observer->WaitForFinished(); 1826 observer->WaitForFinished();
1805 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); 1827 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE));
1806 CheckDownloadStates(1, DownloadItem::COMPLETE); 1828 CheckDownloadStates(1, DownloadItem::COMPLETE);
1807 EXPECT_TRUE(observer->select_file_dialog_seen()); 1829 EXPECT_TRUE(observer->select_file_dialog_seen());
1808 1830
1809 // Check state. 1831 // Check state.
1810 EXPECT_EQ(1, browser()->tab_count()); 1832 EXPECT_EQ(1, browser()->tab_count());
1811 ASSERT_TRUE(CheckDownload(browser(), file, file)); 1833 ASSERT_TRUE(CheckDownload(browser(), file, file));
1812 CheckDownloadUI(browser(), true, true, file); 1834 CheckDownloadUI(browser(), true, true, file);
1813 } 1835 }
1814 1836
1815 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadUrlToPath) { 1837 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadUrlToPath) {
1816 ASSERT_TRUE(InitialSetup(false)); 1838 ASSERT_TRUE(InitialSetup(false));
1817 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); 1839 FilePath file(FILE_PATH_LITERAL("download-test1.lib"));
1818 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); 1840 GURL url(URLRequestMockHTTPJob::GetMockUrl(file));
1819 1841
1820 WebContents* web_contents = browser()->GetSelectedWebContents(); 1842 WebContents* web_contents = browser()->GetSelectedWebContents();
1821 ASSERT_TRUE(web_contents); 1843 ASSERT_TRUE(web_contents);
1822 1844
1823 ScopedTempDir other_directory; 1845 ScopedTempDir other_directory;
1824 ASSERT_TRUE(other_directory.CreateUniqueTempDir()); 1846 ASSERT_TRUE(other_directory.CreateUniqueTempDir());
1825 FilePath target_file_full_path 1847 FilePath target_file_full_path
1826 = other_directory.path().Append(file.BaseName()); 1848 = other_directory.path().Append(file.BaseName());
1827 DownloadSaveInfo save_info; 1849 DownloadSaveInfo save_info;
1828 save_info.file_path = target_file_full_path; 1850 save_info.file_path = target_file_full_path;
1829 1851
1830 DownloadTestObserver* observer(CreateWaiter(browser(), 1)); 1852 DownloadTestObserver* observer(CreateWaiter(browser(), 1));
1831 DownloadManagerForBrowser(browser())->DownloadUrl( 1853 DownloadManagerForBrowser(browser())->DownloadUrl(
1832 url, GURL(""), "", false, -1, save_info, web_contents); 1854 url, GURL(""), "", false, -1, save_info, web_contents,
1855 DownloadManager::OnStartedCallback());
1833 observer->WaitForFinished(); 1856 observer->WaitForFinished();
1834 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); 1857 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE));
1835 1858
1836 // Check state. 1859 // Check state.
1837 EXPECT_EQ(1, browser()->tab_count()); 1860 EXPECT_EQ(1, browser()->tab_count());
1838 ASSERT_TRUE(CheckDownloadFullPaths(browser(), 1861 ASSERT_TRUE(CheckDownloadFullPaths(browser(),
1839 target_file_full_path, 1862 target_file_full_path,
1840 OriginFile(file))); 1863 OriginFile(file)));
1841 1864
1842 // Temporary downloads won't be visible. 1865 // Temporary downloads won't be visible.
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
2054 "zip_file_not_found.zip", 2077 "zip_file_not_found.zip",
2055 DOWNLOAD_NAVIGATE, 2078 DOWNLOAD_NAVIGATE,
2056 content::DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED, 2079 content::DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED,
2057 false 2080 false
2058 }; 2081 };
2059 2082
2060 // Do initial setup. 2083 // Do initial setup.
2061 ASSERT_TRUE(InitialSetup(false)); 2084 ASSERT_TRUE(InitialSetup(false));
2062 DownloadFileCheckErrors(download_info); 2085 DownloadFileCheckErrors(download_info);
2063 } 2086 }
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/imageburner/burn_manager.cc ('k') | chrome/browser/download/download_test_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698