Chromium Code Reviews| 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 |