Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1117)

Unified Diff: content/browser/loader/resource_dispatcher_host_unittest.cc

Issue 2397893002: Revert the merge of CrossSiteResourceHandler and NavigationResourceThrottle. (Closed)
Patch Set: Add back initialization of started_from_context_menu_. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/loader/resource_dispatcher_host_impl.cc ('k') | content/browser/loader/resource_loader.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 91f332d045833acb60c0fd21cd67c60c739ff092..a4bcf9b425a7da3acbc2f2978eccacb1ecb8be8b 100644
--- a/content/browser/loader/resource_dispatcher_host_unittest.cc
+++ b/content/browser/loader/resource_dispatcher_host_unittest.cc
@@ -27,6 +27,7 @@
#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"
@@ -618,6 +619,16 @@ 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,
@@ -2676,7 +2687,7 @@ TEST_P(ResourceDispatcherHostTest, CancelRequestsForContextTransferred) {
GlobalRequestID global_request_id(web_contents_filter_->child_id(),
request_id);
- host_.MarkAsTransferredNavigation(global_request_id, base::Closure());
+ host_.MarkAsTransferredNavigation(global_request_id, nullptr);
// And now simulate a cancellation coming from the renderer.
ResourceHostMsg_CancelRequest msg(request_id);
@@ -2703,11 +2714,13 @@ 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::set_ui_checks_always_succeed_for_testing(true);
- NavigationResourceThrottle::set_force_transfer_for_testing(true);
int render_view_id = 0;
int request_id = 1;
@@ -2718,6 +2731,11 @@ 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);
@@ -2736,6 +2754,9 @@ 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();
@@ -2768,8 +2789,10 @@ 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::set_force_transfer_for_testing(true);
NavigationResourceThrottle::set_ui_checks_always_succeed_for_testing(true);
EXPECT_EQ(0, host_.pending_requests());
@@ -2785,6 +2808,11 @@ 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"),
@@ -2801,7 +2829,8 @@ TEST_P(ResourceDispatcherHostTest, TransferTwoNavigationsHtml) {
// MimeTypeResourceHandler.
while (net::URLRequestTestJob::ProcessOnePendingMessage()) {}
- NavigationResourceThrottle::set_force_transfer_for_testing(false);
+ // 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();
@@ -2847,8 +2876,10 @@ 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::set_force_transfer_for_testing(true);
NavigationResourceThrottle::set_ui_checks_always_succeed_for_testing(true);
EXPECT_EQ(0, host_.pending_requests());
@@ -2862,6 +2893,11 @@ 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);
@@ -2883,6 +2919,9 @@ 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();
@@ -2913,8 +2952,10 @@ 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::set_force_transfer_for_testing(true);
NavigationResourceThrottle::set_ui_checks_always_succeed_for_testing(true);
EXPECT_EQ(0, host_.pending_requests());
@@ -2930,6 +2971,11 @@ 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();
@@ -2958,6 +3004,9 @@ 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);
@@ -2993,8 +3042,10 @@ 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::set_force_transfer_for_testing(true);
NavigationResourceThrottle::set_ui_checks_always_succeed_for_testing(true);
EXPECT_EQ(0, host_.pending_requests());
@@ -3008,6 +3059,11 @@ 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);
@@ -3036,6 +3092,9 @@ 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();
« no previous file with comments | « content/browser/loader/resource_dispatcher_host_impl.cc ('k') | content/browser/loader/resource_loader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698