| 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 "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 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 // Choice of navigation or direct fetch. Used by |DownloadFileCheckErrors()|. | 295 // Choice of navigation or direct fetch. Used by |DownloadFileCheckErrors()|. |
| 296 enum DownloadMethod { | 296 enum DownloadMethod { |
| 297 DOWNLOAD_NAVIGATE, | 297 DOWNLOAD_NAVIGATE, |
| 298 DOWNLOAD_DIRECT | 298 DOWNLOAD_DIRECT |
| 299 }; | 299 }; |
| 300 | 300 |
| 301 // Information passed in to |DownloadFileCheckErrors()|. | 301 // Information passed in to |DownloadFileCheckErrors()|. |
| 302 struct DownloadInfo { | 302 struct DownloadInfo { |
| 303 const char* url_name; // URL for the download. | 303 const char* url_name; // URL for the download. |
| 304 DownloadMethod download_method; // Navigation or Direct. | 304 DownloadMethod download_method; // Navigation or Direct. |
| 305 InterruptReason reason; // Download interrupt reason (NONE is OK). | 305 // Download interrupt reason (NONE is OK). |
| 306 content::DownloadInterruptReason reason; |
| 306 bool show_download_item; // True if the download item appears on the shelf. | 307 bool show_download_item; // True if the download item appears on the shelf. |
| 307 }; | 308 }; |
| 308 | 309 |
| 309 DownloadTest() { | 310 DownloadTest() { |
| 310 EnableDOMAutomation(); | 311 EnableDOMAutomation(); |
| 311 } | 312 } |
| 312 | 313 |
| 313 void SetUpOnMainThread() OVERRIDE { | 314 void SetUpOnMainThread() OVERRIDE { |
| 314 BrowserThread::PostTask( | 315 BrowserThread::PostTask( |
| 315 BrowserThread::IO, FROM_HERE, | 316 BrowserThread::IO, FROM_HERE, |
| (...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 690 std::string server_path = "files/downloads/"; | 691 std::string server_path = "files/downloads/"; |
| 691 server_path += download_info.url_name; | 692 server_path += download_info.url_name; |
| 692 GURL url = test_server()->GetURL(server_path); | 693 GURL url = test_server()->GetURL(server_path); |
| 693 ASSERT_TRUE(url.is_valid()); | 694 ASSERT_TRUE(url.is_valid()); |
| 694 | 695 |
| 695 DownloadManager* download_manager = DownloadManagerForBrowser(browser()); | 696 DownloadManager* download_manager = DownloadManagerForBrowser(browser()); |
| 696 scoped_ptr<DownloadTestObserver> observer( | 697 scoped_ptr<DownloadTestObserver> observer( |
| 697 new DownloadTestObserver( | 698 new DownloadTestObserver( |
| 698 download_manager, | 699 download_manager, |
| 699 1, | 700 1, |
| 700 download_info.reason == DOWNLOAD_INTERRUPT_REASON_NONE ? | 701 download_info.reason == content::DOWNLOAD_INTERRUPT_REASON_NONE ? |
| 701 DownloadItem::COMPLETE : // Really done | 702 DownloadItem::COMPLETE : // Really done |
| 702 DownloadItem::INTERRUPTED, | 703 DownloadItem::INTERRUPTED, |
| 703 true, // Bail on select file | 704 true, // Bail on select file |
| 704 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); | 705 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); |
| 705 | 706 |
| 706 if (download_info.download_method == DOWNLOAD_DIRECT) { | 707 if (download_info.download_method == DOWNLOAD_DIRECT) { |
| 707 // Go directly to download. | 708 // Go directly to download. |
| 708 WebContents* web_contents = browser()->GetSelectedWebContents(); | 709 WebContents* web_contents = browser()->GetSelectedWebContents(); |
| 709 ASSERT_TRUE(web_contents); | 710 ASSERT_TRUE(web_contents); |
| 710 DownloadSaveInfo save_info; | 711 DownloadSaveInfo save_info; |
| (...skipping 1290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2001 EXPECT_TRUE(waiter_context_menu->select_file_dialog_seen()); | 2002 EXPECT_TRUE(waiter_context_menu->select_file_dialog_seen()); |
| 2002 ASSERT_EQ(2u, download_items.size()); | 2003 ASSERT_EQ(2u, download_items.size()); |
| 2003 ASSERT_EQ(jpeg_url, download_items[0]->GetOriginalUrl()); | 2004 ASSERT_EQ(jpeg_url, download_items[0]->GetOriginalUrl()); |
| 2004 ASSERT_EQ(jpeg_url, download_items[1]->GetOriginalUrl()); | 2005 ASSERT_EQ(jpeg_url, download_items[1]->GetOriginalUrl()); |
| 2005 } | 2006 } |
| 2006 | 2007 |
| 2007 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadNavigate) { | 2008 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadNavigate) { |
| 2008 DownloadInfo download_info = { | 2009 DownloadInfo download_info = { |
| 2009 "a_zip_file.zip", | 2010 "a_zip_file.zip", |
| 2010 DOWNLOAD_NAVIGATE, | 2011 DOWNLOAD_NAVIGATE, |
| 2011 DOWNLOAD_INTERRUPT_REASON_NONE, | 2012 content::DOWNLOAD_INTERRUPT_REASON_NONE, |
| 2012 true | 2013 true |
| 2013 }; | 2014 }; |
| 2014 | 2015 |
| 2015 // Do initial setup. | 2016 // Do initial setup. |
| 2016 ASSERT_TRUE(InitialSetup(false)); | 2017 ASSERT_TRUE(InitialSetup(false)); |
| 2017 DownloadFileCheckErrors(download_info); | 2018 DownloadFileCheckErrors(download_info); |
| 2018 } | 2019 } |
| 2019 | 2020 |
| 2020 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadDirect) { | 2021 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadDirect) { |
| 2021 DownloadInfo download_info = { | 2022 DownloadInfo download_info = { |
| 2022 "a_zip_file.zip", | 2023 "a_zip_file.zip", |
| 2023 DOWNLOAD_DIRECT, | 2024 DOWNLOAD_DIRECT, |
| 2024 DOWNLOAD_INTERRUPT_REASON_NONE, | 2025 content::DOWNLOAD_INTERRUPT_REASON_NONE, |
| 2025 true | 2026 true |
| 2026 }; | 2027 }; |
| 2027 | 2028 |
| 2028 // Do initial setup. | 2029 // Do initial setup. |
| 2029 ASSERT_TRUE(InitialSetup(false)); | 2030 ASSERT_TRUE(InitialSetup(false)); |
| 2030 DownloadFileCheckErrors(download_info); | 2031 DownloadFileCheckErrors(download_info); |
| 2031 } | 2032 } |
| 2032 | 2033 |
| 2033 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadError404Direct) { | 2034 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadError404Direct) { |
| 2034 DownloadInfo download_info = { | 2035 DownloadInfo download_info = { |
| 2035 "there_IS_no_spoon.zip", | 2036 "there_IS_no_spoon.zip", |
| 2036 DOWNLOAD_DIRECT, | 2037 DOWNLOAD_DIRECT, |
| 2037 DOWNLOAD_INTERRUPT_REASON_SERVER_BAD_CONTENT, | 2038 content::DOWNLOAD_INTERRUPT_REASON_SERVER_BAD_CONTENT, |
| 2038 true | 2039 true |
| 2039 }; | 2040 }; |
| 2040 | 2041 |
| 2041 // Do initial setup. | 2042 // Do initial setup. |
| 2042 ASSERT_TRUE(InitialSetup(false)); | 2043 ASSERT_TRUE(InitialSetup(false)); |
| 2043 DownloadFileCheckErrors(download_info); | 2044 DownloadFileCheckErrors(download_info); |
| 2044 } | 2045 } |
| 2045 | 2046 |
| 2046 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadError404Navigate) { | 2047 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadError404Navigate) { |
| 2047 DownloadInfo download_info = { | 2048 DownloadInfo download_info = { |
| 2048 "there_IS_no_spoon.zip", | 2049 "there_IS_no_spoon.zip", |
| 2049 DOWNLOAD_NAVIGATE, | 2050 DOWNLOAD_NAVIGATE, |
| 2050 DOWNLOAD_INTERRUPT_REASON_SERVER_BAD_CONTENT, | 2051 content::DOWNLOAD_INTERRUPT_REASON_SERVER_BAD_CONTENT, |
| 2051 false | 2052 false |
| 2052 }; | 2053 }; |
| 2053 | 2054 |
| 2054 // Do initial setup. | 2055 // Do initial setup. |
| 2055 ASSERT_TRUE(InitialSetup(false)); | 2056 ASSERT_TRUE(InitialSetup(false)); |
| 2056 DownloadFileCheckErrors(download_info); | 2057 DownloadFileCheckErrors(download_info); |
| 2057 } | 2058 } |
| 2058 | 2059 |
| 2059 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadError400Direct) { | 2060 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadError400Direct) { |
| 2060 DownloadInfo download_info = { | 2061 DownloadInfo download_info = { |
| 2061 "zip_file_not_found.zip", | 2062 "zip_file_not_found.zip", |
| 2062 DOWNLOAD_DIRECT, | 2063 DOWNLOAD_DIRECT, |
| 2063 DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED, | 2064 content::DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED, |
| 2064 true | 2065 true |
| 2065 }; | 2066 }; |
| 2066 | 2067 |
| 2067 // Do initial setup. | 2068 // Do initial setup. |
| 2068 ASSERT_TRUE(InitialSetup(false)); | 2069 ASSERT_TRUE(InitialSetup(false)); |
| 2069 DownloadFileCheckErrors(download_info); | 2070 DownloadFileCheckErrors(download_info); |
| 2070 } | 2071 } |
| 2071 | 2072 |
| 2072 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadError400Navigate) { | 2073 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadError400Navigate) { |
| 2073 DownloadInfo download_info = { | 2074 DownloadInfo download_info = { |
| 2074 "zip_file_not_found.zip", | 2075 "zip_file_not_found.zip", |
| 2075 DOWNLOAD_NAVIGATE, | 2076 DOWNLOAD_NAVIGATE, |
| 2076 DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED, | 2077 content::DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED, |
| 2077 false | 2078 false |
| 2078 }; | 2079 }; |
| 2079 | 2080 |
| 2080 // Do initial setup. | 2081 // Do initial setup. |
| 2081 ASSERT_TRUE(InitialSetup(false)); | 2082 ASSERT_TRUE(InitialSetup(false)); |
| 2082 DownloadFileCheckErrors(download_info); | 2083 DownloadFileCheckErrors(download_info); |
| 2083 } | 2084 } |
| OLD | NEW |