| Index: content/browser/loader/resource_dispatcher_host_unittest.cc
|
| diff --git a/content/browser/loader/resource_dispatcher_host_unittest.cc b/content/browser/loader/resource_dispatcher_host_unittest.cc
|
| index 1518817856ed4a6add5ebcb39b2f6f284b749e82..af3e622f1c2caf048553c44f8e125246a0df0221 100644
|
| --- a/content/browser/loader/resource_dispatcher_host_unittest.cc
|
| +++ b/content/browser/loader/resource_dispatcher_host_unittest.cc
|
| @@ -28,8 +28,8 @@
|
| #include "content/browser/download/download_manager_impl.h"
|
| #include "content/browser/download/download_resource_handler.h"
|
| #include "content/browser/frame_host/navigation_request_info.h"
|
| -#include "content/browser/loader/cross_site_resource_handler.h"
|
| #include "content/browser/loader/detachable_resource_handler.h"
|
| +#include "content/browser/loader/navigation_resource_throttle.h"
|
| #include "content/browser/loader/navigation_url_loader.h"
|
| #include "content/browser/loader/resource_dispatcher_host_impl.h"
|
| #include "content/browser/loader/resource_loader.h"
|
| @@ -625,16 +625,6 @@ class TestUserData : public base::SupportsUserData::Data {
|
| bool* was_deleted_;
|
| };
|
|
|
| -class TransfersAllNavigationsContentBrowserClient
|
| - : public TestContentBrowserClient {
|
| - public:
|
| - bool ShouldSwapProcessesForRedirect(ResourceContext* resource_context,
|
| - const GURL& current_url,
|
| - const GURL& new_url) override {
|
| - return true;
|
| - }
|
| -};
|
| -
|
| enum GenericResourceThrottleFlags {
|
| NONE = 0,
|
| DEFER_STARTING_REQUEST = 1 << 0,
|
| @@ -2492,6 +2482,7 @@ TEST_P(ResourceDispatcherHostTest, MimeSniffEmpty) {
|
|
|
| // Tests for crbug.com/31266 (Non-2xx + application/octet-stream).
|
| TEST_P(ResourceDispatcherHostTest, ForbiddenDownload) {
|
| + NavigationResourceThrottle::SetUIChecksAlwaysSuccedForTesting(true);
|
| std::string raw_headers("HTTP/1.1 403 Forbidden\n"
|
| "Content-disposition: attachment; filename=blah\n"
|
| "Content-type: application/octet-stream\n\n");
|
| @@ -2519,6 +2510,8 @@ TEST_P(ResourceDispatcherHostTest, IgnoreCancelForDownloads) {
|
| return;
|
| }
|
|
|
| + NavigationResourceThrottle::SetUIChecksAlwaysSuccedForTesting(true);
|
| +
|
| EXPECT_EQ(0, host_.pending_requests());
|
|
|
| int render_view_id = 0;
|
| @@ -2562,6 +2555,7 @@ TEST_P(ResourceDispatcherHostTest, IgnoreCancelForDownloads) {
|
|
|
| TEST_P(ResourceDispatcherHostTest, CancelRequestsForContext) {
|
| EXPECT_EQ(0, host_.pending_requests());
|
| + NavigationResourceThrottle::SetUIChecksAlwaysSuccedForTesting(true);
|
|
|
| int render_view_id = 0;
|
| int request_id = 1;
|
| @@ -2677,6 +2671,8 @@ TEST_P(ResourceDispatcherHostTest, CancelRequestsForContextTransferred) {
|
| if (IsBrowserSideNavigationEnabled())
|
| return;
|
|
|
| + NavigationResourceThrottle::SetUIChecksAlwaysSuccedForTesting(true);
|
| +
|
| EXPECT_EQ(0, host_.pending_requests());
|
|
|
| int request_id = 1;
|
| @@ -2693,7 +2689,7 @@ TEST_P(ResourceDispatcherHostTest, CancelRequestsForContextTransferred) {
|
|
|
| GlobalRequestID global_request_id(web_contents_filter_->child_id(),
|
| request_id);
|
| - host_.MarkAsTransferredNavigation(global_request_id, nullptr);
|
| + host_.MarkAsTransferredNavigation(global_request_id, base::Closure());
|
|
|
| // And now simulate a cancellation coming from the renderer.
|
| ResourceHostMsg_CancelRequest msg(request_id);
|
| @@ -2720,12 +2716,12 @@ TEST_P(ResourceDispatcherHostTest, TransferNavigationHtml) {
|
| SUCCEED() << "Test is not applicable with browser side navigation enabled";
|
| return;
|
| }
|
| - // This test expects the cross site request to be leaked, so it can transfer
|
| - // the request directly.
|
| - CrossSiteResourceHandler::SetLeakRequestsForTesting(true);
|
|
|
| EXPECT_EQ(0, host_.pending_requests());
|
|
|
| + NavigationResourceThrottle::SetUIChecksAlwaysSuccedForTesting(true);
|
| + NavigationResourceThrottle::SetForceTransferForTesting(true);
|
| +
|
| int render_view_id = 0;
|
| int request_id = 1;
|
|
|
| @@ -2735,11 +2731,6 @@ TEST_P(ResourceDispatcherHostTest, TransferNavigationHtml) {
|
|
|
| HandleScheme("http");
|
|
|
| - // Temporarily replace ContentBrowserClient with one that will trigger the
|
| - // transfer navigation code paths.
|
| - TransfersAllNavigationsContentBrowserClient new_client;
|
| - ContentBrowserClient* old_client = SetBrowserClientForTesting(&new_client);
|
| -
|
| MakeTestRequestWithResourceType(filter_.get(), render_view_id, request_id,
|
| GURL("http://example.com/blah"),
|
| RESOURCE_TYPE_MAIN_FRAME);
|
| @@ -2758,9 +2749,6 @@ TEST_P(ResourceDispatcherHostTest, TransferNavigationHtml) {
|
| // MimeTypeResourceHandler.
|
| while (net::URLRequestTestJob::ProcessOnePendingMessage()) {}
|
|
|
| - // Restore, now that we've set up a transfer.
|
| - SetBrowserClientForTesting(old_client);
|
| -
|
| // This second filter is used to emulate a second process.
|
| scoped_refptr<ForwardingFilter> second_filter = MakeForwardingFilter();
|
|
|
| @@ -2794,9 +2782,9 @@ TEST_P(ResourceDispatcherHostTest, TransferNavigationCertificateUpdate) {
|
| SUCCEED() << "Test is not applicable with browser side navigation enabled";
|
| return;
|
| }
|
| - // This test expects the cross site request to be leaked, so it can transfer
|
| - // the request directly.
|
| - CrossSiteResourceHandler::SetLeakRequestsForTesting(true);
|
| +
|
| + NavigationResourceThrottle::SetUIChecksAlwaysSuccedForTesting(true);
|
| + NavigationResourceThrottle::SetForceTransferForTesting(true);
|
|
|
| EXPECT_EQ(0, host_.pending_requests());
|
|
|
| @@ -2810,11 +2798,6 @@ TEST_P(ResourceDispatcherHostTest, TransferNavigationCertificateUpdate) {
|
|
|
| HandleScheme("https");
|
|
|
| - // Temporarily replace ContentBrowserClient with one that will trigger the
|
| - // transfer navigation code paths.
|
| - TransfersAllNavigationsContentBrowserClient new_client;
|
| - ContentBrowserClient* old_client = SetBrowserClientForTesting(&new_client);
|
| -
|
| MakeTestRequestWithResourceType(filter_.get(), render_view_id, request_id,
|
| GURL("https://example2.com/blah"),
|
| RESOURCE_TYPE_MAIN_FRAME);
|
| @@ -2837,9 +2820,6 @@ TEST_P(ResourceDispatcherHostTest, TransferNavigationCertificateUpdate) {
|
| while (net::URLRequestTestJob::ProcessOnePendingMessage()) {
|
| }
|
|
|
| - // Restore, now that we've set up a transfer.
|
| - SetBrowserClientForTesting(old_client);
|
| -
|
| // This second filter is used to emulate a second process.
|
| scoped_refptr<ForwardingFilter> second_filter = MakeForwardingFilter();
|
|
|
| @@ -2887,9 +2867,9 @@ TEST_P(ResourceDispatcherHostTest, TransferTwoNavigationsHtml) {
|
| SUCCEED() << "Test is not applicable with browser side navigation enabled";
|
| return;
|
| }
|
| - // This test expects the cross site request to be leaked, so it can transfer
|
| - // the request directly.
|
| - CrossSiteResourceHandler::SetLeakRequestsForTesting(true);
|
| +
|
| + NavigationResourceThrottle::SetUIChecksAlwaysSuccedForTesting(true);
|
| + NavigationResourceThrottle::SetForceTransferForTesting(true);
|
|
|
| EXPECT_EQ(0, host_.pending_requests());
|
|
|
| @@ -2904,11 +2884,6 @@ TEST_P(ResourceDispatcherHostTest, TransferTwoNavigationsHtml) {
|
|
|
| HandleScheme("http");
|
|
|
| - // Temporarily replace ContentBrowserClient with one that will trigger the
|
| - // transfer navigation code paths.
|
| - TransfersAllNavigationsContentBrowserClient new_client;
|
| - ContentBrowserClient* old_client = SetBrowserClientForTesting(&new_client);
|
| -
|
| // Make the first request.
|
| MakeTestRequestWithResourceType(filter_.get(), render_view_id, request_id,
|
| GURL("http://example.com/blah"),
|
| @@ -2925,8 +2900,7 @@ TEST_P(ResourceDispatcherHostTest, TransferTwoNavigationsHtml) {
|
| // MimeTypeResourceHandler.
|
| while (net::URLRequestTestJob::ProcessOnePendingMessage()) {}
|
|
|
| - // Restore, now that we've set up a transfer.
|
| - SetBrowserClientForTesting(old_client);
|
| + NavigationResourceThrottle::SetForceTransferForTesting(false);
|
|
|
| // This second filter is used to emulate a second process.
|
| scoped_refptr<ForwardingFilter> second_filter = MakeForwardingFilter();
|
| @@ -2972,9 +2946,9 @@ TEST_P(ResourceDispatcherHostTest, TransferNavigationText) {
|
| SUCCEED() << "Test is not applicable with browser side navigation enabled";
|
| return;
|
| }
|
| - // This test expects the cross site request to be leaked, so it can transfer
|
| - // the request directly.
|
| - CrossSiteResourceHandler::SetLeakRequestsForTesting(true);
|
| +
|
| + NavigationResourceThrottle::SetUIChecksAlwaysSuccedForTesting(true);
|
| + NavigationResourceThrottle::SetForceTransferForTesting(true);
|
|
|
| EXPECT_EQ(0, host_.pending_requests());
|
|
|
| @@ -2987,11 +2961,6 @@ TEST_P(ResourceDispatcherHostTest, TransferNavigationText) {
|
|
|
| HandleScheme("http");
|
|
|
| - // Temporarily replace ContentBrowserClient with one that will trigger the
|
| - // transfer navigation code paths.
|
| - TransfersAllNavigationsContentBrowserClient new_client;
|
| - ContentBrowserClient* old_client = SetBrowserClientForTesting(&new_client);
|
| -
|
| MakeTestRequestWithResourceType(filter_.get(), render_view_id, request_id,
|
| GURL("http://example.com/blah"),
|
| RESOURCE_TYPE_MAIN_FRAME);
|
| @@ -3013,9 +2982,6 @@ TEST_P(ResourceDispatcherHostTest, TransferNavigationText) {
|
| while (net::URLRequestTestJob::ProcessOnePendingMessage()) {}
|
| base::RunLoop().RunUntilIdle();
|
|
|
| - // Restore, now that we've set up a transfer.
|
| - SetBrowserClientForTesting(old_client);
|
| -
|
| // This second filter is used to emulate a second process.
|
| scoped_refptr<ForwardingFilter> second_filter = MakeForwardingFilter();
|
|
|
| @@ -3046,9 +3012,9 @@ TEST_P(ResourceDispatcherHostTest, TransferNavigationWithProcessCrash) {
|
| SUCCEED() << "Test is not applicable with browser side navigation enabled";
|
| return;
|
| }
|
| - // This test expects the cross site request to be leaked, so it can transfer
|
| - // the request directly.
|
| - CrossSiteResourceHandler::SetLeakRequestsForTesting(true);
|
| +
|
| + NavigationResourceThrottle::SetUIChecksAlwaysSuccedForTesting(true);
|
| + NavigationResourceThrottle::SetForceTransferForTesting(true);
|
|
|
| EXPECT_EQ(0, host_.pending_requests());
|
|
|
| @@ -3063,11 +3029,6 @@ TEST_P(ResourceDispatcherHostTest, TransferNavigationWithProcessCrash) {
|
|
|
| HandleScheme("http");
|
|
|
| - // Temporarily replace ContentBrowserClient with one that will trigger the
|
| - // transfer navigation code paths.
|
| - TransfersAllNavigationsContentBrowserClient new_client;
|
| - ContentBrowserClient* old_client = SetBrowserClientForTesting(&new_client);
|
| -
|
| // Create a first filter that can be deleted before the second one starts.
|
| {
|
| scoped_refptr<ForwardingFilter> first_filter = MakeForwardingFilter();
|
| @@ -3096,9 +3057,6 @@ TEST_P(ResourceDispatcherHostTest, TransferNavigationWithProcessCrash) {
|
| }
|
| // The first filter is now deleted, as if the child process died.
|
|
|
| - // Restore.
|
| - SetBrowserClientForTesting(old_client);
|
| -
|
| // Make sure we don't hold onto the ResourceMessageFilter after it is deleted.
|
| GlobalRequestID first_global_request_id(first_child_id, request_id);
|
|
|
| @@ -3134,9 +3092,9 @@ TEST_P(ResourceDispatcherHostTest, TransferNavigationWithTwoRedirects) {
|
| SUCCEED() << "Test is not applicable with browser side navigation enabled";
|
| return;
|
| }
|
| - // This test expects the cross site request to be leaked, so it can transfer
|
| - // the request directly.
|
| - CrossSiteResourceHandler::SetLeakRequestsForTesting(true);
|
| +
|
| + NavigationResourceThrottle::SetUIChecksAlwaysSuccedForTesting(true);
|
| + NavigationResourceThrottle::SetForceTransferForTesting(true);
|
|
|
| EXPECT_EQ(0, host_.pending_requests());
|
|
|
| @@ -3149,11 +3107,6 @@ TEST_P(ResourceDispatcherHostTest, TransferNavigationWithTwoRedirects) {
|
|
|
| HandleScheme("http");
|
|
|
| - // Temporarily replace ContentBrowserClient with one that will trigger the
|
| - // transfer navigation code paths.
|
| - TransfersAllNavigationsContentBrowserClient new_client;
|
| - ContentBrowserClient* old_client = SetBrowserClientForTesting(&new_client);
|
| -
|
| MakeTestRequestWithResourceType(filter_.get(), render_view_id, request_id,
|
| GURL("http://example.com/blah"),
|
| RESOURCE_TYPE_MAIN_FRAME);
|
| @@ -3182,9 +3135,6 @@ TEST_P(ResourceDispatcherHostTest, TransferNavigationWithTwoRedirects) {
|
| while (net::URLRequestTestJob::ProcessOnePendingMessage()) {}
|
| base::RunLoop().RunUntilIdle();
|
|
|
| - // Restore.
|
| - SetBrowserClientForTesting(old_client);
|
| -
|
| // This second filter is used to emulate a second process.
|
| scoped_refptr<ForwardingFilter> second_filter = MakeForwardingFilter();
|
|
|
| @@ -3224,6 +3174,7 @@ TEST_P(ResourceDispatcherHostTest, TransferNavigationWithTwoRedirects) {
|
| }
|
|
|
| TEST_P(ResourceDispatcherHostTest, UnknownURLScheme) {
|
| + NavigationResourceThrottle::SetUIChecksAlwaysSuccedForTesting(true);
|
| EXPECT_EQ(0, host_.pending_requests());
|
|
|
| HandleScheme("http");
|
|
|