Index: content/test/test_render_frame_host.cc |
diff --git a/content/test/test_render_frame_host.cc b/content/test/test_render_frame_host.cc |
index 988681c5e04102aa575b5ce7bb88d64e62d5c034..a294a9ff01b097282fc1b0f91cc46753e5f9d70e 100644 |
--- a/content/test/test_render_frame_host.cc |
+++ b/content/test/test_render_frame_host.cc |
@@ -200,67 +200,84 @@ void TestRenderFrameHost::SendNavigateWithParameters( |
OnDidCommitProvisionalLoad(msg); |
} |
-void TestRenderFrameHost::SendBeginNavigationWithURL(const GURL& url, |
- bool has_user_gesture) { |
- BeginNavigationParams begin_params("GET", std::string(), net::LOAD_NORMAL, |
- has_user_gesture); |
- CommonNavigationParams common_params; |
- common_params.url = url; |
- common_params.referrer = Referrer(GURL(), blink::WebReferrerPolicyDefault); |
- common_params.transition = ui::PAGE_TRANSITION_LINK; |
- OnBeginNavigation(common_params, begin_params, |
- scoped_refptr<ResourceRequestBody>()); |
+void TestRenderFrameHost::SendRendererInitiatedNavigationRequest( |
+ const GURL& url, |
+ bool has_user_gesture) { |
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnableBrowserSideNavigation)) { |
+ BeginNavigationParams begin_params("GET", std::string(), net::LOAD_NORMAL, |
+ has_user_gesture); |
+ CommonNavigationParams common_params; |
+ common_params.url = url; |
+ common_params.referrer = Referrer(GURL(), blink::WebReferrerPolicyDefault); |
+ common_params.transition = ui::PAGE_TRANSITION_LINK; |
+ OnBeginNavigation(common_params, begin_params, |
+ scoped_refptr<ResourceRequestBody>()); |
+ } |
} |
void TestRenderFrameHost::DidDisownOpener() { |
OnDidDisownOpener(); |
} |
-void TestRenderFrameHost::PrepareForCommit(const GURL& url) { |
+void TestRenderFrameHost::PrepareForCommit() { |
+ PrepareForCommitInternal(nullptr); |
+} |
+ |
+void TestRenderFrameHost::PrepareForCommitWithServerRedirect( |
+ const GURL& redirect_url) { |
+ PrepareForCommitInternal(&redirect_url); |
+} |
+ |
+void TestRenderFrameHost::SendBeforeUnloadHandlersPresent(bool present) { |
+ OnBeforeUnloadHandlersPresent(present); |
+} |
+ |
+void TestRenderFrameHost::SendUnloadHandlersPresent(bool present) { |
+ OnUnloadHandlersPresent(present); |
+} |
+ |
+void TestRenderFrameHost::PrepareForCommitInternal(const GURL* redirect_url) { |
if (!base::CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kEnableBrowserSideNavigation)) { |
+ // Non PlzNavigate |
SendBeforeUnloadACK(true); |
return; |
} |
// PlzNavigate |
- // Simulate the network stack commit without any redirects. |
NavigationRequest* request = |
static_cast<NavigatorImpl*>(frame_tree_node_->navigator()) |
->GetNavigationRequestForNodeForTesting(frame_tree_node_); |
+ CHECK(request); |
- // We are simulating a renderer-initiated user-initiated navigation. |
- if (!request) { |
- SendBeginNavigationWithURL(url, true); |
- request = static_cast<NavigatorImpl*>(frame_tree_node_->navigator()) |
- ->GetNavigationRequestForNodeForTesting(frame_tree_node_); |
- } |
- ASSERT_TRUE(request); |
- |
- // We may not have simulated the renderer response to the navigation request. |
- // Do that now. |
+ // Simulate a beforeUnload ACK from the renderer if the browser is waiting for |
+ // it. |
if (request->state() == NavigationRequest::WAITING_FOR_RENDERER_RESPONSE) |
SendBeforeUnloadACK(true); |
// We have already simulated the IO thread commit. Only the |
// DidCommitProvisionalLoad from the renderer is missing. |
- if (request->state() == NavigationRequest::RESPONSE_STARTED) |
+ if (request->state() == NavigationRequest::RESPONSE_STARTED) { |
+ // Checks if a server redirect was provided as in this case it will not be |
+ // used and it was an error from the test author to a ask for a redirect. |
clamy
2015/02/25 17:10:33
I would rephrase as something like:
"If a server r
carlosk
2015/02/25 19:30:21
Done.
|
+ CHECK(!redirect_url); |
return; |
+ } |
+ |
+ CHECK(request->state() == NavigationRequest::STARTED); |
- ASSERT_TRUE(request->state() == NavigationRequest::STARTED); |
TestNavigationURLLoader* url_loader = |
static_cast<TestNavigationURLLoader*>(request->loader_for_testing()); |
- ASSERT_TRUE(url_loader); |
- scoped_refptr<ResourceResponse> response(new ResourceResponse); |
- url_loader->CallOnResponseStarted(response, MakeEmptyStream()); |
-} |
+ CHECK(url_loader); |
-void TestRenderFrameHost::SendBeforeUnloadHandlersPresent(bool present) { |
- OnBeforeUnloadHandlersPresent(present); |
-} |
+ // If a |redirect_url| was provided, simulate a server redirect |
+ if (redirect_url) |
+ url_loader->SimulateServerRedirect(*redirect_url); |
-void TestRenderFrameHost::SendUnloadHandlersPresent(bool present) { |
- OnUnloadHandlersPresent(present); |
+ // Simulate the network stack commit |
+ scoped_refptr<ResourceResponse> response(new ResourceResponse); |
+ url_loader->CallOnResponseStarted(response, MakeEmptyStream()); |
} |
} // namespace content |