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"); |