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 9249d2609ab7ce9f6e779c4223cb2112a8edbb0e..1e03dd9398222383fc405565a935c5d8df31d097 100644 |
| --- a/content/test/test_render_frame_host.cc |
| +++ b/content/test/test_render_frame_host.cc |
| @@ -189,65 +189,80 @@ void TestRenderFrameHost::SendNavigateWithParameters( |
| 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>()); |
| + 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 it's being expected. |
|
clamy
2015/02/25 14:29:49
nit: s/it's being expected/the browser is waiting
carlosk
2015/02/25 16:08:00
Done.
|
| 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) { |
| + CHECK(!redirect_url) << "Unable to simulate server redirect to \"" << |
|
clamy
2015/02/25 14:29:49
I noticed you like to add log to the CHECKs. This
carlosk
2015/02/25 16:08:00
I think this still makes it easier when running a
clamy
2015/02/25 17:10:33
I would be fine if this was a DCHECK, but it is a
carlosk
2015/02/25 19:30:21
Acknowledged.
|
| + 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 |