Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(493)

Unified Diff: content/browser/frame_host/render_frame_host_manager_unittest.cc

Issue 789643005: PlzNavigate: make content unit tests work with browser side navigation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@cancel-navigations
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 4f38c49ac48b8eed92aea0ccdf7ad560cc8c2ae5..b1e9873d750ea7bff6011a1cf865dd33fbf58da0 100644
--- a/content/browser/frame_host/render_frame_host_manager_unittest.cc
+++ b/content/browser/frame_host/render_frame_host_manager_unittest.cc
@@ -261,17 +261,16 @@ class RenderFrameHostManagerTest : public RenderViewHostImplTestHarness {
// for us.
controller().LoadURL(
url, Referrer(), ui::PAGE_TRANSITION_LINK, std::string());
+
+ // Simulate the BeforeUnload_ACK that is received from the current renderer
+ // for a cross-site navigation.
+ contents()->GetMainFrame()->PrepareForCommit(url);
clamy 2015/01/13 12:41:59 It was necessary to move this above the part where
nasko 2015/01/17 00:22:01 Can you put some of this explanation in the actual
clamy 2015/01/19 17:29:20 Done.
+
TestRenderFrameHost* old_rfh = contents()->GetMainFrame();
TestRenderFrameHost* active_rfh = contents()->GetPendingMainFrame()
? contents()->GetPendingMainFrame()
: old_rfh;
-
- // Simulate the BeforeUnload_ACK that is received from the current renderer
- // for a cross-site navigation.
- if (old_rfh != active_rfh) {
- old_rfh->SendBeforeUnloadACK(true);
- EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, old_rfh->rfh_state());
- }
+ EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, old_rfh->rfh_state());
// Commit the navigation with a new page ID.
int32 max_page_id = contents()->GetMaxPageIDForSiteInstance(
@@ -344,6 +343,7 @@ class RenderFrameHostManagerTest : public RenderViewHostImplTestHarness {
// Navigate to a cross-site URL.
contents()->GetController().LoadURL(
kDestUrl, Referrer(), ui::PAGE_TRANSITION_LINK, std::string());
+ contents()->GetMainFrame()->PrepareForCommit(kDestUrl);
EXPECT_TRUE(contents()->cross_navigation_pending());
// Manually increase the number of active frames in the
@@ -395,6 +395,7 @@ TEST_F(RenderFrameHostManagerTest, NewTabPageProcesses) {
// we use the committed one.
contents2->GetController().LoadURL(
kChromeUrl, Referrer(), ui::PAGE_TRANSITION_LINK, std::string());
+ contents2->GetMainFrame()->PrepareForCommit(kChromeUrl);
TestRenderFrameHost* ntp_rfh2 = contents2->GetMainFrame();
EXPECT_FALSE(contents2->cross_navigation_pending());
ntp_rfh2->SendNavigate(100, kChromeUrl);
@@ -403,11 +404,11 @@ TEST_F(RenderFrameHostManagerTest, NewTabPageProcesses) {
// requiring a beforeunload ack.
contents2->GetController().LoadURL(
kDestUrl, Referrer(), ui::PAGE_TRANSITION_LINK, std::string());
+ contents2->GetMainFrame()->PrepareForCommit(kDestUrl);
EXPECT_TRUE(contents2->cross_navigation_pending());
TestRenderFrameHost* dest_rfh2 = contents2->GetPendingMainFrame();
ASSERT_TRUE(dest_rfh2);
- ntp_rfh2->SendBeforeUnloadACK(true);
dest_rfh2->SendNavigate(101, kDestUrl);
// The two RFH's should be different in every way.
@@ -424,7 +425,7 @@ TEST_F(RenderFrameHostManagerTest, NewTabPageProcesses) {
contents2->GetController().LoadURL(
kChromeUrl, Referrer(), ui::PAGE_TRANSITION_LINK, std::string());
- dest_rfh2->SendBeforeUnloadACK(true);
+ contents2->GetMainFrame()->PrepareForCommit(kChromeUrl);
contents2->GetPendingMainFrame()->SendNavigate(102, kChromeUrl);
EXPECT_NE(contents()->GetMainFrame()->GetSiteInstance(),
@@ -757,9 +758,7 @@ TEST_F(RenderFrameHostManagerTest, AlwaysSendEnableViewSourceMode) {
controller().LoadURL(
kUrl, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
// Simulate response from RenderFrame for DispatchBeforeUnload.
- base::TimeTicks now = base::TimeTicks::Now();
- contents()->GetMainFrame()->OnMessageReceived(FrameHostMsg_BeforeUnload_ACK(
- contents()->GetMainFrame()->GetRoutingID(), true, now, now));
+ contents()->GetMainFrame()->PrepareForCommit(kUrl);
ASSERT_TRUE(contents()->GetPendingMainFrame())
<< "Expected new pending RenderFrameHost to be created.";
RenderFrameHost* last_rfh = contents()->GetPendingMainFrame();
@@ -779,6 +778,7 @@ TEST_F(RenderFrameHostManagerTest, AlwaysSendEnableViewSourceMode) {
// Navigate, again.
controller().LoadURL(
kUrl, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
+ contents()->GetMainFrame()->PrepareForCommit(kUrl);
// The same RenderViewHost should be reused.
EXPECT_FALSE(contents()->GetPendingMainFrame());
EXPECT_TRUE(last_rfh == contents()->GetMainFrame());
@@ -1022,6 +1022,7 @@ TEST_F(RenderFrameHostManagerTest, PageDoesBackAndReload) {
// Now let's simulate the evil page calling history.back().
contents()->OnGoToEntryAtOffset(-1);
+ contents()->GetMainFrame()->PrepareForCommit(kUrl1);
// We should have a new pending RFH.
// Note that in this case, the navigation has not committed, so evil_rfh will
// not be deleted yet.
@@ -1105,9 +1106,9 @@ TEST_F(RenderFrameHostManagerTest, NavigateAfterMissingSwapOutACK) {
// happen, but we have seen it when going back quickly across many entries
// (http://crbug.com/93427).
contents()->GetController().GoBack();
- EXPECT_TRUE(rfh2->is_waiting_for_beforeunload_ack());
- contents()->ProceedWithCrossSiteNavigation();
- EXPECT_FALSE(rfh2->is_waiting_for_beforeunload_ack());
+ EXPECT_TRUE(rfh2->IsWaitingForBeforeUnloadACK());
+ contents()->GetMainFrame()->PrepareForCommit(kUrl1);
+ EXPECT_FALSE(rfh2->IsWaitingForBeforeUnloadACK());
// The back navigation commits.
const NavigationEntry* entry1 = contents()->GetController().GetPendingEntry();
@@ -1117,7 +1118,7 @@ TEST_F(RenderFrameHostManagerTest, NavigateAfterMissingSwapOutACK) {
// We should be able to navigate forward.
contents()->GetController().GoForward();
- contents()->ProceedWithCrossSiteNavigation();
+ contents()->GetMainFrame()->PrepareForCommit(kUrl2);
const NavigationEntry* entry2 = contents()->GetController().GetPendingEntry();
rfh2->SendNavigate(entry2->GetPageID(), entry2->GetURL());
EXPECT_EQ(rfh2, main_test_rfh());
@@ -1288,7 +1289,7 @@ TEST_F(RenderFrameHostManagerTest, DisownOpenerDuringNavigation) {
// Start a back navigation so that rfh1 becomes the pending RFH.
contents()->GetController().GoBack();
- contents()->ProceedWithCrossSiteNavigation();
+ contents()->GetMainFrame()->PrepareForCommit(kUrl1);
// Disown the opener from rfh2.
rfh2->DidDisownOpener();
@@ -1329,7 +1330,7 @@ TEST_F(RenderFrameHostManagerTest, DisownOpenerAfterNavigation) {
// Commit a back navigation before the DidDisownOpener message arrives.
// rfh1 will be kept alive because of the opener tab.
contents()->GetController().GoBack();
- contents()->ProceedWithCrossSiteNavigation();
+ contents()->GetMainFrame()->PrepareForCommit(kUrl1);
const NavigationEntry* entry1 = contents()->GetController().GetPendingEntry();
rfh1->SendNavigate(entry1->GetPageID(), entry1->GetURL());
@@ -1385,6 +1386,7 @@ TEST_F(RenderFrameHostManagerTest, CleanUpSwappedOutRVHOnProcessCrash) {
// Reload the initial tab. This should recreate the opener's swapped out RVH
// in the original SiteInstance.
contents()->GetController().Reload(true);
+ contents()->GetMainFrame()->PrepareForCommit(kUrl1);
EXPECT_EQ(opener1_manager->GetSwappedOutRenderViewHost(
rvh1->GetSiteInstance())->GetRoutingID(),
test_rvh()->opener_route_id());
@@ -1577,6 +1579,10 @@ TEST_F(RenderFrameHostManagerTest, CloseWithPendingWhileUnresponsive) {
// Start a navigation to a new site.
controller().LoadURL(
kUrl2, Referrer(), ui::PAGE_TRANSITION_LINK, std::string());
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kEnableBrowserSideNavigation)) {
+ rfh1->PrepareForCommit(kUrl2);
+ }
EXPECT_TRUE(contents()->cross_navigation_pending());
// Simulate the unresponsiveness timer. The tab should close.
@@ -1600,9 +1606,7 @@ TEST_F(RenderFrameHostManagerTest, DeleteFrameAfterSwapOutACK) {
// Navigate to new site, simulating onbeforeunload approval.
controller().LoadURL(
kUrl2, Referrer(), ui::PAGE_TRANSITION_LINK, std::string());
- base::TimeTicks now = base::TimeTicks::Now();
- contents()->GetMainFrame()->OnMessageReceived(
- FrameHostMsg_BeforeUnload_ACK(0, true, now, now));
+ contents()->GetMainFrame()->PrepareForCommit(kUrl2);
EXPECT_TRUE(contents()->cross_navigation_pending());
EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state());
TestRenderFrameHost* rfh2 = contents()->GetPendingMainFrame();
@@ -1650,9 +1654,7 @@ TEST_F(RenderFrameHostManagerTest, SwapOutFrameAfterSwapOutACK) {
// Navigate to new site, simulating onbeforeunload approval.
controller().LoadURL(
kUrl2, Referrer(), ui::PAGE_TRANSITION_LINK, std::string());
- base::TimeTicks now = base::TimeTicks::Now();
- contents()->GetMainFrame()->OnMessageReceived(
- FrameHostMsg_BeforeUnload_ACK(0, true, now, now));
+ contents()->GetMainFrame()->PrepareForCommit(kUrl2);
EXPECT_TRUE(contents()->cross_navigation_pending());
EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state());
TestRenderFrameHost* rfh2 = contents()->GetPendingMainFrame();
@@ -1695,9 +1697,7 @@ TEST_F(RenderFrameHostManagerTest,
// Navigate to new site, simulating onbeforeunload approval.
controller().LoadURL(
kUrl2, Referrer(), ui::PAGE_TRANSITION_LINK, std::string());
- base::TimeTicks now = base::TimeTicks::Now();
- rfh1->OnMessageReceived(
- FrameHostMsg_BeforeUnload_ACK(0, true, now, now));
+ rfh1->PrepareForCommit(kUrl2);
EXPECT_TRUE(contents()->cross_navigation_pending());
TestRenderFrameHost* rfh2 = contents()->GetPendingMainFrame();

Powered by Google App Engine
This is Rietveld 408576698