Index: content/browser/frame_host/render_frame_host_manager_unittest.cc |
diff --git a/content/browser/frame_host/render_frame_host_manager_unittest.cc b/content/browser/frame_host/render_frame_host_manager_unittest.cc |
index c5ea0e642f5211f679c294389aef6b0b46d0acad..0d3659752de844ba1a1d45ec9aaced0548bb57d9 100644 |
--- a/content/browser/frame_host/render_frame_host_manager_unittest.cc |
+++ b/content/browser/frame_host/render_frame_host_manager_unittest.cc |
@@ -262,6 +262,7 @@ class RenderFrameHostManagerTest : public RenderViewHostImplTestHarness { |
// for us. |
controller().LoadURL( |
url, Referrer(), ui::PAGE_TRANSITION_LINK, std::string()); |
+ int entry_id = controller().GetPendingEntry()->GetUniqueID(); |
// Simulate the BeforeUnload_ACK that is received from the current renderer |
// for a cross-site navigation. |
@@ -288,7 +289,7 @@ class RenderFrameHostManagerTest : public RenderViewHostImplTestHarness { |
// state is being checked. |
RenderFrameHostDeletedObserver rfh_observer(old_rfh); |
RenderViewHostDeletedObserver rvh_observer(old_rfh->GetRenderViewHost()); |
- active_rfh->SendNavigate(max_page_id + 1, url); |
+ active_rfh->SendNavigate(max_page_id + 1, entry_id, true, url); |
// Make sure that we start to run the unload handler at the time of commit. |
bool expecting_rfh_shutdown = false; |
@@ -351,6 +352,7 @@ class RenderFrameHostManagerTest : public RenderViewHostImplTestHarness { |
// Navigate to a cross-site URL. |
contents()->GetController().LoadURL( |
kDestUrl, Referrer(), ui::PAGE_TRANSITION_LINK, std::string()); |
+ int entry_id = contents()->GetController().GetPendingEntry()->GetUniqueID(); |
contents()->GetMainFrame()->PrepareForCommit(); |
EXPECT_TRUE(contents()->CrossProcessNavigationPending()); |
@@ -366,7 +368,7 @@ class RenderFrameHostManagerTest : public RenderViewHostImplTestHarness { |
// BeforeUnload finishes. |
ntp_rfh->SendBeforeUnloadACK(true); |
- dest_rfh->SendNavigate(101, kDestUrl); |
+ dest_rfh->SendNavigate(101, entry_id, true, kDestUrl); |
ntp_rfh->OnSwappedOut(); |
EXPECT_TRUE(ntp_rfh->is_swapped_out()); |
@@ -435,21 +437,23 @@ TEST_F(RenderFrameHostManagerTest, NewTabPageProcesses) { |
// we use the committed one. |
contents2->GetController().LoadURL( |
kChromeUrl, Referrer(), ui::PAGE_TRANSITION_LINK, std::string()); |
+ int entry_id = contents2->GetController().GetPendingEntry()->GetUniqueID(); |
contents2->GetMainFrame()->PrepareForCommit(); |
TestRenderFrameHost* ntp_rfh2 = contents2->GetMainFrame(); |
EXPECT_FALSE(contents2->CrossProcessNavigationPending()); |
- ntp_rfh2->SendNavigate(100, kChromeUrl); |
+ ntp_rfh2->SendNavigate(100, entry_id, true, kChromeUrl); |
// The second one is the opposite, creating a cross-site transition and |
// requiring a beforeunload ack. |
contents2->GetController().LoadURL( |
kDestUrl, Referrer(), ui::PAGE_TRANSITION_LINK, std::string()); |
+ entry_id = contents2->GetController().GetPendingEntry()->GetUniqueID(); |
contents2->GetMainFrame()->PrepareForCommit(); |
EXPECT_TRUE(contents2->CrossProcessNavigationPending()); |
TestRenderFrameHost* dest_rfh2 = contents2->GetPendingMainFrame(); |
ASSERT_TRUE(dest_rfh2); |
- dest_rfh2->SendNavigate(101, kDestUrl); |
+ dest_rfh2->SendNavigate(101, entry_id, true, kDestUrl); |
// The two RFH's should be different in every way. |
EXPECT_NE(contents()->GetMainFrame()->GetProcess(), dest_rfh2->GetProcess()); |
@@ -465,8 +469,10 @@ TEST_F(RenderFrameHostManagerTest, NewTabPageProcesses) { |
contents2->GetController().LoadURL( |
kChromeUrl, Referrer(), ui::PAGE_TRANSITION_LINK, std::string()); |
+ entry_id = contents2->GetController().GetPendingEntry()->GetUniqueID(); |
contents2->GetMainFrame()->PrepareForCommit(); |
- contents2->GetPendingMainFrame()->SendNavigate(102, kChromeUrl); |
+ contents2->GetPendingMainFrame()->SendNavigate(102, entry_id, true, |
+ kChromeUrl); |
EXPECT_NE(contents()->GetMainFrame()->GetSiteInstance(), |
contents2->GetMainFrame()->GetSiteInstance()); |
@@ -597,9 +603,11 @@ TEST_F(RenderFrameHostManagerTest, UpdateFaviconURLWhilePendingSwapOut) { |
// Navigate to a cross-site URL and commit the new page. |
controller().LoadURL( |
kDestUrl, Referrer(), ui::PAGE_TRANSITION_LINK, std::string()); |
+ int entry_id = controller().GetPendingEntry()->GetUniqueID(); |
contents()->GetMainFrame()->PrepareForCommit(); |
TestRenderFrameHost* rfh2 = contents()->GetPendingMainFrame(); |
- contents()->TestDidNavigate(rfh2, 1, kDestUrl, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(rfh2, 1, entry_id, true, kDestUrl, |
+ ui::PAGE_TRANSITION_TYPED); |
EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh2->rfh_state()); |
EXPECT_EQ(RenderFrameHostImpl::STATE_PENDING_SWAP_OUT, rfh1->rfh_state()); |
@@ -853,6 +861,7 @@ TEST_F(RenderFrameHostManagerTest, AlwaysSendEnableViewSourceMode) { |
// GetURL() call. |
controller().LoadURL( |
kViewSourceUrl, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ int entry_id = controller().GetPendingEntry()->GetUniqueID(); |
// Simulate response from RenderFrame for DispatchBeforeUnload. |
contents()->GetMainFrame()->PrepareForCommit(); |
@@ -861,7 +870,7 @@ TEST_F(RenderFrameHostManagerTest, AlwaysSendEnableViewSourceMode) { |
RenderFrameHost* last_rfh = contents()->GetPendingMainFrame(); |
int32 new_id = |
contents()->GetMaxPageIDForSiteInstance(last_rfh->GetSiteInstance()) + 1; |
- contents()->GetPendingMainFrame()->SendNavigate(new_id, kUrl); |
+ contents()->GetPendingMainFrame()->SendNavigate(new_id, entry_id, true, kUrl); |
EXPECT_EQ(1, controller().GetLastCommittedEntryIndex()); |
NavigationEntry* last_committed = controller().GetLastCommittedEntry(); |
@@ -879,6 +888,7 @@ TEST_F(RenderFrameHostManagerTest, AlwaysSendEnableViewSourceMode) { |
// Navigate, again. |
controller().LoadURL( |
kViewSourceUrl, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ entry_id = controller().GetPendingEntry()->GetUniqueID(); |
contents()->GetMainFrame()->PrepareForCommit(); |
// The same RenderViewHost should be reused. |
@@ -886,7 +896,8 @@ TEST_F(RenderFrameHostManagerTest, AlwaysSendEnableViewSourceMode) { |
EXPECT_EQ(last_rfh, contents()->GetMainFrame()); |
// The renderer sends a commit. |
- contents()->GetMainFrame()->SendNavigate(new_id, kUrl); |
+ contents()->GetMainFrame()->SendNavigateWithTransition( |
+ new_id, entry_id, false, kUrl, ui::PAGE_TRANSITION_TYPED); |
EXPECT_EQ(1, controller().GetLastCommittedEntryIndex()); |
EXPECT_FALSE(controller().GetPendingEntry()); |
@@ -1187,7 +1198,9 @@ TEST_F(RenderFrameHostManagerTest, PageDoesBackAndReload) { |
// Before that RFH has committed, the evil page reloads itself. |
FrameHostMsg_DidCommitProvisionalLoad_Params params; |
- params.page_id = 1; |
+ params.page_id = 0; |
+ params.nav_entry_id = 0; |
+ params.did_create_new_entry = false; |
params.url = kUrl2; |
params.transition = ui::PAGE_TRANSITION_CLIENT_REDIRECT; |
params.should_update_history = false; |
@@ -1267,7 +1280,8 @@ TEST_F(RenderFrameHostManagerTest, NavigateAfterMissingSwapOutACK) { |
// The back navigation commits. |
const NavigationEntry* entry1 = contents()->GetController().GetPendingEntry(); |
- rfh1->SendNavigate(entry1->GetPageID(), entry1->GetURL()); |
+ rfh1->SendNavigate(entry1->GetPageID(), entry1->GetUniqueID(), false, |
+ entry1->GetURL()); |
EXPECT_TRUE(rfh2->IsWaitingForUnloadACK()); |
EXPECT_EQ(RenderFrameHostImpl::STATE_PENDING_SWAP_OUT, rfh2->rfh_state()); |
@@ -1275,7 +1289,8 @@ TEST_F(RenderFrameHostManagerTest, NavigateAfterMissingSwapOutACK) { |
contents()->GetController().GoForward(); |
contents()->GetMainFrame()->PrepareForCommit(); |
const NavigationEntry* entry2 = contents()->GetController().GetPendingEntry(); |
- rfh2->SendNavigate(entry2->GetPageID(), entry2->GetURL()); |
+ rfh2->SendNavigate(entry2->GetPageID(), entry2->GetUniqueID(), false, |
+ entry2->GetURL()); |
EXPECT_EQ(rfh2, main_test_rfh()); |
EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh2->rfh_state()); |
EXPECT_EQ(RenderFrameHostImpl::STATE_PENDING_SWAP_OUT, rfh1->rfh_state()); |
@@ -1454,7 +1469,8 @@ TEST_F(RenderFrameHostManagerTest, DisownOpenerDuringNavigation) { |
// The back navigation commits. |
const NavigationEntry* entry1 = contents()->GetController().GetPendingEntry(); |
- rfh1->SendNavigate(entry1->GetPageID(), entry1->GetURL()); |
+ rfh1->SendNavigate(entry1->GetPageID(), entry1->GetUniqueID(), false, |
+ entry1->GetURL()); |
// Ensure the opener is still cleared. |
EXPECT_FALSE(contents()->HasOpener()); |
@@ -1487,7 +1503,8 @@ TEST_F(RenderFrameHostManagerTest, DisownOpenerAfterNavigation) { |
contents()->GetController().GoBack(); |
contents()->GetMainFrame()->PrepareForCommit(); |
const NavigationEntry* entry1 = contents()->GetController().GetPendingEntry(); |
- rfh1->SendNavigate(entry1->GetPageID(), entry1->GetURL()); |
+ rfh1->SendNavigate(entry1->GetPageID(), entry1->GetUniqueID(), false, |
+ entry1->GetURL()); |
// Disown the opener from rfh2. |
rfh2->DidDisownOpener(); |
@@ -1761,6 +1778,7 @@ TEST_F(RenderFrameHostManagerTest, DeleteFrameAfterSwapOutACK) { |
// Navigate to new site, simulating onbeforeunload approval. |
controller().LoadURL( |
kUrl2, Referrer(), ui::PAGE_TRANSITION_LINK, std::string()); |
+ int entry_id = controller().GetPendingEntry()->GetUniqueID(); |
contents()->GetMainFrame()->PrepareForCommit(); |
EXPECT_TRUE(contents()->CrossProcessNavigationPending()); |
EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state()); |
@@ -1773,7 +1791,8 @@ TEST_F(RenderFrameHostManagerTest, DeleteFrameAfterSwapOutACK) { |
EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state()); |
// The new page commits. |
- contents()->TestDidNavigate(rfh2, 1, kUrl2, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(rfh2, 1, entry_id, true, kUrl2, |
+ ui::PAGE_TRANSITION_TYPED); |
EXPECT_FALSE(contents()->CrossProcessNavigationPending()); |
EXPECT_EQ(rfh2, contents()->GetMainFrame()); |
EXPECT_TRUE(contents()->GetPendingMainFrame() == NULL); |
@@ -1809,13 +1828,15 @@ TEST_F(RenderFrameHostManagerTest, SwapOutFrameAfterSwapOutACK) { |
// Navigate to new site, simulating onbeforeunload approval. |
controller().LoadURL( |
kUrl2, Referrer(), ui::PAGE_TRANSITION_LINK, std::string()); |
+ int entry_id = controller().GetPendingEntry()->GetUniqueID(); |
contents()->GetMainFrame()->PrepareForCommit(); |
EXPECT_TRUE(contents()->CrossProcessNavigationPending()); |
EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state()); |
TestRenderFrameHost* rfh2 = contents()->GetPendingMainFrame(); |
// The new page commits. |
- contents()->TestDidNavigate(rfh2, 1, kUrl2, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(rfh2, 1, entry_id, true, kUrl2, |
+ ui::PAGE_TRANSITION_TYPED); |
EXPECT_FALSE(contents()->CrossProcessNavigationPending()); |
EXPECT_EQ(rfh2, contents()->GetMainFrame()); |
EXPECT_TRUE(contents()->GetPendingMainFrame() == NULL); |
@@ -1852,12 +1873,14 @@ TEST_F(RenderFrameHostManagerTest, |
// Navigate to new site, simulating onbeforeunload approval. |
controller().LoadURL( |
kUrl2, Referrer(), ui::PAGE_TRANSITION_LINK, std::string()); |
+ int entry_id = controller().GetPendingEntry()->GetUniqueID(); |
rfh1->PrepareForCommit(); |
EXPECT_TRUE(contents()->CrossProcessNavigationPending()); |
TestRenderFrameHost* rfh2 = contents()->GetPendingMainFrame(); |
// The new page commits. |
- contents()->TestDidNavigate(rfh2, 1, kUrl2, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(rfh2, 1, entry_id, true, kUrl2, |
+ ui::PAGE_TRANSITION_TYPED); |
EXPECT_FALSE(contents()->CrossProcessNavigationPending()); |
EXPECT_EQ(rfh2, contents()->GetMainFrame()); |
EXPECT_TRUE(contents()->GetPendingMainFrame() == NULL); |