| 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 // This file contains download browser tests that are known to be runnable | 5 // This file contains download browser tests that are known to be runnable |
| 6 // in a pure content context. Over time tests should be migrated here. | 6 // in a pure content context. Over time tests should be migrated here. |
| 7 | 7 |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 48 #include "content/public/test/content_browser_test.h" | 48 #include "content/public/test/content_browser_test.h" |
| 49 #include "content/public/test/content_browser_test_utils.h" | 49 #include "content/public/test/content_browser_test_utils.h" |
| 50 #include "content/public/test/download_test_observer.h" | 50 #include "content/public/test/download_test_observer.h" |
| 51 #include "content/public/test/test_download_request_handler.h" | 51 #include "content/public/test/test_download_request_handler.h" |
| 52 #include "content/public/test/test_file_error_injector.h" | 52 #include "content/public/test/test_file_error_injector.h" |
| 53 #include "content/public/test/test_utils.h" | 53 #include "content/public/test/test_utils.h" |
| 54 #include "content/shell/browser/shell.h" | 54 #include "content/shell/browser/shell.h" |
| 55 #include "content/shell/browser/shell_browser_context.h" | 55 #include "content/shell/browser/shell_browser_context.h" |
| 56 #include "content/shell/browser/shell_download_manager_delegate.h" | 56 #include "content/shell/browser/shell_download_manager_delegate.h" |
| 57 #include "content/shell/browser/shell_network_delegate.h" | 57 #include "content/shell/browser/shell_network_delegate.h" |
| 58 #include "content/test/content_browser_test_utils_internal.h" |
| 58 #include "device/power_save_blocker/power_save_blocker.h" | 59 #include "device/power_save_blocker/power_save_blocker.h" |
| 59 #include "net/dns/mock_host_resolver.h" | 60 #include "net/dns/mock_host_resolver.h" |
| 60 #include "net/test/embedded_test_server/embedded_test_server.h" | 61 #include "net/test/embedded_test_server/embedded_test_server.h" |
| 61 #include "net/test/embedded_test_server/http_request.h" | 62 #include "net/test/embedded_test_server/http_request.h" |
| 62 #include "net/test/embedded_test_server/http_response.h" | 63 #include "net/test/embedded_test_server/http_response.h" |
| 63 #include "net/test/url_request/url_request_mock_http_job.h" | 64 #include "net/test/url_request/url_request_mock_http_job.h" |
| 64 #include "net/test/url_request/url_request_slow_download_job.h" | 65 #include "net/test/url_request/url_request_slow_download_job.h" |
| 65 #include "ppapi/features/features.h" | 66 #include "ppapi/features/features.h" |
| 66 #include "testing/gmock/include/gmock/gmock.h" | 67 #include "testing/gmock/include/gmock/gmock.h" |
| 67 #include "testing/gtest/include/gtest/gtest.h" | 68 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 2640 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2708 WaitForCompletion(download); | 2709 WaitForCompletion(download); |
| 2709 | 2710 |
| 2710 TestDownloadRequestHandler::CompletedRequests completed_requests; | 2711 TestDownloadRequestHandler::CompletedRequests completed_requests; |
| 2711 request_handler.GetCompletedRequestInfo(&completed_requests); | 2712 request_handler.GetCompletedRequestInfo(&completed_requests); |
| 2712 EXPECT_EQ(kTestRequestCount, static_cast<int>(completed_requests.size())); | 2713 EXPECT_EQ(kTestRequestCount, static_cast<int>(completed_requests.size())); |
| 2713 | 2714 |
| 2714 ReadAndVerifyFileContents(parameters.pattern_generator_seed, parameters.size, | 2715 ReadAndVerifyFileContents(parameters.pattern_generator_seed, parameters.size, |
| 2715 download->GetTargetFilePath()); | 2716 download->GetTargetFilePath()); |
| 2716 } | 2717 } |
| 2717 | 2718 |
| 2719 // Test to verify that the browser-side enforcement of X-Frame-Options does |
| 2720 // not impact downloads. Since XFO is only checked for subframes, this test |
| 2721 // initiates a download in an iframe and expects it to succeed. |
| 2722 // See https://crbug.com/717971. |
| 2723 IN_PROC_BROWSER_TEST_F(DownloadContentTest, DownloadIgnoresXFO) { |
| 2724 GURL main_url( |
| 2725 embedded_test_server()->GetURL("/cross_site_iframe_factory.html?a(b)")); |
| 2726 GURL download_url( |
| 2727 embedded_test_server()->GetURL("/download/download-with-xfo-deny.html")); |
| 2728 WebContentsImpl* web_contents = |
| 2729 static_cast<WebContentsImpl*>(shell()->web_contents()); |
| 2730 |
| 2731 EXPECT_TRUE(NavigateToURL(shell(), main_url)); |
| 2732 |
| 2733 std::unique_ptr<DownloadTestObserver> observer(CreateWaiter(shell(), 1)); |
| 2734 NavigateFrameToURL(web_contents->GetFrameTree()->root()->child_at(0), |
| 2735 download_url); |
| 2736 observer->WaitForFinished(); |
| 2737 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); |
| 2738 |
| 2739 std::vector<DownloadItem*> downloads; |
| 2740 DownloadManagerForShell(shell())->GetAllDownloads(&downloads); |
| 2741 ASSERT_EQ(1u, downloads.size()); |
| 2742 |
| 2743 EXPECT_EQ(FILE_PATH_LITERAL("foo"), |
| 2744 downloads[0]->GetTargetFilePath().BaseName().value()); |
| 2745 } |
| 2746 |
| 2718 } // namespace content | 2747 } // namespace content |
| OLD | NEW |