Index: content/browser/frame_host/navigator_impl_unittest.cc |
diff --git a/content/browser/frame_host/navigator_impl_unittest.cc b/content/browser/frame_host/navigator_impl_unittest.cc |
index c72708b8ffd09459bdcf60bbb436c267a9ce4b1c..7f40ebecbf9e036860216f3d1e8f1c45df5c220c 100644 |
--- a/content/browser/frame_host/navigator_impl_unittest.cc |
+++ b/content/browser/frame_host/navigator_impl_unittest.cc |
@@ -272,7 +272,7 @@ TEST_F(NavigatorTestWithBrowserSideNavigation, |
ASSERT_TRUE(request); |
EXPECT_TRUE(request->browser_initiated()); |
EXPECT_EQ(NavigationRequest::WAITING_FOR_RENDERER_RESPONSE, request->state()); |
- EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
+ EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); |
// Simulate a beforeUnload denial. |
main_test_rfh()->SendBeforeUnloadACK(false); |
@@ -331,7 +331,10 @@ TEST_F(NavigatorTestWithBrowserSideNavigation, BeginNavigation) { |
ASSERT_TRUE(main_request); |
EXPECT_EQ(NavigationRequest::WAITING_FOR_RENDERER_RESPONSE, |
main_request->state()); |
- EXPECT_FALSE(GetSpeculativeRenderFrameHost(root_node)); |
+ |
+ // Main frame navigation to a different site should use a speculative |
+ // RenderFrameHost. |
+ EXPECT_TRUE(GetSpeculativeRenderFrameHost(root_node)); |
// Simulate a BeforeUnloadACK IPC on the main frame. |
main_test_rfh()->SendBeforeUnloadACK(true); |
@@ -346,9 +349,6 @@ TEST_F(NavigatorTestWithBrowserSideNavigation, BeginNavigation) { |
// BeforeUnloadACK was received from the renderer so the navigation should |
// have started. |
EXPECT_EQ(NavigationRequest::STARTED, main_request->state()); |
- |
- // Main frame navigation to a different site should use a speculative |
- // RenderFrameHost. |
EXPECT_TRUE(GetSpeculativeRenderFrameHost(root_node)); |
// As the main frame hasn't yet committed the subframe still exists. Thus, the |
@@ -439,18 +439,18 @@ TEST_F(NavigatorTestWithBrowserSideNavigation, CrossSiteNavigation) { |
int entry_id = RequestNavigation(node, kUrl2); |
NavigationRequest* main_request = node->navigation_request(); |
ASSERT_TRUE(main_request); |
- EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
+ TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); |
+ ASSERT_TRUE(speculative_rfh); |
// Receive the beforeUnload ACK. |
main_test_rfh()->SendBeforeUnloadACK(true); |
- EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); |
+ EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node)); |
EXPECT_FALSE(contents()->CrossProcessNavigationPending()); |
scoped_refptr<ResourceResponse> response(new ResourceResponse); |
GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( |
response, MakeEmptyStream()); |
- TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); |
- ASSERT_TRUE(speculative_rfh); |
+ EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node)); |
EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); |
EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
EXPECT_TRUE(contents()->CrossProcessNavigationPending()); |
@@ -701,7 +701,7 @@ TEST_F(NavigatorTestWithBrowserSideNavigation, |
ASSERT_TRUE(request1); |
EXPECT_EQ(kUrl1, request1->common_params().url); |
EXPECT_TRUE(request1->browser_initiated()); |
- EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
+ EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); |
// Now receive a renderer-initiated non-user-initiated request. Nothing should |
// change. |
@@ -711,7 +711,7 @@ TEST_F(NavigatorTestWithBrowserSideNavigation, |
EXPECT_EQ(request1, request2); |
EXPECT_EQ(kUrl1, request2->common_params().url); |
EXPECT_TRUE(request2->browser_initiated()); |
- EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
+ EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); |
// Now receive the beforeUnload ACK from the still ongoing navigation. |
main_test_rfh()->SendBeforeUnloadACK(true); |
@@ -826,13 +826,13 @@ TEST_F(NavigatorTestWithBrowserSideNavigation, |
const GURL kUrl("http://google.com/"); |
process()->sink().ClearMessages(); |
int entry_id = RequestNavigation(node, kUrl); |
- EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
- |
- // Receive the beforeUnload ACK. |
- main_test_rfh()->SendBeforeUnloadACK(true); |
TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); |
ASSERT_TRUE(speculative_rfh); |
EXPECT_NE(speculative_rfh, main_test_rfh()); |
+ |
+ // Receive the beforeUnload ACK. |
+ main_test_rfh()->SendBeforeUnloadACK(true); |
+ EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node)); |
EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), |
speculative_rfh->GetSiteInstance()->GetSiteURL()); |
EXPECT_FALSE(node->render_manager()->pending_frame_host()); |
@@ -843,8 +843,7 @@ TEST_F(NavigatorTestWithBrowserSideNavigation, |
scoped_refptr<ResourceResponse> response(new ResourceResponse); |
GetLoaderForNavigationRequest(node->navigation_request()) |
->CallOnResponseStarted(response, MakeEmptyStream()); |
- speculative_rfh = GetSpeculativeRenderFrameHost(node); |
- ASSERT_TRUE(speculative_rfh); |
+ EXPECT_EQ(speculative_rfh, GetSpeculativeRenderFrameHost(node)); |
EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); |
EXPECT_EQ(site_instance_id, speculative_rfh->GetSiteInstance()->GetId()); |
EXPECT_FALSE(node->render_manager()->pending_frame_host()); |
@@ -870,19 +869,19 @@ TEST_F(NavigatorTestWithBrowserSideNavigation, |
const GURL kUrl("http://google.com/"); |
process()->sink().ClearMessages(); |
int entry_id = RequestNavigation(node, kUrl); |
- EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
- |
- // Receive the beforeUnload ACK. |
- main_test_rfh()->SendBeforeUnloadACK(true); |
TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); |
+ ASSERT_TRUE(speculative_rfh); |
int32 site_instance_id = speculative_rfh->GetSiteInstance()->GetId(); |
EXPECT_NE(init_site_instance_id, site_instance_id); |
EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); |
- ASSERT_TRUE(speculative_rfh); |
EXPECT_NE(speculative_rfh, main_test_rfh()); |
EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), |
speculative_rfh->GetSiteInstance()->GetSiteURL()); |
+ // Receive the beforeUnload ACK. |
+ main_test_rfh()->SendBeforeUnloadACK(true); |
+ EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); |
+ |
// It then redirects to yet another site. |
NavigationRequest* main_request = node->navigation_request(); |
ASSERT_TRUE(main_request); |
@@ -955,7 +954,7 @@ TEST_F(NavigatorTestWithBrowserSideNavigation, |
process()->sink().ClearMessages(); |
rfh1->GetProcess()->sink().ClearMessages(); |
int entry_id = RequestNavigation(node, kUrl1); |
- EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
+ EXPECT_EQ(rfh1, GetSpeculativeRenderFrameHost(node)); |
main_test_rfh()->SendBeforeUnloadACK(true); |
EXPECT_EQ(rfh1, GetSpeculativeRenderFrameHost(node)); |