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/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/files/file.h" | 10 #include "base/files/file.h" |
(...skipping 833 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
844 if (memcmp(file_contents.c_str(), value.c_str(), expected_size) != 0) | 844 if (memcmp(file_contents.c_str(), value.c_str(), expected_size) != 0) |
845 return false; | 845 return false; |
846 | 846 |
847 return true; | 847 return true; |
848 } | 848 } |
849 | 849 |
850 // Attempts to download a file, based on information in |download_info|. | 850 // Attempts to download a file, based on information in |download_info|. |
851 // If a Select File dialog opens, will automatically choose the default. | 851 // If a Select File dialog opens, will automatically choose the default. |
852 void DownloadFilesCheckErrorsSetup() { | 852 void DownloadFilesCheckErrorsSetup() { |
853 embedded_test_server()->ServeFilesFromDirectory(GetTestDataDirectory()); | 853 embedded_test_server()->ServeFilesFromDirectory(GetTestDataDirectory()); |
854 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 854 ASSERT_TRUE(embedded_test_server()->Start()); |
855 std::vector<DownloadItem*> download_items; | 855 std::vector<DownloadItem*> download_items; |
856 GetDownloads(browser(), &download_items); | 856 GetDownloads(browser(), &download_items); |
857 ASSERT_TRUE(download_items.empty()); | 857 ASSERT_TRUE(download_items.empty()); |
858 | 858 |
859 EnableFileChooser(true); | 859 EnableFileChooser(true); |
860 } | 860 } |
861 | 861 |
862 void DownloadFilesCheckErrorsLoopBody(const DownloadInfo& download_info, | 862 void DownloadFilesCheckErrorsLoopBody(const DownloadInfo& download_info, |
863 size_t i) { | 863 size_t i) { |
864 SCOPED_TRACE( | 864 SCOPED_TRACE( |
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1222 new net::test_server::BasicHttpResponse()); | 1222 new net::test_server::BasicHttpResponse()); |
1223 response->set_content_type(request.relative_url.substr(1)); | 1223 response->set_content_type(request.relative_url.substr(1)); |
1224 response->set_code(net::HTTP_OK); | 1224 response->set_code(net::HTTP_OK); |
1225 response->set_content("ooogaboogaboogabooga"); | 1225 response->set_content("ooogaboogaboogabooga"); |
1226 return response.Pass(); | 1226 return response.Pass(); |
1227 } | 1227 } |
1228 | 1228 |
1229 IN_PROC_BROWSER_TEST_F(DownloadTest, MimeTypesToShowNotDownload) { | 1229 IN_PROC_BROWSER_TEST_F(DownloadTest, MimeTypesToShowNotDownload) { |
1230 embedded_test_server()->RegisterRequestHandler( | 1230 embedded_test_server()->RegisterRequestHandler( |
1231 base::Bind(&RespondWithContentTypeHandler)); | 1231 base::Bind(&RespondWithContentTypeHandler)); |
1232 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 1232 ASSERT_TRUE(embedded_test_server()->Start()); |
1233 | 1233 |
1234 // These files should all be displayed in the browser. | 1234 // These files should all be displayed in the browser. |
1235 const char* mime_types[] = { | 1235 const char* mime_types[] = { |
1236 // It is unclear whether to display text/css or download it. | 1236 // It is unclear whether to display text/css or download it. |
1237 // Firefox 3: Display | 1237 // Firefox 3: Display |
1238 // Internet Explorer 7: Download | 1238 // Internet Explorer 7: Download |
1239 // Safari 3.2: Download | 1239 // Safari 3.2: Download |
1240 // We choose to match Firefox due to the lot of complains | 1240 // We choose to match Firefox due to the lot of complains |
1241 // from the users if css files are downloaded: | 1241 // from the users if css files are downloaded: |
1242 // http://code.google.com/p/chromium/issues/detail?id=7192 | 1242 // http://code.google.com/p/chromium/issues/detail?id=7192 |
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1692 std::string(), | 1692 std::string(), |
1693 std::string(), | 1693 std::string(), |
1694 std::string(), | 1694 std::string(), |
1695 std::string(), | 1695 std::string(), |
1696 std::string())); | 1696 std::string())); |
1697 | 1697 |
1698 // We use the server so that we can get a redirect and test url_chain | 1698 // We use the server so that we can get a redirect and test url_chain |
1699 // persistence. | 1699 // persistence. |
1700 embedded_test_server()->RegisterRequestHandler( | 1700 embedded_test_server()->RegisterRequestHandler( |
1701 base::Bind(&ServerRedirectRequestHandler)); | 1701 base::Bind(&ServerRedirectRequestHandler)); |
1702 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 1702 ASSERT_TRUE(embedded_test_server()->Start()); |
1703 GURL redirect_url = | 1703 GURL redirect_url = |
1704 embedded_test_server()->GetURL("/a?" + download_url.spec()); | 1704 embedded_test_server()->GetURL("/a?" + download_url.spec()); |
1705 | 1705 |
1706 // Download the url and wait until the object has been stored. | 1706 // Download the url and wait until the object has been stored. |
1707 base::Time start(base::Time::Now()); | 1707 base::Time start(base::Time::Now()); |
1708 HistoryObserver observer(browser()->profile()); | 1708 HistoryObserver observer(browser()->profile()); |
1709 observer.SetFilterCallback(base::Bind(&HasDataAndName)); | 1709 observer.SetFilterCallback(base::Bind(&HasDataAndName)); |
1710 ui_test_utils::NavigateToURL(browser(), redirect_url); | 1710 ui_test_utils::NavigateToURL(browser(), redirect_url); |
1711 observer.WaitForStored(); | 1711 observer.WaitForStored(); |
1712 | 1712 |
(...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2160 // visible; wait for auto-open and confirm not visible. | 2160 // visible; wait for auto-open and confirm not visible. |
2161 std::vector<DownloadItem*> downloads; | 2161 std::vector<DownloadItem*> downloads; |
2162 DownloadManagerForBrowser(browser())->GetAllDownloads(&downloads); | 2162 DownloadManagerForBrowser(browser())->GetAllDownloads(&downloads); |
2163 ASSERT_EQ(1u, downloads.size()); | 2163 ASSERT_EQ(1u, downloads.size()); |
2164 content::DownloadUpdatedObserver( | 2164 content::DownloadUpdatedObserver( |
2165 downloads[0], base::Bind(&WasAutoOpened)).WaitForEvent(); | 2165 downloads[0], base::Bind(&WasAutoOpened)).WaitForEvent(); |
2166 } | 2166 } |
2167 | 2167 |
2168 IN_PROC_BROWSER_TEST_F(DownloadTest, SavePageNonHTMLViaGet) { | 2168 IN_PROC_BROWSER_TEST_F(DownloadTest, SavePageNonHTMLViaGet) { |
2169 embedded_test_server()->ServeFilesFromDirectory(GetTestDataDirectory()); | 2169 embedded_test_server()->ServeFilesFromDirectory(GetTestDataDirectory()); |
2170 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 2170 ASSERT_TRUE(embedded_test_server()->Start()); |
2171 EnableFileChooser(true); | 2171 EnableFileChooser(true); |
2172 std::vector<DownloadItem*> download_items; | 2172 std::vector<DownloadItem*> download_items; |
2173 GetDownloads(browser(), &download_items); | 2173 GetDownloads(browser(), &download_items); |
2174 ASSERT_TRUE(download_items.empty()); | 2174 ASSERT_TRUE(download_items.empty()); |
2175 | 2175 |
2176 // Navigate to a non-HTML resource. The resource also has | 2176 // Navigate to a non-HTML resource. The resource also has |
2177 // Cache-Control: no-cache set, which normally requires revalidation | 2177 // Cache-Control: no-cache set, which normally requires revalidation |
2178 // each time. | 2178 // each time. |
2179 GURL url = embedded_test_server()->GetURL("/downloads/image.jpg"); | 2179 GURL url = embedded_test_server()->GetURL("/downloads/image.jpg"); |
2180 ASSERT_TRUE(url.is_valid()); | 2180 ASSERT_TRUE(url.is_valid()); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2239 response.reset(new net::test_server::BasicHttpResponse()); | 2239 response.reset(new net::test_server::BasicHttpResponse()); |
2240 response->set_code(net::HTTP_NOT_FOUND); | 2240 response->set_code(net::HTTP_NOT_FOUND); |
2241 } | 2241 } |
2242 return response.Pass(); | 2242 return response.Pass(); |
2243 } | 2243 } |
2244 | 2244 |
2245 IN_PROC_BROWSER_TEST_F(DownloadTest, SavePageNonHTMLViaPost) { | 2245 IN_PROC_BROWSER_TEST_F(DownloadTest, SavePageNonHTMLViaPost) { |
2246 embedded_test_server()->RegisterRequestHandler( | 2246 embedded_test_server()->RegisterRequestHandler( |
2247 base::Bind(&FilterPostOnlyURLsHandler)); | 2247 base::Bind(&FilterPostOnlyURLsHandler)); |
2248 embedded_test_server()->ServeFilesFromDirectory(GetTestDataDirectory()); | 2248 embedded_test_server()->ServeFilesFromDirectory(GetTestDataDirectory()); |
2249 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 2249 ASSERT_TRUE(embedded_test_server()->Start()); |
2250 EnableFileChooser(true); | 2250 EnableFileChooser(true); |
2251 std::vector<DownloadItem*> download_items; | 2251 std::vector<DownloadItem*> download_items; |
2252 GetDownloads(browser(), &download_items); | 2252 GetDownloads(browser(), &download_items); |
2253 ASSERT_TRUE(download_items.empty()); | 2253 ASSERT_TRUE(download_items.empty()); |
2254 | 2254 |
2255 // Navigate to a form page. | 2255 // Navigate to a form page. |
2256 GURL form_url = | 2256 GURL form_url = |
2257 embedded_test_server()->GetURL("/downloads/form_page_to_post.html"); | 2257 embedded_test_server()->GetURL("/downloads/form_page_to_post.html"); |
2258 ASSERT_TRUE(form_url.is_valid()); | 2258 ASSERT_TRUE(form_url.is_valid()); |
2259 ui_test_utils::NavigateToURL(browser(), form_url); | 2259 ui_test_utils::NavigateToURL(browser(), form_url); |
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2628 auto referrer_header = request.headers.find(kReferrerHeader); | 2628 auto referrer_header = request.headers.find(kReferrerHeader); |
2629 if (referrer_header != request.headers.end()) | 2629 if (referrer_header != request.headers.end()) |
2630 response->set_content(referrer_header->second); | 2630 response->set_content(referrer_header->second); |
2631 return response.Pass(); | 2631 return response.Pass(); |
2632 } | 2632 } |
2633 | 2633 |
2634 IN_PROC_BROWSER_TEST_F(DownloadTest, LoadURLExternallyReferrerPolicy) { | 2634 IN_PROC_BROWSER_TEST_F(DownloadTest, LoadURLExternallyReferrerPolicy) { |
2635 embedded_test_server()->RegisterRequestHandler( | 2635 embedded_test_server()->RegisterRequestHandler( |
2636 base::Bind(&EchoReferrerRequestHandler)); | 2636 base::Bind(&EchoReferrerRequestHandler)); |
2637 embedded_test_server()->ServeFilesFromDirectory(GetTestDataDirectory()); | 2637 embedded_test_server()->ServeFilesFromDirectory(GetTestDataDirectory()); |
2638 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 2638 ASSERT_TRUE(embedded_test_server()->Start()); |
2639 EnableFileChooser(true); | 2639 EnableFileChooser(true); |
2640 std::vector<DownloadItem*> download_items; | 2640 std::vector<DownloadItem*> download_items; |
2641 GetDownloads(browser(), &download_items); | 2641 GetDownloads(browser(), &download_items); |
2642 ASSERT_TRUE(download_items.empty()); | 2642 ASSERT_TRUE(download_items.empty()); |
2643 | 2643 |
2644 // Navigate to a page with a referrer policy and a link on it. The link points | 2644 // Navigate to a page with a referrer policy and a link on it. The link points |
2645 // to /echoreferrer. | 2645 // to /echoreferrer. |
2646 GURL url = embedded_test_server()->GetURL("/downloads/referrer_policy.html"); | 2646 GURL url = embedded_test_server()->GetURL("/downloads/referrer_policy.html"); |
2647 ASSERT_TRUE(url.is_valid()); | 2647 ASSERT_TRUE(url.is_valid()); |
2648 ui_test_utils::NavigateToURL(browser(), url); | 2648 ui_test_utils::NavigateToURL(browser(), url); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2680 base::FilePath file(download_items[0]->GetTargetFilePath()); | 2680 base::FilePath file(download_items[0]->GetTargetFilePath()); |
2681 std::string expected_contents = embedded_test_server()->GetURL("/").spec(); | 2681 std::string expected_contents = embedded_test_server()->GetURL("/").spec(); |
2682 ASSERT_TRUE(VerifyFile(file, expected_contents, expected_contents.length())); | 2682 ASSERT_TRUE(VerifyFile(file, expected_contents, expected_contents.length())); |
2683 } | 2683 } |
2684 | 2684 |
2685 // This test ensures that the Referer header is properly sanitized when | 2685 // This test ensures that the Referer header is properly sanitized when |
2686 // Save Link As is chosen from the context menu. | 2686 // Save Link As is chosen from the context menu. |
2687 IN_PROC_BROWSER_TEST_F(DownloadTest, SaveLinkAsReferrerPolicyOrigin) { | 2687 IN_PROC_BROWSER_TEST_F(DownloadTest, SaveLinkAsReferrerPolicyOrigin) { |
2688 embedded_test_server()->RegisterRequestHandler( | 2688 embedded_test_server()->RegisterRequestHandler( |
2689 base::Bind(&EchoReferrerRequestHandler)); | 2689 base::Bind(&EchoReferrerRequestHandler)); |
2690 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 2690 ASSERT_TRUE(embedded_test_server()->Start()); |
2691 EnableFileChooser(true); | 2691 EnableFileChooser(true); |
2692 std::vector<DownloadItem*> download_items; | 2692 std::vector<DownloadItem*> download_items; |
2693 GetDownloads(browser(), &download_items); | 2693 GetDownloads(browser(), &download_items); |
2694 ASSERT_TRUE(download_items.empty()); | 2694 ASSERT_TRUE(download_items.empty()); |
2695 | 2695 |
2696 // Navigate to the initial page, where Save Link As will be executed. | 2696 // Navigate to the initial page, where Save Link As will be executed. |
2697 GURL url = net::URLRequestMockHTTPJob::GetMockHttpsUrl( | 2697 GURL url = net::URLRequestMockHTTPJob::GetMockHttpsUrl( |
2698 std::string("referrer_policy/referrer-policy-start.html?policy=origin") + | 2698 std::string("referrer_policy/referrer-policy-start.html?policy=origin") + |
2699 "&redirect=" + embedded_test_server()->GetURL("/echoreferrer").spec() + | 2699 "&redirect=" + embedded_test_server()->GetURL("/echoreferrer").spec() + |
2700 "&link=true&target="); | 2700 "&link=true&target="); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2737 std::string expected_contents = | 2737 std::string expected_contents = |
2738 net::URLRequestMockHTTPJob::GetMockHttpsUrl(std::string()).spec(); | 2738 net::URLRequestMockHTTPJob::GetMockHttpsUrl(std::string()).spec(); |
2739 EXPECT_TRUE(VerifyFile(file, expected_contents, expected_contents.length())); | 2739 EXPECT_TRUE(VerifyFile(file, expected_contents, expected_contents.length())); |
2740 } | 2740 } |
2741 | 2741 |
2742 // This test ensures that the Referer header is properly sanitized when | 2742 // This test ensures that the Referer header is properly sanitized when |
2743 // Save Image As is chosen from the context menu. | 2743 // Save Image As is chosen from the context menu. |
2744 IN_PROC_BROWSER_TEST_F(DownloadTest, SaveImageAsReferrerPolicyDefault) { | 2744 IN_PROC_BROWSER_TEST_F(DownloadTest, SaveImageAsReferrerPolicyDefault) { |
2745 embedded_test_server()->RegisterRequestHandler( | 2745 embedded_test_server()->RegisterRequestHandler( |
2746 base::Bind(&EchoReferrerRequestHandler)); | 2746 base::Bind(&EchoReferrerRequestHandler)); |
2747 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 2747 ASSERT_TRUE(embedded_test_server()->Start()); |
2748 EnableFileChooser(true); | 2748 EnableFileChooser(true); |
2749 std::vector<DownloadItem*> download_items; | 2749 std::vector<DownloadItem*> download_items; |
2750 GetDownloads(browser(), &download_items); | 2750 GetDownloads(browser(), &download_items); |
2751 ASSERT_TRUE(download_items.empty()); | 2751 ASSERT_TRUE(download_items.empty()); |
2752 | 2752 |
2753 GURL url = net::URLRequestMockHTTPJob::GetMockHttpsUrl("title1.html"); | 2753 GURL url = net::URLRequestMockHTTPJob::GetMockHttpsUrl("title1.html"); |
2754 GURL img_url = embedded_test_server()->GetURL("/echoreferrer"); | 2754 GURL img_url = embedded_test_server()->GetURL("/echoreferrer"); |
2755 ASSERT_TRUE(url.is_valid()); | 2755 ASSERT_TRUE(url.is_valid()); |
2756 ui_test_utils::NavigateToURL(browser(), url); | 2756 ui_test_utils::NavigateToURL(browser(), url); |
2757 | 2757 |
(...skipping 916 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3674 | 3674 |
3675 scoped_ptr<content::DownloadTestObserver> observer(DangerousDownloadWaiter( | 3675 scoped_ptr<content::DownloadTestObserver> observer(DangerousDownloadWaiter( |
3676 browser(), 1, content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_DENY)); | 3676 browser(), 1, content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_DENY)); |
3677 ui_test_utils::NavigateToURL(browser(), extension_url); | 3677 ui_test_utils::NavigateToURL(browser(), extension_url); |
3678 | 3678 |
3679 observer->WaitForFinished(); | 3679 observer->WaitForFinished(); |
3680 | 3680 |
3681 // Download shelf should close. | 3681 // Download shelf should close. |
3682 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); | 3682 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); |
3683 } | 3683 } |
OLD | NEW |