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 "chrome/browser/download/download_browsertest.h" | 5 #include "chrome/browser/download/download_browsertest.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 #include <set> | 10 #include <set> |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 #include "content/public/test/test_navigation_observer.h" | 105 #include "content/public/test/test_navigation_observer.h" |
106 #include "extensions/browser/extension_dialog_auto_confirm.h" | 106 #include "extensions/browser/extension_dialog_auto_confirm.h" |
107 #include "extensions/browser/extension_system.h" | 107 #include "extensions/browser/extension_system.h" |
108 #include "net/base/filename_util.h" | 108 #include "net/base/filename_util.h" |
109 #include "net/dns/mock_host_resolver.h" | 109 #include "net/dns/mock_host_resolver.h" |
110 #include "net/test/embedded_test_server/embedded_test_server.h" | 110 #include "net/test/embedded_test_server/embedded_test_server.h" |
111 #include "net/test/embedded_test_server/http_request.h" | 111 #include "net/test/embedded_test_server/http_request.h" |
112 #include "net/test/embedded_test_server/http_response.h" | 112 #include "net/test/embedded_test_server/http_response.h" |
113 #include "net/test/url_request/url_request_mock_http_job.h" | 113 #include "net/test/url_request/url_request_mock_http_job.h" |
114 #include "net/test/url_request/url_request_slow_download_job.h" | 114 #include "net/test/url_request/url_request_slow_download_job.h" |
| 115 #include "net/traffic_annotation/network_traffic_annotation_test_helper.h" |
115 #include "testing/gtest/include/gtest/gtest.h" | 116 #include "testing/gtest/include/gtest/gtest.h" |
116 #include "ui/base/l10n/l10n_util.h" | 117 #include "ui/base/l10n/l10n_util.h" |
117 #include "ui/base/page_transition_types.h" | 118 #include "ui/base/page_transition_types.h" |
118 | 119 |
119 #if defined(FULL_SAFE_BROWSING) | 120 #if defined(FULL_SAFE_BROWSING) |
120 #include "chrome/browser/safe_browsing/download_feedback_service.h" | 121 #include "chrome/browser/safe_browsing/download_feedback_service.h" |
121 #include "chrome/browser/safe_browsing/download_protection_service.h" | 122 #include "chrome/browser/safe_browsing/download_protection_service.h" |
122 #include "chrome/browser/safe_browsing/test_safe_browsing_service.h" | 123 #include "chrome/browser/safe_browsing/test_safe_browsing_service.h" |
123 #endif | 124 #endif |
124 | 125 |
(...skipping 758 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
883 | 884 |
884 if (download_info.download_method == DOWNLOAD_DIRECT) { | 885 if (download_info.download_method == DOWNLOAD_DIRECT) { |
885 // Go directly to download. Don't wait for navigation. | 886 // Go directly to download. Don't wait for navigation. |
886 scoped_refptr<content::DownloadTestItemCreationObserver> | 887 scoped_refptr<content::DownloadTestItemCreationObserver> |
887 creation_observer(new content::DownloadTestItemCreationObserver); | 888 creation_observer(new content::DownloadTestItemCreationObserver); |
888 | 889 |
889 std::unique_ptr<DownloadUrlParameters> params( | 890 std::unique_ptr<DownloadUrlParameters> params( |
890 DownloadUrlParameters::CreateForWebContentsMainFrame( | 891 DownloadUrlParameters::CreateForWebContentsMainFrame( |
891 web_contents, starting_url)); | 892 web_contents, starting_url)); |
892 params->set_callback(creation_observer->callback()); | 893 params->set_callback(creation_observer->callback()); |
893 DownloadManagerForBrowser(browser())->DownloadUrl(std::move(params)); | 894 DownloadManagerForBrowser(browser())->DownloadUrl( |
| 895 std::move(params), TRAFFIC_ANNOTATION_FOR_TESTS); |
894 | 896 |
895 // Wait until the item is created, or we have determined that it | 897 // Wait until the item is created, or we have determined that it |
896 // won't be. | 898 // won't be. |
897 creation_observer->WaitForDownloadItemCreation(); | 899 creation_observer->WaitForDownloadItemCreation(); |
898 | 900 |
899 EXPECT_NE(content::DownloadItem::kInvalidId, | 901 EXPECT_NE(content::DownloadItem::kInvalidId, |
900 creation_observer->download_id()); | 902 creation_observer->download_id()); |
901 } else { | 903 } else { |
902 // Navigate to URL normally, wait until done. | 904 // Navigate to URL normally, wait until done. |
903 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( | 905 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( |
(...skipping 812 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1716 ASSERT_TRUE(new_tab); | 1718 ASSERT_TRUE(new_tab); |
1717 ASSERT_TRUE(new_tab->GetController().IsInitialNavigation()); | 1719 ASSERT_TRUE(new_tab->GetController().IsInitialNavigation()); |
1718 browser()->tab_strip_model()->AppendWebContents(new_tab, true); | 1720 browser()->tab_strip_model()->AppendWebContents(new_tab, true); |
1719 EXPECT_EQ(2, browser()->tab_strip_model()->count()); | 1721 EXPECT_EQ(2, browser()->tab_strip_model()->count()); |
1720 | 1722 |
1721 // Download a file in that new tab, having it open a file picker | 1723 // Download a file in that new tab, having it open a file picker |
1722 std::unique_ptr<DownloadUrlParameters> params( | 1724 std::unique_ptr<DownloadUrlParameters> params( |
1723 DownloadUrlParameters::CreateForWebContentsMainFrame( | 1725 DownloadUrlParameters::CreateForWebContentsMainFrame( |
1724 new_tab, slow_download_url)); | 1726 new_tab, slow_download_url)); |
1725 params->set_prompt(true); | 1727 params->set_prompt(true); |
1726 manager->DownloadUrl(std::move(params)); | 1728 manager->DownloadUrl(std::move(params), TRAFFIC_ANNOTATION_FOR_TESTS); |
1727 observer->WaitForFinished(); | 1729 observer->WaitForFinished(); |
1728 | 1730 |
1729 DownloadManager::DownloadVector items; | 1731 DownloadManager::DownloadVector items; |
1730 manager->GetAllDownloads(&items); | 1732 manager->GetAllDownloads(&items); |
1731 ASSERT_NE(0u, items.size()); | 1733 ASSERT_NE(0u, items.size()); |
1732 DownloadItem* item = items[0]; | 1734 DownloadItem* item = items[0]; |
1733 EXPECT_TRUE(item != nullptr); | 1735 EXPECT_TRUE(item != nullptr); |
1734 | 1736 |
1735 // When the download is canceled, the second tab should close. | 1737 // When the download is canceled, the second tab should close. |
1736 EXPECT_EQ(item->GetState(), DownloadItem::CANCELLED); | 1738 EXPECT_EQ(item->GetState(), DownloadItem::CANCELLED); |
(...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2193 ASSERT_TRUE(web_contents); | 2195 ASSERT_TRUE(web_contents); |
2194 | 2196 |
2195 content::DownloadTestObserver* observer( | 2197 content::DownloadTestObserver* observer( |
2196 new content::DownloadTestObserverTerminal( | 2198 new content::DownloadTestObserverTerminal( |
2197 DownloadManagerForBrowser(browser()), 1, | 2199 DownloadManagerForBrowser(browser()), 1, |
2198 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); | 2200 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); |
2199 std::unique_ptr<DownloadUrlParameters> params( | 2201 std::unique_ptr<DownloadUrlParameters> params( |
2200 DownloadUrlParameters::CreateForWebContentsMainFrame( | 2202 DownloadUrlParameters::CreateForWebContentsMainFrame( |
2201 web_contents, url)); | 2203 web_contents, url)); |
2202 params->set_prompt(true); | 2204 params->set_prompt(true); |
2203 DownloadManagerForBrowser(browser())->DownloadUrl(std::move(params)); | 2205 DownloadManagerForBrowser(browser())->DownloadUrl( |
| 2206 std::move(params), TRAFFIC_ANNOTATION_FOR_TESTS); |
2204 observer->WaitForFinished(); | 2207 observer->WaitForFinished(); |
2205 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | 2208 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); |
2206 CheckDownloadStates(1, DownloadItem::COMPLETE); | 2209 CheckDownloadStates(1, DownloadItem::COMPLETE); |
2207 EXPECT_TRUE(DidShowFileChooser()); | 2210 EXPECT_TRUE(DidShowFileChooser()); |
2208 | 2211 |
2209 // Check state. | 2212 // Check state. |
2210 base::FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 2213 base::FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
2211 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 2214 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
2212 ASSERT_TRUE(CheckDownload(browser(), file, file)); | 2215 ASSERT_TRUE(CheckDownload(browser(), file, file)); |
2213 } | 2216 } |
2214 | 2217 |
2215 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadUrlToPath) { | 2218 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadUrlToPath) { |
2216 GURL url(URLRequestMockHTTPJob::GetMockUrl(kDownloadTest1Path)); | 2219 GURL url(URLRequestMockHTTPJob::GetMockUrl(kDownloadTest1Path)); |
2217 | 2220 |
2218 WebContents* web_contents = | 2221 WebContents* web_contents = |
2219 browser()->tab_strip_model()->GetActiveWebContents(); | 2222 browser()->tab_strip_model()->GetActiveWebContents(); |
2220 ASSERT_TRUE(web_contents); | 2223 ASSERT_TRUE(web_contents); |
2221 | 2224 |
2222 base::ThreadRestrictions::ScopedAllowIO allow_io; | 2225 base::ThreadRestrictions::ScopedAllowIO allow_io; |
2223 base::FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 2226 base::FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
2224 base::ScopedTempDir other_directory; | 2227 base::ScopedTempDir other_directory; |
2225 ASSERT_TRUE(other_directory.CreateUniqueTempDir()); | 2228 ASSERT_TRUE(other_directory.CreateUniqueTempDir()); |
2226 base::FilePath target_file_full_path = | 2229 base::FilePath target_file_full_path = |
2227 other_directory.GetPath().Append(file.BaseName()); | 2230 other_directory.GetPath().Append(file.BaseName()); |
2228 content::DownloadTestObserver* observer(CreateWaiter(browser(), 1)); | 2231 content::DownloadTestObserver* observer(CreateWaiter(browser(), 1)); |
2229 std::unique_ptr<DownloadUrlParameters> params( | 2232 std::unique_ptr<DownloadUrlParameters> params( |
2230 DownloadUrlParameters::CreateForWebContentsMainFrame( | 2233 DownloadUrlParameters::CreateForWebContentsMainFrame( |
2231 web_contents, url)); | 2234 web_contents, url)); |
2232 params->set_file_path(target_file_full_path); | 2235 params->set_file_path(target_file_full_path); |
2233 DownloadManagerForBrowser(browser())->DownloadUrl(std::move(params)); | 2236 DownloadManagerForBrowser(browser())->DownloadUrl( |
| 2237 std::move(params), TRAFFIC_ANNOTATION_FOR_TESTS); |
2234 observer->WaitForFinished(); | 2238 observer->WaitForFinished(); |
2235 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | 2239 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); |
2236 | 2240 |
2237 // Check state. | 2241 // Check state. |
2238 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 2242 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
2239 ASSERT_TRUE(CheckDownloadFullPaths(browser(), | 2243 ASSERT_TRUE(CheckDownloadFullPaths(browser(), |
2240 target_file_full_path, | 2244 target_file_full_path, |
2241 OriginFile(file))); | 2245 OriginFile(file))); |
2242 | 2246 |
2243 // Temporary are treated as auto-opened, and after that open won't be | 2247 // Temporary are treated as auto-opened, and after that open won't be |
(...skipping 16 matching lines...) Expand all Loading... |
2260 base::FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 2264 base::FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
2261 base::ScopedTempDir other_directory; | 2265 base::ScopedTempDir other_directory; |
2262 ASSERT_TRUE(other_directory.CreateUniqueTempDir()); | 2266 ASSERT_TRUE(other_directory.CreateUniqueTempDir()); |
2263 base::FilePath target_file_full_path = | 2267 base::FilePath target_file_full_path = |
2264 other_directory.GetPath().Append(file.BaseName()); | 2268 other_directory.GetPath().Append(file.BaseName()); |
2265 content::DownloadTestObserver* observer(CreateWaiter(browser(), 1)); | 2269 content::DownloadTestObserver* observer(CreateWaiter(browser(), 1)); |
2266 std::unique_ptr<DownloadUrlParameters> params( | 2270 std::unique_ptr<DownloadUrlParameters> params( |
2267 DownloadUrlParameters::CreateForWebContentsMainFrame(web_contents, url)); | 2271 DownloadUrlParameters::CreateForWebContentsMainFrame(web_contents, url)); |
2268 params->set_file_path(target_file_full_path); | 2272 params->set_file_path(target_file_full_path); |
2269 params->set_transient(true); | 2273 params->set_transient(true); |
2270 DownloadManagerForBrowser(browser())->DownloadUrl(std::move(params)); | 2274 DownloadManagerForBrowser(browser())->DownloadUrl( |
| 2275 std::move(params), TRAFFIC_ANNOTATION_FOR_TESTS); |
2271 observer->WaitForFinished(); | 2276 observer->WaitForFinished(); |
2272 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | 2277 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); |
2273 | 2278 |
2274 // Check state. | 2279 // Check state. |
2275 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 2280 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
2276 ASSERT_TRUE(CheckDownloadFullPaths(browser(), target_file_full_path, | 2281 ASSERT_TRUE(CheckDownloadFullPaths(browser(), target_file_full_path, |
2277 OriginFile(file))); | 2282 OriginFile(file))); |
2278 | 2283 |
2279 std::vector<DownloadItem*> downloads; | 2284 std::vector<DownloadItem*> downloads; |
2280 DownloadManagerForBrowser(browser())->GetAllDownloads(&downloads); | 2285 DownloadManagerForBrowser(browser())->GetAllDownloads(&downloads); |
(...skipping 1549 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3830 download_manager, 1, | 3835 download_manager, 1, |
3831 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); | 3836 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); |
3832 | 3837 |
3833 // Download and set IsHiddenDownload to true. | 3838 // Download and set IsHiddenDownload to true. |
3834 WebContents* web_contents = | 3839 WebContents* web_contents = |
3835 browser()->tab_strip_model()->GetActiveWebContents(); | 3840 browser()->tab_strip_model()->GetActiveWebContents(); |
3836 std::unique_ptr<DownloadUrlParameters> params( | 3841 std::unique_ptr<DownloadUrlParameters> params( |
3837 DownloadUrlParameters::CreateForWebContentsMainFrame( | 3842 DownloadUrlParameters::CreateForWebContentsMainFrame( |
3838 web_contents, url)); | 3843 web_contents, url)); |
3839 params->set_callback(base::Bind(&SetHiddenDownloadCallback)); | 3844 params->set_callback(base::Bind(&SetHiddenDownloadCallback)); |
3840 download_manager->DownloadUrl(std::move(params)); | 3845 download_manager->DownloadUrl(std::move(params), |
| 3846 TRAFFIC_ANNOTATION_FOR_TESTS); |
3841 observer->WaitForFinished(); | 3847 observer->WaitForFinished(); |
3842 | 3848 |
3843 // Verify that download shelf is not shown. | 3849 // Verify that download shelf is not shown. |
3844 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); | 3850 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); |
3845 } | 3851 } |
3846 | 3852 |
3847 IN_PROC_BROWSER_TEST_F(DownloadTest, AutoOpenClosesShelf) { | 3853 IN_PROC_BROWSER_TEST_F(DownloadTest, AutoOpenClosesShelf) { |
3848 base::FilePath file(FILE_PATH_LITERAL("download-autoopen.txt")); | 3854 base::FilePath file(FILE_PATH_LITERAL("download-autoopen.txt")); |
3849 GURL url(URLRequestMockHTTPJob::GetMockUrl("download-autoopen.txt")); | 3855 GURL url(URLRequestMockHTTPJob::GetMockUrl("download-autoopen.txt")); |
3850 | 3856 |
(...skipping 17 matching lines...) Expand all Loading... |
3868 browser(), 1, | 3874 browser(), 1, |
3869 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_DENY)); | 3875 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_DENY)); |
3870 ui_test_utils::NavigateToURL(browser(), extension_url); | 3876 ui_test_utils::NavigateToURL(browser(), extension_url); |
3871 | 3877 |
3872 observer->WaitForFinished(); | 3878 observer->WaitForFinished(); |
3873 | 3879 |
3874 // Download shelf should close. | 3880 // Download shelf should close. |
3875 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); | 3881 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); |
3876 } | 3882 } |
3877 #endif // defined(OS_CHROMEOS) | 3883 #endif // defined(OS_CHROMEOS) |
OLD | NEW |