| 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 915 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3673 | 3673 |
| 3674 scoped_ptr<content::DownloadTestObserver> observer(DangerousDownloadWaiter( | 3674 scoped_ptr<content::DownloadTestObserver> observer(DangerousDownloadWaiter( |
| 3675 browser(), 1, content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_DENY)); | 3675 browser(), 1, content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_DENY)); |
| 3676 ui_test_utils::NavigateToURL(browser(), extension_url); | 3676 ui_test_utils::NavigateToURL(browser(), extension_url); |
| 3677 | 3677 |
| 3678 observer->WaitForFinished(); | 3678 observer->WaitForFinished(); |
| 3679 | 3679 |
| 3680 // Download shelf should close. | 3680 // Download shelf should close. |
| 3681 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); | 3681 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); |
| 3682 } | 3682 } |
| OLD | NEW |