| 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 <stddef.h> | 5 #include <stddef.h> |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 #include "base/strings/string_number_conversions.h" | 22 #include "base/strings/string_number_conversions.h" |
| 23 #include "base/strings/string_split.h" | 23 #include "base/strings/string_split.h" |
| 24 #include "base/threading/thread_task_runner_handle.h" | 24 #include "base/threading/thread_task_runner_handle.h" |
| 25 #include "content/browser/browser_thread_impl.h" | 25 #include "content/browser/browser_thread_impl.h" |
| 26 #include "content/browser/child_process_security_policy_impl.h" | 26 #include "content/browser/child_process_security_policy_impl.h" |
| 27 #include "content/browser/download/download_manager_impl.h" | 27 #include "content/browser/download/download_manager_impl.h" |
| 28 #include "content/browser/download/download_resource_handler.h" | 28 #include "content/browser/download/download_resource_handler.h" |
| 29 #include "content/browser/frame_host/navigation_request_info.h" | 29 #include "content/browser/frame_host/navigation_request_info.h" |
| 30 #include "content/browser/loader/cross_site_resource_handler.h" | 30 #include "content/browser/loader/cross_site_resource_handler.h" |
| 31 #include "content/browser/loader/detachable_resource_handler.h" | 31 #include "content/browser/loader/detachable_resource_handler.h" |
| 32 #include "content/browser/loader/navigation_resource_throttle.h" |
| 32 #include "content/browser/loader/navigation_url_loader.h" | 33 #include "content/browser/loader/navigation_url_loader.h" |
| 33 #include "content/browser/loader/resource_dispatcher_host_impl.h" | 34 #include "content/browser/loader/resource_dispatcher_host_impl.h" |
| 34 #include "content/browser/loader/resource_loader.h" | 35 #include "content/browser/loader/resource_loader.h" |
| 35 #include "content/browser/loader/resource_message_filter.h" | 36 #include "content/browser/loader/resource_message_filter.h" |
| 36 #include "content/browser/loader/resource_request_info_impl.h" | 37 #include "content/browser/loader/resource_request_info_impl.h" |
| 37 #include "content/browser/loader_delegate_impl.h" | 38 #include "content/browser/loader_delegate_impl.h" |
| 38 #include "content/common/appcache_interfaces.h" | 39 #include "content/common/appcache_interfaces.h" |
| 39 #include "content/common/child_process_host_impl.h" | 40 #include "content/common/child_process_host_impl.h" |
| 40 #include "content/common/navigation_params.h" | 41 #include "content/common/navigation_params.h" |
| 41 #include "content/common/resource_messages.h" | 42 #include "content/common/resource_messages.h" |
| (...skipping 2428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2470 accum_.GetClassifiedMessages(&msgs); | 2471 accum_.GetClassifiedMessages(&msgs); |
| 2471 ASSERT_EQ(1U, msgs.size()); | 2472 ASSERT_EQ(1U, msgs.size()); |
| 2472 | 2473 |
| 2473 ResourceResponseHead response_head; | 2474 ResourceResponseHead response_head; |
| 2474 GetResponseHead(msgs[0], &response_head); | 2475 GetResponseHead(msgs[0], &response_head); |
| 2475 ASSERT_EQ("text/plain", response_head.mime_type); | 2476 ASSERT_EQ("text/plain", response_head.mime_type); |
| 2476 } | 2477 } |
| 2477 | 2478 |
| 2478 // Tests for crbug.com/31266 (Non-2xx + application/octet-stream). | 2479 // Tests for crbug.com/31266 (Non-2xx + application/octet-stream). |
| 2479 TEST_P(ResourceDispatcherHostTest, ForbiddenDownload) { | 2480 TEST_P(ResourceDispatcherHostTest, ForbiddenDownload) { |
| 2481 NavigationResourceThrottle::set_ui_checks_always_succeed_for_testing(true); |
| 2480 std::string raw_headers("HTTP/1.1 403 Forbidden\n" | 2482 std::string raw_headers("HTTP/1.1 403 Forbidden\n" |
| 2481 "Content-disposition: attachment; filename=blah\n" | 2483 "Content-disposition: attachment; filename=blah\n" |
| 2482 "Content-type: application/octet-stream\n\n"); | 2484 "Content-type: application/octet-stream\n\n"); |
| 2483 std::string response_data("<html><title>Test One</title></html>"); | 2485 std::string response_data("<html><title>Test One</title></html>"); |
| 2484 SetResponse(raw_headers, response_data); | 2486 SetResponse(raw_headers, response_data); |
| 2485 | 2487 |
| 2486 HandleScheme("http"); | 2488 HandleScheme("http"); |
| 2487 | 2489 |
| 2488 int expected_error_code = net::ERR_INVALID_RESPONSE; | 2490 int expected_error_code = net::ERR_INVALID_RESPONSE; |
| 2489 GURL forbidden_download_url = GURL("http:bla"); | 2491 GURL forbidden_download_url = GURL("http:bla"); |
| 2490 | 2492 |
| 2491 CompleteFailingMainResourceRequest(forbidden_download_url, | 2493 CompleteFailingMainResourceRequest(forbidden_download_url, |
| 2492 expected_error_code); | 2494 expected_error_code); |
| 2493 } | 2495 } |
| 2494 | 2496 |
| 2495 // Test for http://crbug.com/76202 . We don't want to destroy a | 2497 // Test for http://crbug.com/76202 . We don't want to destroy a |
| 2496 // download request prematurely when processing a cancellation from | 2498 // download request prematurely when processing a cancellation from |
| 2497 // the renderer. | 2499 // the renderer. |
| 2498 TEST_P(ResourceDispatcherHostTest, IgnoreCancelForDownloads) { | 2500 TEST_P(ResourceDispatcherHostTest, IgnoreCancelForDownloads) { |
| 2499 // PlzNavigate: A request that ends up being a download is a main resource | 2501 // PlzNavigate: A request that ends up being a download is a main resource |
| 2500 // request. Hence, it has been initiated by the browser and is not associated | 2502 // request. Hence, it has been initiated by the browser and is not associated |
| 2501 // with a renderer. Therefore, it cannot be canceled by a renderer IPC. | 2503 // with a renderer. Therefore, it cannot be canceled by a renderer IPC. |
| 2502 if (IsBrowserSideNavigationEnabled()) { | 2504 if (IsBrowserSideNavigationEnabled()) { |
| 2503 SUCCEED() << "Not applicable with --enable-browser-side-navigation."; | 2505 SUCCEED() << "Not applicable with --enable-browser-side-navigation."; |
| 2504 return; | 2506 return; |
| 2505 } | 2507 } |
| 2506 | 2508 |
| 2509 NavigationResourceThrottle::set_ui_checks_always_succeed_for_testing(true); |
| 2510 |
| 2507 EXPECT_EQ(0, host_.pending_requests()); | 2511 EXPECT_EQ(0, host_.pending_requests()); |
| 2508 | 2512 |
| 2509 int render_view_id = 0; | 2513 int render_view_id = 0; |
| 2510 int request_id = 1; | 2514 int request_id = 1; |
| 2511 | 2515 |
| 2512 std::string raw_headers("HTTP\n" | 2516 std::string raw_headers("HTTP\n" |
| 2513 "Content-disposition: attachment; filename=foo\n\n"); | 2517 "Content-disposition: attachment; filename=foo\n\n"); |
| 2514 std::string response_data("01234567890123456789\x01foobar"); | 2518 std::string response_data("01234567890123456789\x01foobar"); |
| 2515 | 2519 |
| 2516 // Get past sniffing metrics in the MimeTypeResourceHandler. Note that | 2520 // Get past sniffing metrics in the MimeTypeResourceHandler. Note that |
| (...skipping 23 matching lines...) Expand all Loading... |
| 2540 // the cancellation above should have been ignored and the request | 2544 // the cancellation above should have been ignored and the request |
| 2541 // should still be alive. | 2545 // should still be alive. |
| 2542 EXPECT_EQ(1, host_.pending_requests()); | 2546 EXPECT_EQ(1, host_.pending_requests()); |
| 2543 | 2547 |
| 2544 while (net::URLRequestTestJob::ProcessOnePendingMessage()) {} | 2548 while (net::URLRequestTestJob::ProcessOnePendingMessage()) {} |
| 2545 base::RunLoop().RunUntilIdle(); | 2549 base::RunLoop().RunUntilIdle(); |
| 2546 } | 2550 } |
| 2547 | 2551 |
| 2548 TEST_P(ResourceDispatcherHostTest, CancelRequestsForContext) { | 2552 TEST_P(ResourceDispatcherHostTest, CancelRequestsForContext) { |
| 2549 EXPECT_EQ(0, host_.pending_requests()); | 2553 EXPECT_EQ(0, host_.pending_requests()); |
| 2554 NavigationResourceThrottle::set_ui_checks_always_succeed_for_testing(true); |
| 2550 | 2555 |
| 2551 int render_view_id = 0; | 2556 int render_view_id = 0; |
| 2552 int request_id = 1; | 2557 int request_id = 1; |
| 2553 | 2558 |
| 2554 std::string raw_headers("HTTP\n" | 2559 std::string raw_headers("HTTP\n" |
| 2555 "Content-disposition: attachment; filename=foo\n\n"); | 2560 "Content-disposition: attachment; filename=foo\n\n"); |
| 2556 std::string response_data("01234567890123456789\x01foobar"); | 2561 std::string response_data("01234567890123456789\x01foobar"); |
| 2557 // Get past sniffing metrics. | 2562 // Get past sniffing metrics. |
| 2558 response_data.resize(1025, ' '); | 2563 response_data.resize(1025, ' '); |
| 2559 | 2564 |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2656 EXPECT_EQ(0, host_.pending_requests()); | 2661 EXPECT_EQ(0, host_.pending_requests()); |
| 2657 } | 2662 } |
| 2658 | 2663 |
| 2659 // Test the cancelling of requests that are being transferred to a new renderer | 2664 // Test the cancelling of requests that are being transferred to a new renderer |
| 2660 // due to a redirection. | 2665 // due to a redirection. |
| 2661 TEST_P(ResourceDispatcherHostTest, CancelRequestsForContextTransferred) { | 2666 TEST_P(ResourceDispatcherHostTest, CancelRequestsForContextTransferred) { |
| 2662 // PlzNavigate: there are no transferred requests in PlzNavigate. | 2667 // PlzNavigate: there are no transferred requests in PlzNavigate. |
| 2663 if (IsBrowserSideNavigationEnabled()) | 2668 if (IsBrowserSideNavigationEnabled()) |
| 2664 return; | 2669 return; |
| 2665 | 2670 |
| 2671 NavigationResourceThrottle::set_ui_checks_always_succeed_for_testing(true); |
| 2672 |
| 2666 EXPECT_EQ(0, host_.pending_requests()); | 2673 EXPECT_EQ(0, host_.pending_requests()); |
| 2667 | 2674 |
| 2668 int request_id = 1; | 2675 int request_id = 1; |
| 2669 | 2676 |
| 2670 std::string raw_headers("HTTP/1.1 200 OK\n" | 2677 std::string raw_headers("HTTP/1.1 200 OK\n" |
| 2671 "Content-Type: text/html; charset=utf-8\n\n"); | 2678 "Content-Type: text/html; charset=utf-8\n\n"); |
| 2672 std::string response_data("<html>foobar</html>"); | 2679 std::string response_data("<html>foobar</html>"); |
| 2673 | 2680 |
| 2674 SetResponse(raw_headers, response_data); | 2681 SetResponse(raw_headers, response_data); |
| 2675 HandleScheme("http"); | 2682 HandleScheme("http"); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 2705 if (IsBrowserSideNavigationEnabled()) { | 2712 if (IsBrowserSideNavigationEnabled()) { |
| 2706 SUCCEED() << "Test is not applicable with browser side navigation enabled"; | 2713 SUCCEED() << "Test is not applicable with browser side navigation enabled"; |
| 2707 return; | 2714 return; |
| 2708 } | 2715 } |
| 2709 // This test expects the cross site request to be leaked, so it can transfer | 2716 // This test expects the cross site request to be leaked, so it can transfer |
| 2710 // the request directly. | 2717 // the request directly. |
| 2711 CrossSiteResourceHandler::SetLeakRequestsForTesting(true); | 2718 CrossSiteResourceHandler::SetLeakRequestsForTesting(true); |
| 2712 | 2719 |
| 2713 EXPECT_EQ(0, host_.pending_requests()); | 2720 EXPECT_EQ(0, host_.pending_requests()); |
| 2714 | 2721 |
| 2722 NavigationResourceThrottle::set_ui_checks_always_succeed_for_testing(true); |
| 2723 |
| 2715 int render_view_id = 0; | 2724 int render_view_id = 0; |
| 2716 int request_id = 1; | 2725 int request_id = 1; |
| 2717 | 2726 |
| 2718 // Configure initial request. | 2727 // Configure initial request. |
| 2719 SetResponse("HTTP/1.1 302 Found\n" | 2728 SetResponse("HTTP/1.1 302 Found\n" |
| 2720 "Location: http://other.com/blech\n\n"); | 2729 "Location: http://other.com/blech\n\n"); |
| 2721 | 2730 |
| 2722 HandleScheme("http"); | 2731 HandleScheme("http"); |
| 2723 | 2732 |
| 2724 // Temporarily replace ContentBrowserClient with one that will trigger the | 2733 // Temporarily replace ContentBrowserClient with one that will trigger the |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2776 // accounting works. | 2785 // accounting works. |
| 2777 TEST_P(ResourceDispatcherHostTest, TransferTwoNavigationsHtml) { | 2786 TEST_P(ResourceDispatcherHostTest, TransferTwoNavigationsHtml) { |
| 2778 if (IsBrowserSideNavigationEnabled()) { | 2787 if (IsBrowserSideNavigationEnabled()) { |
| 2779 SUCCEED() << "Test is not applicable with browser side navigation enabled"; | 2788 SUCCEED() << "Test is not applicable with browser side navigation enabled"; |
| 2780 return; | 2789 return; |
| 2781 } | 2790 } |
| 2782 // This test expects the cross site request to be leaked, so it can transfer | 2791 // This test expects the cross site request to be leaked, so it can transfer |
| 2783 // the request directly. | 2792 // the request directly. |
| 2784 CrossSiteResourceHandler::SetLeakRequestsForTesting(true); | 2793 CrossSiteResourceHandler::SetLeakRequestsForTesting(true); |
| 2785 | 2794 |
| 2795 NavigationResourceThrottle::set_ui_checks_always_succeed_for_testing(true); |
| 2796 |
| 2786 EXPECT_EQ(0, host_.pending_requests()); | 2797 EXPECT_EQ(0, host_.pending_requests()); |
| 2787 | 2798 |
| 2788 int render_view_id = 0; | 2799 int render_view_id = 0; |
| 2789 int request_id = 1; | 2800 int request_id = 1; |
| 2790 | 2801 |
| 2791 // Configure initial request. | 2802 // Configure initial request. |
| 2792 const std::string kResponseBody = "hello world"; | 2803 const std::string kResponseBody = "hello world"; |
| 2793 SetResponse("HTTP/1.1 200 OK\n" | 2804 SetResponse("HTTP/1.1 200 OK\n" |
| 2794 "Content-Type: text/html\n\n", | 2805 "Content-Type: text/html\n\n", |
| 2795 kResponseBody); | 2806 kResponseBody); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2861 // the transfer occurs. | 2872 // the transfer occurs. |
| 2862 TEST_P(ResourceDispatcherHostTest, TransferNavigationText) { | 2873 TEST_P(ResourceDispatcherHostTest, TransferNavigationText) { |
| 2863 if (IsBrowserSideNavigationEnabled()) { | 2874 if (IsBrowserSideNavigationEnabled()) { |
| 2864 SUCCEED() << "Test is not applicable with browser side navigation enabled"; | 2875 SUCCEED() << "Test is not applicable with browser side navigation enabled"; |
| 2865 return; | 2876 return; |
| 2866 } | 2877 } |
| 2867 // This test expects the cross site request to be leaked, so it can transfer | 2878 // This test expects the cross site request to be leaked, so it can transfer |
| 2868 // the request directly. | 2879 // the request directly. |
| 2869 CrossSiteResourceHandler::SetLeakRequestsForTesting(true); | 2880 CrossSiteResourceHandler::SetLeakRequestsForTesting(true); |
| 2870 | 2881 |
| 2882 NavigationResourceThrottle::set_ui_checks_always_succeed_for_testing(true); |
| 2883 |
| 2871 EXPECT_EQ(0, host_.pending_requests()); | 2884 EXPECT_EQ(0, host_.pending_requests()); |
| 2872 | 2885 |
| 2873 int render_view_id = 0; | 2886 int render_view_id = 0; |
| 2874 int request_id = 1; | 2887 int request_id = 1; |
| 2875 | 2888 |
| 2876 // Configure initial request. | 2889 // Configure initial request. |
| 2877 SetResponse("HTTP/1.1 302 Found\n" | 2890 SetResponse("HTTP/1.1 302 Found\n" |
| 2878 "Location: http://other.com/blech\n\n"); | 2891 "Location: http://other.com/blech\n\n"); |
| 2879 | 2892 |
| 2880 HandleScheme("http"); | 2893 HandleScheme("http"); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2935 | 2948 |
| 2936 TEST_P(ResourceDispatcherHostTest, TransferNavigationWithProcessCrash) { | 2949 TEST_P(ResourceDispatcherHostTest, TransferNavigationWithProcessCrash) { |
| 2937 if (IsBrowserSideNavigationEnabled()) { | 2950 if (IsBrowserSideNavigationEnabled()) { |
| 2938 SUCCEED() << "Test is not applicable with browser side navigation enabled"; | 2951 SUCCEED() << "Test is not applicable with browser side navigation enabled"; |
| 2939 return; | 2952 return; |
| 2940 } | 2953 } |
| 2941 // This test expects the cross site request to be leaked, so it can transfer | 2954 // This test expects the cross site request to be leaked, so it can transfer |
| 2942 // the request directly. | 2955 // the request directly. |
| 2943 CrossSiteResourceHandler::SetLeakRequestsForTesting(true); | 2956 CrossSiteResourceHandler::SetLeakRequestsForTesting(true); |
| 2944 | 2957 |
| 2958 NavigationResourceThrottle::set_ui_checks_always_succeed_for_testing(true); |
| 2959 |
| 2945 EXPECT_EQ(0, host_.pending_requests()); | 2960 EXPECT_EQ(0, host_.pending_requests()); |
| 2946 | 2961 |
| 2947 int render_view_id = 0; | 2962 int render_view_id = 0; |
| 2948 int request_id = 1; | 2963 int request_id = 1; |
| 2949 int first_child_id = -1; | 2964 int first_child_id = -1; |
| 2950 | 2965 |
| 2951 // Configure initial request. | 2966 // Configure initial request. |
| 2952 SetResponse("HTTP/1.1 302 Found\n" | 2967 SetResponse("HTTP/1.1 302 Found\n" |
| 2953 "Location: http://other.com/blech\n\n"); | 2968 "Location: http://other.com/blech\n\n"); |
| 2954 const std::string kResponseBody = "hello world"; | 2969 const std::string kResponseBody = "hello world"; |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3023 | 3038 |
| 3024 TEST_P(ResourceDispatcherHostTest, TransferNavigationWithTwoRedirects) { | 3039 TEST_P(ResourceDispatcherHostTest, TransferNavigationWithTwoRedirects) { |
| 3025 if (IsBrowserSideNavigationEnabled()) { | 3040 if (IsBrowserSideNavigationEnabled()) { |
| 3026 SUCCEED() << "Test is not applicable with browser side navigation enabled"; | 3041 SUCCEED() << "Test is not applicable with browser side navigation enabled"; |
| 3027 return; | 3042 return; |
| 3028 } | 3043 } |
| 3029 // This test expects the cross site request to be leaked, so it can transfer | 3044 // This test expects the cross site request to be leaked, so it can transfer |
| 3030 // the request directly. | 3045 // the request directly. |
| 3031 CrossSiteResourceHandler::SetLeakRequestsForTesting(true); | 3046 CrossSiteResourceHandler::SetLeakRequestsForTesting(true); |
| 3032 | 3047 |
| 3048 NavigationResourceThrottle::set_ui_checks_always_succeed_for_testing(true); |
| 3049 |
| 3033 EXPECT_EQ(0, host_.pending_requests()); | 3050 EXPECT_EQ(0, host_.pending_requests()); |
| 3034 | 3051 |
| 3035 int render_view_id = 0; | 3052 int render_view_id = 0; |
| 3036 int request_id = 1; | 3053 int request_id = 1; |
| 3037 | 3054 |
| 3038 // Configure initial request. | 3055 // Configure initial request. |
| 3039 SetResponse("HTTP/1.1 302 Found\n" | 3056 SetResponse("HTTP/1.1 302 Found\n" |
| 3040 "Location: http://other.com/blech\n\n"); | 3057 "Location: http://other.com/blech\n\n"); |
| 3041 | 3058 |
| 3042 HandleScheme("http"); | 3059 HandleScheme("http"); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3109 // Check generated messages. | 3126 // Check generated messages. |
| 3110 ResourceIPCAccumulator::ClassifiedMessages msgs; | 3127 ResourceIPCAccumulator::ClassifiedMessages msgs; |
| 3111 accum_.GetClassifiedMessages(&msgs); | 3128 accum_.GetClassifiedMessages(&msgs); |
| 3112 | 3129 |
| 3113 ASSERT_EQ(2U, msgs.size()); | 3130 ASSERT_EQ(2U, msgs.size()); |
| 3114 EXPECT_EQ(ResourceMsg_ReceivedRedirect::ID, msgs[0][0].type()); | 3131 EXPECT_EQ(ResourceMsg_ReceivedRedirect::ID, msgs[0][0].type()); |
| 3115 CheckSuccessfulRequest(msgs[1], kResponseBody); | 3132 CheckSuccessfulRequest(msgs[1], kResponseBody); |
| 3116 } | 3133 } |
| 3117 | 3134 |
| 3118 TEST_P(ResourceDispatcherHostTest, UnknownURLScheme) { | 3135 TEST_P(ResourceDispatcherHostTest, UnknownURLScheme) { |
| 3136 NavigationResourceThrottle::set_ui_checks_always_succeed_for_testing(true); |
| 3119 EXPECT_EQ(0, host_.pending_requests()); | 3137 EXPECT_EQ(0, host_.pending_requests()); |
| 3120 | 3138 |
| 3121 HandleScheme("http"); | 3139 HandleScheme("http"); |
| 3122 | 3140 |
| 3123 const GURL invalid_sheme_url = GURL("foo://bar"); | 3141 const GURL invalid_sheme_url = GURL("foo://bar"); |
| 3124 const int expected_error_code = net::ERR_UNKNOWN_URL_SCHEME; | 3142 const int expected_error_code = net::ERR_UNKNOWN_URL_SCHEME; |
| 3125 | 3143 |
| 3126 CompleteFailingMainResourceRequest(invalid_sheme_url, expected_error_code); | 3144 CompleteFailingMainResourceRequest(invalid_sheme_url, expected_error_code); |
| 3127 } | 3145 } |
| 3128 | 3146 |
| (...skipping 690 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3819 return nullptr; | 3837 return nullptr; |
| 3820 } | 3838 } |
| 3821 | 3839 |
| 3822 INSTANTIATE_TEST_CASE_P( | 3840 INSTANTIATE_TEST_CASE_P( |
| 3823 ResourceDispatcherHostTests, | 3841 ResourceDispatcherHostTests, |
| 3824 ResourceDispatcherHostTest, | 3842 ResourceDispatcherHostTest, |
| 3825 testing::Values(TestConfig::kDefault, | 3843 testing::Values(TestConfig::kDefault, |
| 3826 TestConfig::kOptimizeIPCForSmallResourceEnabled)); | 3844 TestConfig::kOptimizeIPCForSmallResourceEnabled)); |
| 3827 | 3845 |
| 3828 } // namespace content | 3846 } // namespace content |
| OLD | NEW |