| 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 2f0ece60fe71525184ab306a57638b7bf5dd2fa9..d029388f716841fbbc822ad860cdf751d430aeb0 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()->cross_navigation_pending());
|
|
|
| @@ -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());
|
| @@ -449,21 +451,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->cross_navigation_pending());
|
| - 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->cross_navigation_pending());
|
| 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());
|
| @@ -479,8 +483,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());
|
| @@ -813,6 +819,7 @@ TEST_F(RenderFrameHostManagerTest, AlwaysSendEnableViewSourceMode) {
|
| // Navigate.
|
| controller().LoadURL(
|
| kUrl, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
|
| + int entry_id = controller().GetPendingEntry()->GetUniqueID();
|
| // Simulate response from RenderFrame for DispatchBeforeUnload.
|
| contents()->GetMainFrame()->PrepareForCommit();
|
| ASSERT_TRUE(contents()->GetPendingMainFrame())
|
| @@ -820,7 +827,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(controller().GetLastCommittedEntryIndex(), 1);
|
| ASSERT_TRUE(controller().GetLastCommittedEntry());
|
| EXPECT_TRUE(kUrl == controller().GetLastCommittedEntry()->GetURL());
|
| @@ -834,12 +841,13 @@ TEST_F(RenderFrameHostManagerTest, AlwaysSendEnableViewSourceMode) {
|
| // Navigate, again.
|
| controller().LoadURL(
|
| kUrl, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
|
| + entry_id = controller().GetPendingEntry()->GetUniqueID();
|
| contents()->GetMainFrame()->PrepareForCommit();
|
| // The same RenderViewHost should be reused.
|
| EXPECT_FALSE(contents()->GetPendingMainFrame());
|
| EXPECT_TRUE(last_rfh == contents()->GetMainFrame());
|
| // Navigate using the returned page_id.
|
| - contents()->GetMainFrame()->SendNavigate(new_id, kUrl);
|
| + contents()->GetMainFrame()->SendNavigate(new_id, entry_id, false, kUrl);
|
| EXPECT_EQ(controller().GetLastCommittedEntryIndex(), 1);
|
| EXPECT_FALSE(controller().GetPendingEntry());
|
| // New message should be sent out to make sure to enter view-source mode.
|
| @@ -1104,7 +1112,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;
|
| @@ -1184,7 +1194,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());
|
|
|
| @@ -1192,7 +1203,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());
|
| @@ -1371,7 +1383,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());
|
| @@ -1404,7 +1417,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();
|
| @@ -1678,6 +1692,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()->cross_navigation_pending());
|
| EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state());
|
| @@ -1690,7 +1705,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()->cross_navigation_pending());
|
| EXPECT_EQ(rfh2, contents()->GetMainFrame());
|
| EXPECT_TRUE(contents()->GetPendingMainFrame() == NULL);
|
| @@ -1726,13 +1742,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()->cross_navigation_pending());
|
| 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()->cross_navigation_pending());
|
| EXPECT_EQ(rfh2, contents()->GetMainFrame());
|
| EXPECT_TRUE(contents()->GetPendingMainFrame() == NULL);
|
| @@ -1769,12 +1787,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()->cross_navigation_pending());
|
| 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()->cross_navigation_pending());
|
| EXPECT_EQ(rfh2, contents()->GetMainFrame());
|
| EXPECT_TRUE(contents()->GetPendingMainFrame() == NULL);
|
|
|