Index: content/browser/web_contents/web_contents_impl_unittest.cc |
diff --git a/content/browser/web_contents/web_contents_impl_unittest.cc b/content/browser/web_contents/web_contents_impl_unittest.cc |
index dfba4445ce83e7aaca117e2f6ce2bbef99f9b330..917867b07bc852d6e381b29fe9ea7171ad56a96f 100644 |
--- a/content/browser/web_contents/web_contents_impl_unittest.cc |
+++ b/content/browser/web_contents/web_contents_impl_unittest.cc |
@@ -159,9 +159,13 @@ class TestInterstitialPage : public InterstitialPageImpl { |
CommandReceived(); |
} |
- void TestDidNavigate(int page_id, const GURL& url) { |
+ void TestDidNavigate(int page_id, |
+ int nav_entry_id, |
+ bool did_create_new_entry, |
+ const GURL& url) { |
FrameHostMsg_DidCommitProvisionalLoad_Params params; |
- InitNavigateParams(¶ms, page_id, url, ui::PAGE_TRANSITION_TYPED); |
+ InitNavigateParams(¶ms, page_id, nav_entry_id, did_create_new_entry, |
+ url, ui::PAGE_TRANSITION_TYPED); |
DidNavigate(GetMainFrame()->GetRenderViewHost(), params); |
} |
@@ -351,7 +355,8 @@ TEST_F(WebContentsImplTest, UpdateTitle) { |
static_cast<NavigationControllerImpl&>(controller()); |
FrameHostMsg_DidCommitProvisionalLoad_Params params; |
InitNavigateParams( |
- ¶ms, 0, GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_TYPED); |
+ ¶ms, 0, 0, true, GURL(url::kAboutBlankURL), |
+ ui::PAGE_TRANSITION_TYPED); |
LoadCommittedDetails details; |
cont.RendererDidNavigate(contents()->GetMainFrame(), params, &details); |
@@ -393,13 +398,15 @@ TEST_F(WebContentsImplTest, NTPViewSource) { |
cont.LoadURL( |
kGURL, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ NavigationEntry* entry = cont.GetPendingEntry(); |
rvh()->GetDelegate()->RenderViewCreated(rvh()); |
// Did we get the expected message? |
EXPECT_TRUE(process()->sink().GetFirstMessageMatching( |
ViewMsg_EnableViewSourceMode::ID)); |
FrameHostMsg_DidCommitProvisionalLoad_Params params; |
- InitNavigateParams(¶ms, 0, kGURL, ui::PAGE_TRANSITION_TYPED); |
+ InitNavigateParams(¶ms, 0, entry->GetUniqueID(), true, kGURL, |
+ ui::PAGE_TRANSITION_TYPED); |
LoadCommittedDetails details; |
cont.RendererDidNavigate(contents()->GetMainFrame(), params, &details); |
// Also check title and url. |
@@ -433,22 +440,25 @@ TEST_F(WebContentsImplTest, UpdateMaxPageID) { |
TEST_F(WebContentsImplTest, SimpleNavigation) { |
TestRenderFrameHost* orig_rfh = contents()->GetMainFrame(); |
SiteInstance* instance1 = contents()->GetSiteInstance(); |
- EXPECT_TRUE(contents()->GetPendingMainFrame() == NULL); |
+ EXPECT_EQ(nullptr, contents()->GetPendingMainFrame()); |
// Navigate to URL |
const GURL url("http://www.google.com"); |
controller().LoadURL( |
url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
EXPECT_EQ(instance1, orig_rfh->GetSiteInstance()); |
// Controller's pending entry will have a NULL site instance until we assign |
// it in DidNavigate. |
- EXPECT_TRUE( |
+ EXPECT_EQ( |
+ nullptr, |
NavigationEntryImpl::FromNavigationEntry(controller().GetVisibleEntry())-> |
- site_instance() == NULL); |
+ site_instance()); |
// DidNavigate from the page |
- contents()->TestDidNavigate(orig_rfh, 1, url, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(orig_rfh, 1, entry->GetUniqueID(), true, url, |
+ ui::PAGE_TRANSITION_TYPED); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
EXPECT_EQ(orig_rfh, contents()->GetMainFrame()); |
EXPECT_EQ(instance1, orig_rfh->GetSiteInstance()); |
@@ -468,7 +478,7 @@ TEST_F(WebContentsImplTest, NavigateToExcessivelyLongURL) { |
controller().LoadURL( |
url, Referrer(), ui::PAGE_TRANSITION_GENERATED, std::string()); |
- EXPECT_TRUE(controller().GetVisibleEntry() == NULL); |
+ EXPECT_EQ(nullptr, controller().GetVisibleEntry()); |
} |
// Test that navigating across a site boundary creates a new RenderViewHost |
@@ -483,8 +493,10 @@ TEST_F(WebContentsImplTest, CrossSiteBoundaries) { |
const GURL url("http://www.google.com"); |
controller().LoadURL( |
url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
orig_rfh->PrepareForCommit(); |
- contents()->TestDidNavigate(orig_rfh, 1, url, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(orig_rfh, 1, entry->GetUniqueID(), true, url, |
+ ui::PAGE_TRANSITION_TYPED); |
// Keep the number of active frames in orig_rfh's SiteInstance non-zero so |
// that orig_rfh doesn't get deleted when it gets swapped out. |
@@ -499,6 +511,7 @@ TEST_F(WebContentsImplTest, CrossSiteBoundaries) { |
const GURL url2("http://www.yahoo.com"); |
controller().LoadURL( |
url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ entry = controller().GetPendingEntry(); |
if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kEnableBrowserSideNavigation)) { |
orig_rfh->PrepareForCommit(); |
@@ -520,8 +533,8 @@ TEST_F(WebContentsImplTest, CrossSiteBoundaries) { |
} |
// DidNavigate from the pending page |
- contents()->TestDidNavigate( |
- pending_rfh, 1, url2, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(pending_rfh, 1, entry->GetUniqueID(), true, url2, |
+ ui::PAGE_TRANSITION_TYPED); |
SiteInstance* instance2 = contents()->GetSiteInstance(); |
// Keep the number of active frames in pending_rfh's SiteInstance |
@@ -534,7 +547,7 @@ TEST_F(WebContentsImplTest, CrossSiteBoundaries) { |
EXPECT_EQ(url2, contents()->GetLastCommittedURL()); |
EXPECT_EQ(url2, contents()->GetVisibleURL()); |
EXPECT_NE(instance1, instance2); |
- EXPECT_TRUE(contents()->GetPendingMainFrame() == NULL); |
+ EXPECT_EQ(nullptr, contents()->GetPendingMainFrame()); |
// We keep the original RFH around, swapped out. |
EXPECT_TRUE(contents()->GetRenderManagerForTesting()->IsOnSwappedOutList( |
orig_rfh)); |
@@ -544,6 +557,7 @@ TEST_F(WebContentsImplTest, CrossSiteBoundaries) { |
// stored in the NavigationEntry, so it should be the same as at the start. |
// We should use the same RFH as before, swapping it back in. |
controller().GoBack(); |
+ entry = controller().GetPendingEntry(); |
if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kEnableBrowserSideNavigation)) { |
contents()->GetMainFrame()->PrepareForCommit(); |
@@ -561,7 +575,8 @@ TEST_F(WebContentsImplTest, CrossSiteBoundaries) { |
} |
// DidNavigate from the back action |
- contents()->TestDidNavigate(goback_rfh, 1, url2, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(goback_rfh, 1, entry->GetUniqueID(), false, url2, |
+ ui::PAGE_TRANSITION_TYPED); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
EXPECT_EQ(goback_rfh, contents()->GetMainFrame()); |
EXPECT_EQ(instance1, contents()->GetSiteInstance()); |
@@ -590,8 +605,10 @@ TEST_F(WebContentsImplTest, CrossSiteBoundariesAfterCrash) { |
const GURL url("http://www.google.com"); |
controller().LoadURL( |
url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
contents()->GetMainFrame()->PrepareForCommit(); |
- contents()->TestDidNavigate(orig_rfh, 1, url, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(orig_rfh, 1, entry->GetUniqueID(), true, url, |
+ ui::PAGE_TRANSITION_TYPED); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
EXPECT_EQ(orig_rfh->GetRenderViewHost(), contents()->GetRenderViewHost()); |
@@ -604,21 +621,23 @@ TEST_F(WebContentsImplTest, CrossSiteBoundariesAfterCrash) { |
const GURL url2("http://www.yahoo.com"); |
controller().LoadURL( |
url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ entry = controller().GetPendingEntry(); |
contents()->GetMainFrame()->PrepareForCommit(); |
TestRenderFrameHost* new_rfh = contents()->GetMainFrame(); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
- EXPECT_TRUE(contents()->GetPendingMainFrame() == NULL); |
+ EXPECT_EQ(nullptr, contents()->GetPendingMainFrame()); |
EXPECT_NE(orig_rfh, new_rfh); |
EXPECT_EQ(orig_rvh_delete_count, 1); |
// DidNavigate from the new page |
- contents()->TestDidNavigate(new_rfh, 1, url2, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(new_rfh, 1, entry->GetUniqueID(), true, url2, |
+ ui::PAGE_TRANSITION_TYPED); |
SiteInstance* instance2 = contents()->GetSiteInstance(); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
EXPECT_EQ(new_rfh, main_rfh()); |
EXPECT_NE(instance1, instance2); |
- EXPECT_TRUE(contents()->GetPendingMainFrame() == NULL); |
+ EXPECT_EQ(nullptr, contents()->GetPendingMainFrame()); |
// Close contents and ensure RVHs are deleted. |
DeleteContents(); |
@@ -636,8 +655,10 @@ TEST_F(WebContentsImplTest, NavigateTwoTabsCrossSite) { |
const GURL url("http://www.google.com"); |
controller().LoadURL( |
url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
contents()->GetMainFrame()->PrepareForCommit(); |
- contents()->TestDidNavigate(orig_rfh, 1, url, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(orig_rfh, 1, entry->GetUniqueID(), true, url, |
+ ui::PAGE_TRANSITION_TYPED); |
// Open a new contents with the same SiteInstance, navigated to the same site. |
scoped_ptr<TestWebContents> contents2( |
@@ -645,20 +666,22 @@ TEST_F(WebContentsImplTest, NavigateTwoTabsCrossSite) { |
contents2->GetController().LoadURL(url, Referrer(), |
ui::PAGE_TRANSITION_TYPED, |
std::string()); |
+ entry = contents2->GetController().GetPendingEntry(); |
contents2->GetMainFrame()->PrepareForCommit(); |
// Need this page id to be 2 since the site instance is the same (which is the |
// scope of page IDs) and we want to consider this a new page. |
- contents2->TestDidNavigate( |
- contents2->GetMainFrame(), 2, url, ui::PAGE_TRANSITION_TYPED); |
+ contents2->TestDidNavigate(contents2->GetMainFrame(), 2, entry->GetUniqueID(), |
+ true, url, ui::PAGE_TRANSITION_TYPED); |
// Navigate first contents to a new site. |
const GURL url2a("http://www.yahoo.com"); |
controller().LoadURL( |
url2a, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ entry = controller().GetPendingEntry(); |
orig_rfh->PrepareForCommit(); |
TestRenderFrameHost* pending_rfh_a = contents()->GetPendingMainFrame(); |
- contents()->TestDidNavigate( |
- pending_rfh_a, 1, url2a, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(pending_rfh_a, 1, entry->GetUniqueID(), true, |
+ url2a, ui::PAGE_TRANSITION_TYPED); |
SiteInstance* instance2a = contents()->GetSiteInstance(); |
EXPECT_NE(instance1, instance2a); |
@@ -667,17 +690,18 @@ TEST_F(WebContentsImplTest, NavigateTwoTabsCrossSite) { |
contents2->GetController().LoadURL(url2b, Referrer(), |
ui::PAGE_TRANSITION_TYPED, |
std::string()); |
+ entry = contents2->GetController().GetPendingEntry(); |
TestRenderFrameHost* rfh2 = contents2->GetMainFrame(); |
rfh2->PrepareForCommit(); |
TestRenderFrameHost* pending_rfh_b = contents2->GetPendingMainFrame(); |
- EXPECT_TRUE(pending_rfh_b != NULL); |
+ EXPECT_NE(nullptr, pending_rfh_b); |
EXPECT_TRUE(contents2->cross_navigation_pending()); |
// NOTE(creis): We used to be in danger of showing a crash page here if the |
// second contents hadn't navigated somewhere first (bug 1145430). That case |
// is now covered by the CrossSiteBoundariesAfterCrash test. |
- contents2->TestDidNavigate( |
- pending_rfh_b, 2, url2b, ui::PAGE_TRANSITION_TYPED); |
+ contents2->TestDidNavigate(pending_rfh_b, 2, entry->GetUniqueID(), true, |
+ url2b, ui::PAGE_TRANSITION_TYPED); |
SiteInstance* instance2b = contents2->GetSiteInstance(); |
EXPECT_NE(instance1, instance2b); |
@@ -703,9 +727,10 @@ TEST_F(WebContentsImplTest, NavigateFromSitelessUrl) { |
const GURL native_url("non-site-url://stuffandthings"); |
controller().LoadURL( |
native_url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
contents()->GetMainFrame()->PrepareForCommit(); |
- contents()->TestDidNavigate( |
- orig_rfh, 1, native_url, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(orig_rfh, 1, entry->GetUniqueID(), true, |
+ native_url, ui::PAGE_TRANSITION_TYPED); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
EXPECT_EQ(orig_rfh, contents()->GetMainFrame()); |
@@ -720,12 +745,14 @@ TEST_F(WebContentsImplTest, NavigateFromSitelessUrl) { |
const GURL url("http://www.google.com"); |
controller().LoadURL( |
url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ entry = controller().GetPendingEntry(); |
contents()->GetMainFrame()->PrepareForCommit(); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
EXPECT_EQ(native_url, contents()->GetLastCommittedURL()); |
EXPECT_EQ(url, contents()->GetVisibleURL()); |
EXPECT_FALSE(contents()->GetPendingMainFrame()); |
- contents()->TestDidNavigate(orig_rfh, 1, url, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(orig_rfh, 1, entry->GetUniqueID(), true, url, |
+ ui::PAGE_TRANSITION_TYPED); |
// Keep the number of active frames in orig_rfh's SiteInstance |
// non-zero so that orig_rfh doesn't get deleted when it gets |
@@ -741,6 +768,7 @@ TEST_F(WebContentsImplTest, NavigateFromSitelessUrl) { |
const GURL url2("http://www.yahoo.com"); |
controller().LoadURL( |
url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ entry = controller().GetPendingEntry(); |
if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kEnableBrowserSideNavigation)) { |
orig_rfh->PrepareForCommit(); |
@@ -762,8 +790,8 @@ TEST_F(WebContentsImplTest, NavigateFromSitelessUrl) { |
} |
// DidNavigate from the pending page. |
- contents()->TestDidNavigate( |
- pending_rfh, 1, url2, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(pending_rfh, 1, entry->GetUniqueID(), true, url2, |
+ ui::PAGE_TRANSITION_TYPED); |
SiteInstance* new_instance = contents()->GetSiteInstance(); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
@@ -810,8 +838,9 @@ TEST_F(WebContentsImplTest, NavigateFromRestoredSitelessUrl) { |
ASSERT_EQ(0u, entries.size()); |
ASSERT_EQ(1, controller().GetEntryCount()); |
controller().GoToIndex(0); |
- contents()->TestDidNavigate( |
- orig_rfh, 0, native_url, ui::PAGE_TRANSITION_RELOAD); |
+ entry = controller().GetPendingEntry(); |
+ contents()->TestDidNavigate(orig_rfh, 0, entry->GetUniqueID(), false, |
+ native_url, ui::PAGE_TRANSITION_RELOAD); |
EXPECT_EQ(orig_instance, contents()->GetSiteInstance()); |
EXPECT_EQ(GURL(), contents()->GetSiteInstance()->GetSiteURL()); |
EXPECT_FALSE(orig_instance->HasSite()); |
@@ -821,7 +850,9 @@ TEST_F(WebContentsImplTest, NavigateFromRestoredSitelessUrl) { |
const GURL url("http://www.google.com"); |
controller().LoadURL( |
url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
- contents()->TestDidNavigate(orig_rfh, 2, url, ui::PAGE_TRANSITION_TYPED); |
+ entry = controller().GetPendingEntry(); |
+ contents()->TestDidNavigate(orig_rfh, 2, entry->GetUniqueID(), true, url, |
+ ui::PAGE_TRANSITION_TYPED); |
EXPECT_EQ(orig_instance, contents()->GetSiteInstance()); |
// Cleanup. |
@@ -853,9 +884,10 @@ TEST_F(WebContentsImplTest, NavigateFromRestoredRegularUrl) { |
ASSERT_EQ(0u, entries.size()); |
ASSERT_EQ(1, controller().GetEntryCount()); |
controller().GoToIndex(0); |
+ entry = controller().GetPendingEntry(); |
orig_rfh->PrepareForCommit(); |
- contents()->TestDidNavigate( |
- orig_rfh, 0, regular_url, ui::PAGE_TRANSITION_RELOAD); |
+ contents()->TestDidNavigate(orig_rfh, 0, entry->GetUniqueID(), false, |
+ regular_url, ui::PAGE_TRANSITION_RELOAD); |
EXPECT_EQ(orig_instance, contents()->GetSiteInstance()); |
EXPECT_TRUE(orig_instance->HasSite()); |
@@ -863,9 +895,11 @@ TEST_F(WebContentsImplTest, NavigateFromRestoredRegularUrl) { |
const GURL url("http://www.google.com"); |
controller().LoadURL( |
url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ entry = controller().GetPendingEntry(); |
orig_rfh->PrepareForCommit(); |
- contents()->TestDidNavigate( |
- contents()->GetPendingMainFrame(), 2, url, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(contents()->GetPendingMainFrame(), 2, |
+ entry->GetUniqueID(), true, url, |
+ ui::PAGE_TRANSITION_TYPED); |
EXPECT_NE(orig_instance, contents()->GetSiteInstance()); |
// Cleanup. |
@@ -881,8 +915,10 @@ TEST_F(WebContentsImplTest, FindOpenerRVHWhenPending) { |
const GURL url("http://www.google.com"); |
controller().LoadURL( |
url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
orig_rfh->PrepareForCommit(); |
- contents()->TestDidNavigate(orig_rfh, 1, url, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(orig_rfh, 1, entry->GetUniqueID(), true, url, |
+ ui::PAGE_TRANSITION_TYPED); |
// Start to navigate first tab to a new site, so that it has a pending RVH. |
const GURL url2("http://www.yahoo.com"); |
@@ -912,9 +948,10 @@ TEST_F(WebContentsImplTest, CrossSiteComparesAgainstCurrentPage) { |
const GURL url("http://www.google.com"); |
controller().LoadURL( |
url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
contents()->GetMainFrame()->PrepareForCommit(); |
- contents()->TestDidNavigate( |
- orig_rfh, 1, url, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(orig_rfh, 1, entry->GetUniqueID(), true, url, |
+ ui::PAGE_TRANSITION_TYPED); |
// Open a related contents to a second site. |
scoped_ptr<TestWebContents> contents2( |
@@ -923,20 +960,23 @@ TEST_F(WebContentsImplTest, CrossSiteComparesAgainstCurrentPage) { |
contents2->GetController().LoadURL(url2, Referrer(), |
ui::PAGE_TRANSITION_TYPED, |
std::string()); |
+ entry = contents2->GetController().GetPendingEntry(); |
contents2->GetMainFrame()->PrepareForCommit(); |
+ |
// The first RVH in contents2 isn't live yet, so we shortcut the cross site |
// pending. |
TestRenderFrameHost* rfh2 = contents2->GetMainFrame(); |
EXPECT_FALSE(contents2->cross_navigation_pending()); |
- contents2->TestDidNavigate(rfh2, 2, url2, ui::PAGE_TRANSITION_TYPED); |
+ contents2->TestDidNavigate(rfh2, 2, entry->GetUniqueID(), true, url2, |
+ ui::PAGE_TRANSITION_TYPED); |
SiteInstance* instance2 = contents2->GetSiteInstance(); |
EXPECT_NE(instance1, instance2); |
EXPECT_FALSE(contents2->cross_navigation_pending()); |
// Simulate a link click in first contents to second site. Doesn't switch |
- // SiteInstances, because we don't intercept WebKit navigations. |
+ // SiteInstances, because we don't intercept Blink navigations. |
contents()->TestDidNavigate( |
- orig_rfh, 2, url2, ui::PAGE_TRANSITION_TYPED); |
+ orig_rfh, 2, 0, true, url2, ui::PAGE_TRANSITION_TYPED); |
SiteInstance* instance3 = contents()->GetSiteInstance(); |
EXPECT_EQ(instance1, instance3); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
@@ -946,10 +986,11 @@ TEST_F(WebContentsImplTest, CrossSiteComparesAgainstCurrentPage) { |
const GURL url3("http://mail.yahoo.com"); |
controller().LoadURL( |
url3, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ entry = controller().GetPendingEntry(); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
contents()->GetMainFrame()->PrepareForCommit(); |
- contents()->TestDidNavigate( |
- orig_rfh, 3, url3, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(orig_rfh, 3, entry->GetUniqueID(), true, url3, |
+ ui::PAGE_TRANSITION_TYPED); |
SiteInstance* instance4 = contents()->GetSiteInstance(); |
EXPECT_EQ(instance1, instance4); |
} |
@@ -964,8 +1005,10 @@ TEST_F(WebContentsImplTest, CrossSiteUnloadHandlers) { |
const GURL url("http://www.google.com"); |
controller().LoadURL( |
url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
contents()->GetMainFrame()->PrepareForCommit(); |
- contents()->TestDidNavigate(orig_rfh, 1, url, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(orig_rfh, 1, entry->GetUniqueID(), true, url, |
+ ui::PAGE_TRANSITION_TYPED); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
EXPECT_EQ(orig_rfh, contents()->GetMainFrame()); |
@@ -984,6 +1027,7 @@ TEST_F(WebContentsImplTest, CrossSiteUnloadHandlers) { |
// Navigate again, but simulate an onbeforeunload approval. |
controller().LoadURL( |
url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ entry = controller().GetPendingEntry(); |
EXPECT_TRUE(orig_rfh->IsWaitingForBeforeUnloadACK()); |
now = base::TimeTicks::Now(); |
orig_rfh->PrepareForCommit(); |
@@ -994,13 +1038,13 @@ TEST_F(WebContentsImplTest, CrossSiteUnloadHandlers) { |
// We won't hear DidNavigate until the onunload handler has finished running. |
// DidNavigate from the pending page. |
- contents()->TestDidNavigate( |
- pending_rfh, 1, url2, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(pending_rfh, 1, entry->GetUniqueID(), true, url2, |
+ ui::PAGE_TRANSITION_TYPED); |
SiteInstance* instance2 = contents()->GetSiteInstance(); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
EXPECT_EQ(pending_rfh, contents()->GetMainFrame()); |
EXPECT_NE(instance1, instance2); |
- EXPECT_TRUE(contents()->GetPendingMainFrame() == NULL); |
+ EXPECT_EQ(nullptr, contents()->GetPendingMainFrame()); |
} |
// Test that during a slow cross-site navigation, the original renderer can |
@@ -1014,8 +1058,10 @@ TEST_F(WebContentsImplTest, CrossSiteNavigationPreempted) { |
const GURL url("http://www.google.com"); |
controller().LoadURL( |
url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
contents()->GetMainFrame()->PrepareForCommit(); |
- contents()->TestDidNavigate(orig_rfh, 1, url, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(orig_rfh, 1, entry->GetUniqueID(), true, url, |
+ ui::PAGE_TRANSITION_TYPED); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
EXPECT_EQ(orig_rfh, contents()->GetMainFrame()); |
@@ -1028,7 +1074,7 @@ TEST_F(WebContentsImplTest, CrossSiteNavigationPreempted) { |
EXPECT_TRUE(contents()->cross_navigation_pending()); |
// Suppose the original renderer navigates before the new one is ready. |
- orig_rfh->SendNavigate(2, GURL("http://www.google.com/foo")); |
+ orig_rfh->SendNavigate(2, 0, true, GURL("http://www.google.com/foo")); |
// Verify that the pending navigation is cancelled. |
EXPECT_FALSE(orig_rfh->IsWaitingForBeforeUnloadACK()); |
@@ -1036,7 +1082,7 @@ TEST_F(WebContentsImplTest, CrossSiteNavigationPreempted) { |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
EXPECT_EQ(orig_rfh, contents()->GetMainFrame()); |
EXPECT_EQ(instance1, instance2); |
- EXPECT_TRUE(contents()->GetPendingMainFrame() == NULL); |
+ EXPECT_EQ(nullptr, contents()->GetPendingMainFrame()); |
} |
TEST_F(WebContentsImplTest, CrossSiteNavigationBackPreempted) { |
@@ -1044,9 +1090,11 @@ TEST_F(WebContentsImplTest, CrossSiteNavigationBackPreempted) { |
const GURL url1("chrome://blah"); |
controller().LoadURL( |
url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
TestRenderFrameHost* ntp_rfh = contents()->GetMainFrame(); |
ntp_rfh->PrepareForCommit(); |
- contents()->TestDidNavigate(ntp_rfh, 1, url1, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(ntp_rfh, 1, entry->GetUniqueID(), true, url1, |
+ ui::PAGE_TRANSITION_TYPED); |
NavigationEntry* entry1 = controller().GetLastCommittedEntry(); |
SiteInstance* instance1 = contents()->GetSiteInstance(); |
@@ -1062,6 +1110,7 @@ TEST_F(WebContentsImplTest, CrossSiteNavigationBackPreempted) { |
const GURL url2("http://www.google.com"); |
controller().LoadURL( |
url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ entry = controller().GetPendingEntry(); |
EXPECT_TRUE(contents()->cross_navigation_pending()); |
TestRenderFrameHost* google_rfh = contents()->GetPendingMainFrame(); |
@@ -1071,8 +1120,8 @@ TEST_F(WebContentsImplTest, CrossSiteNavigationBackPreempted) { |
ntp_rfh->PrepareForCommit(); |
// DidNavigate from the pending page. |
- contents()->TestDidNavigate( |
- google_rfh, 1, url2, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(google_rfh, 1, entry->GetUniqueID(), true, url2, |
+ ui::PAGE_TRANSITION_TYPED); |
NavigationEntry* entry2 = controller().GetLastCommittedEntry(); |
SiteInstance* instance2 = contents()->GetSiteInstance(); |
@@ -1090,10 +1139,11 @@ TEST_F(WebContentsImplTest, CrossSiteNavigationBackPreempted) { |
const GURL url3("http://news.google.com"); |
controller().LoadURL( |
url3, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ entry = controller().GetPendingEntry(); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
contents()->GetMainFrame()->PrepareForCommit(); |
- contents()->TestDidNavigate( |
- google_rfh, 2, url3, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(google_rfh, 2, entry->GetUniqueID(), true, url3, |
+ ui::PAGE_TRANSITION_TYPED); |
NavigationEntry* entry3 = controller().GetLastCommittedEntry(); |
SiteInstance* instance3 = contents()->GetSiteInstance(); |
@@ -1107,6 +1157,7 @@ TEST_F(WebContentsImplTest, CrossSiteNavigationBackPreempted) { |
// Go back within the site. |
controller().GoBack(); |
+ NavigationEntry* goback_entry = controller().GetPendingEntry(); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
EXPECT_EQ(entry2, controller().GetPendingEntry()); |
@@ -1124,7 +1175,8 @@ TEST_F(WebContentsImplTest, CrossSiteNavigationBackPreempted) { |
FrameHostMsg_BeforeUnload_ACK(0, true, now, now)); |
// DidNavigate from the first back. This aborts the second back's pending RFH. |
- contents()->TestDidNavigate(google_rfh, 1, url2, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(google_rfh, 1, goback_entry->GetUniqueID(), false, |
+ url2, ui::PAGE_TRANSITION_TYPED); |
// We should commit this page and forget about the second back. |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
@@ -1151,8 +1203,10 @@ TEST_F(WebContentsImplTest, CrossSiteNavigationNotPreemptedByFrame) { |
const GURL url("http://www.google.com"); |
controller().LoadURL( |
url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
contents()->GetMainFrame()->PrepareForCommit(); |
- contents()->TestDidNavigate(orig_rfh, 1, url, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(orig_rfh, 1, entry->GetUniqueID(), true, url, |
+ ui::PAGE_TRANSITION_TYPED); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
EXPECT_EQ(orig_rfh, contents()->GetMainFrame()); |
@@ -1165,7 +1219,8 @@ TEST_F(WebContentsImplTest, CrossSiteNavigationNotPreemptedByFrame) { |
// waiting for a before unload response. |
TestRenderFrameHost* child_rfh = orig_rfh->AppendChild("subframe"); |
child_rfh->SendNavigateWithTransition( |
- 1, GURL("http://google.com/frame"), ui::PAGE_TRANSITION_AUTO_SUBFRAME); |
+ 1, 0, false, GURL("http://google.com/frame"), |
+ ui::PAGE_TRANSITION_AUTO_SUBFRAME); |
EXPECT_TRUE(orig_rfh->IsWaitingForBeforeUnloadACK()); |
// Now simulate the onbeforeunload approval and verify the navigation is |
@@ -1184,6 +1239,7 @@ TEST_F(WebContentsImplTest, CrossSiteNotPreemptedDuringBeforeUnload) { |
const GURL url("chrome://blah"); |
controller().LoadURL( |
url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ int entry1_id = controller().GetPendingEntry()->GetUniqueID(); |
TestRenderFrameHost* orig_rfh = contents()->GetMainFrame(); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
@@ -1191,6 +1247,7 @@ TEST_F(WebContentsImplTest, CrossSiteNotPreemptedDuringBeforeUnload) { |
const GURL url2("http://www.yahoo.com"); |
controller().LoadURL( |
url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ int entry2_id = controller().GetPendingEntry()->GetUniqueID(); |
TestRenderFrameHost* pending_rfh = contents()->GetPendingMainFrame(); |
EXPECT_TRUE(contents()->cross_navigation_pending()); |
EXPECT_TRUE(orig_rfh->IsWaitingForBeforeUnloadACK()); |
@@ -1198,13 +1255,14 @@ TEST_F(WebContentsImplTest, CrossSiteNotPreemptedDuringBeforeUnload) { |
// Suppose the first navigation tries to commit now, with a |
// FrameMsg_Stop in flight. This should not cancel the pending navigation, |
// but it should act as if the beforeunload ack arrived. |
- orig_rfh->SendNavigate(1, GURL("chrome://blah")); |
+ orig_rfh->SendNavigate(1, entry1_id, true, GURL("chrome://blah")); |
EXPECT_TRUE(contents()->cross_navigation_pending()); |
EXPECT_EQ(orig_rfh, contents()->GetMainFrame()); |
EXPECT_FALSE(orig_rfh->IsWaitingForBeforeUnloadACK()); |
// The pending navigation should be able to commit successfully. |
- contents()->TestDidNavigate(pending_rfh, 1, url2, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(pending_rfh, 1, entry2_id, true, url2, |
+ ui::PAGE_TRANSITION_TYPED); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
EXPECT_EQ(pending_rfh, contents()->GetMainFrame()); |
} |
@@ -1219,8 +1277,10 @@ TEST_F(WebContentsImplTest, CrossSiteNavigationCanceled) { |
const GURL url("http://www.google.com"); |
controller().LoadURL( |
url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
contents()->GetMainFrame()->PrepareForCommit(); |
- contents()->TestDidNavigate(orig_rfh, 1, url, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(orig_rfh, 1, entry->GetUniqueID(), true, url, |
+ ui::PAGE_TRANSITION_TYPED); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
EXPECT_EQ(orig_rfh, contents()->GetMainFrame()); |
@@ -1248,7 +1308,7 @@ TEST_F(WebContentsImplTest, CrossSiteNavigationCanceled) { |
EXPECT_EQ(orig_rfh, contents()->GetMainFrame()); |
EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, orig_rfh->rfh_state()); |
EXPECT_EQ(instance1, instance2); |
- EXPECT_TRUE(contents()->GetPendingMainFrame() == NULL); |
+ EXPECT_EQ(nullptr, contents()->GetPendingMainFrame()); |
} |
// Test that NavigationEntries have the correct page state after going |
@@ -1260,31 +1320,37 @@ TEST_F(WebContentsImplTest, NavigationEntryContentState) { |
const GURL url("http://www.google.com"); |
controller().LoadURL( |
url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
- NavigationEntry* entry = controller().GetLastCommittedEntry(); |
- EXPECT_TRUE(entry == NULL); |
+ NavigationEntry* pending_entry = controller().GetPendingEntry(); |
+ NavigationEntry* last_entry = controller().GetLastCommittedEntry(); |
+ EXPECT_EQ(nullptr, last_entry); |
// Committed entry should have page state after DidNavigate. |
- contents()->TestDidNavigate(orig_rfh, 1, url, ui::PAGE_TRANSITION_TYPED); |
- entry = controller().GetLastCommittedEntry(); |
- EXPECT_TRUE(entry->GetPageState().IsValid()); |
+ contents()->TestDidNavigate(orig_rfh, 1, pending_entry->GetUniqueID(), true, |
+ url, ui::PAGE_TRANSITION_TYPED); |
+ last_entry = controller().GetLastCommittedEntry(); |
+ EXPECT_TRUE(last_entry->GetPageState().IsValid()); |
// Navigate to same site. |
const GURL url2("http://images.google.com"); |
controller().LoadURL( |
url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
- entry = controller().GetLastCommittedEntry(); |
- EXPECT_TRUE(entry->GetPageState().IsValid()); |
+ pending_entry = controller().GetPendingEntry(); |
+ last_entry = controller().GetLastCommittedEntry(); |
+ EXPECT_TRUE(last_entry->GetPageState().IsValid()); |
// Committed entry should have page state after DidNavigate. |
- contents()->TestDidNavigate(orig_rfh, 2, url2, ui::PAGE_TRANSITION_TYPED); |
- entry = controller().GetLastCommittedEntry(); |
- EXPECT_TRUE(entry->GetPageState().IsValid()); |
+ contents()->TestDidNavigate(orig_rfh, 2, pending_entry->GetUniqueID(), true, |
+ url2, ui::PAGE_TRANSITION_TYPED); |
+ last_entry = controller().GetLastCommittedEntry(); |
+ EXPECT_TRUE(last_entry->GetPageState().IsValid()); |
// Now go back. Committed entry should still have page state. |
controller().GoBack(); |
- contents()->TestDidNavigate(orig_rfh, 1, url, ui::PAGE_TRANSITION_TYPED); |
- entry = controller().GetLastCommittedEntry(); |
- EXPECT_TRUE(entry->GetPageState().IsValid()); |
+ pending_entry = controller().GetPendingEntry(); |
+ contents()->TestDidNavigate(orig_rfh, 1, pending_entry->GetUniqueID(), false, |
+ url, ui::PAGE_TRANSITION_TYPED); |
+ last_entry = controller().GetLastCommittedEntry(); |
+ EXPECT_TRUE(last_entry->GetPageState().IsValid()); |
} |
// Test that NavigationEntries have the correct page state and SiteInstance |
@@ -1293,11 +1359,10 @@ TEST_F(WebContentsImplTest, NavigationEntryContentState) { |
TEST_F(WebContentsImplTest, NavigationEntryContentStateNewWindow) { |
TestRenderFrameHost* orig_rfh = contents()->GetMainFrame(); |
- // When opening a new window, it is navigated to about:blank internally. |
- // Currently, this results in two DidNavigate events. |
+ // Navigate to about:blank. |
const GURL url(url::kAboutBlankURL); |
- contents()->TestDidNavigate(orig_rfh, 1, url, ui::PAGE_TRANSITION_TYPED); |
- contents()->TestDidNavigate(orig_rfh, 1, url, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(orig_rfh, 1, 0, true, url, |
+ ui::PAGE_TRANSITION_TYPED); |
// Should have a page state here. |
NavigationEntry* entry = controller().GetLastCommittedEntry(); |
@@ -1313,9 +1378,11 @@ TEST_F(WebContentsImplTest, NavigationEntryContentStateNewWindow) { |
const GURL new_url("http://www.google.com"); |
controller().LoadURL(new_url, Referrer(), |
ui::PAGE_TRANSITION_TYPED, std::string()); |
+ entry = controller().GetPendingEntry(); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
EXPECT_EQ(orig_rfh, contents()->GetMainFrame()); |
- contents()->TestDidNavigate(orig_rfh, 1, new_url, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(orig_rfh, 1, entry->GetUniqueID(), true, new_url, |
+ ui::PAGE_TRANSITION_TYPED); |
NavigationEntryImpl* entry_impl2 = NavigationEntryImpl::FromNavigationEntry( |
controller().GetLastCommittedEntry()); |
EXPECT_EQ(site_instance_id, entry_impl2->site_instance()->GetId()); |
@@ -1334,8 +1401,10 @@ TEST_F(WebContentsImplTest, NavigationExitsFullscreen) { |
const GURL url("http://www.google.com"); |
controller().LoadURL( |
url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
contents()->GetMainFrame()->PrepareForCommit(); |
- contents()->TestDidNavigate(orig_rfh, 1, url, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(orig_rfh, 1, entry->GetUniqueID(), true, url, |
+ ui::PAGE_TRANSITION_TYPED); |
EXPECT_EQ(orig_rfh, contents()->GetMainFrame()); |
// Toggle fullscreen mode on (as if initiated via IPC from renderer). |
@@ -1352,17 +1421,18 @@ TEST_F(WebContentsImplTest, NavigationExitsFullscreen) { |
const GURL url2("http://www.yahoo.com"); |
controller().LoadURL( |
url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ entry = controller().GetPendingEntry(); |
contents()->GetMainFrame()->PrepareForCommit(); |
TestRenderFrameHost* const pending_rfh = contents()->GetPendingMainFrame(); |
- contents()->TestDidNavigate( |
- pending_rfh, 1, url2, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(pending_rfh, 1, entry->GetUniqueID(), true, url2, |
+ ui::PAGE_TRANSITION_TYPED); |
// Confirm fullscreen has exited. |
EXPECT_FALSE(orig_rvh->IsFullscreen()); |
EXPECT_FALSE(contents()->IsFullscreenForCurrentTab()); |
EXPECT_FALSE(fake_delegate.IsFullscreenForTabOrPending(contents())); |
- contents()->SetDelegate(NULL); |
+ contents()->SetDelegate(nullptr); |
} |
// Tests that fullscreen is exited throughout the object hierarchy when |
@@ -1377,15 +1447,19 @@ TEST_F(WebContentsImplTest, HistoryNavigationExitsFullscreen) { |
const GURL url("http://www.google.com"); |
controller().LoadURL( |
url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
- contents()->TestDidNavigate(orig_rfh, 1, url, ui::PAGE_TRANSITION_TYPED); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
+ contents()->TestDidNavigate(orig_rfh, 1, entry->GetUniqueID(), true, url, |
+ ui::PAGE_TRANSITION_TYPED); |
EXPECT_EQ(orig_rfh, contents()->GetMainFrame()); |
// Now, navigate to another page on the same site. |
const GURL url2("http://www.google.com/search?q=kittens"); |
controller().LoadURL( |
url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ entry = controller().GetPendingEntry(); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
- contents()->TestDidNavigate(orig_rfh, 2, url2, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(orig_rfh, 2, entry->GetUniqueID(), true, url2, |
+ ui::PAGE_TRANSITION_TYPED); |
EXPECT_EQ(orig_rfh, contents()->GetMainFrame()); |
// Sanity-check: Confirm we're not starting out in fullscreen mode. |
@@ -1406,10 +1480,11 @@ TEST_F(WebContentsImplTest, HistoryNavigationExitsFullscreen) { |
controller().GoBack(); |
else |
controller().GoForward(); |
+ entry = controller().GetPendingEntry(); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
EXPECT_EQ(orig_rfh, contents()->GetMainFrame()); |
- contents()->TestDidNavigate( |
- orig_rfh, i + 1, url, ui::PAGE_TRANSITION_FORWARD_BACK); |
+ contents()->TestDidNavigate(orig_rfh, i + 1, entry->GetUniqueID(), false, |
+ url, ui::PAGE_TRANSITION_FORWARD_BACK); |
// Confirm fullscreen has exited. |
EXPECT_FALSE(orig_rvh->IsFullscreen()); |
@@ -1446,8 +1521,10 @@ TEST_F(WebContentsImplTest, CrashExitsFullscreen) { |
const GURL url("http://www.google.com"); |
controller().LoadURL( |
url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
- contents()->TestDidNavigate( |
- contents()->GetMainFrame(), 1, url, ui::PAGE_TRANSITION_TYPED); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
+ contents()->TestDidNavigate(contents()->GetMainFrame(), 1, |
+ entry->GetUniqueID(), true, url, |
+ ui::PAGE_TRANSITION_TYPED); |
// Toggle fullscreen mode on (as if initiated via IPC from renderer). |
EXPECT_FALSE(test_rvh()->IsFullscreen()); |
@@ -1483,12 +1560,13 @@ TEST_F(WebContentsImplTest, |
ShowInterstitialFromBrowserWithNewNavigationDontProceed) { |
// Navigate to a page. |
GURL url1("http://www.google.com"); |
- contents()->GetMainFrame()->SendNavigate(1, url1); |
+ contents()->GetMainFrame()->SendNavigate(1, 0, true, url1); |
EXPECT_EQ(1, controller().GetEntryCount()); |
- // Initiate a browser navigation that will trigger the interstitial |
+ // Initiate a browser navigation that will trigger the interstitial. |
controller().LoadURL(GURL("http://www.evil.com"), Referrer(), |
ui::PAGE_TRANSITION_TYPED, std::string()); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
// Show an interstitial. |
TestInterstitialPage::InterstitialState state = |
@@ -1499,26 +1577,28 @@ TEST_F(WebContentsImplTest, |
new TestInterstitialPage(contents(), true, url2, &state, &deleted); |
TestInterstitialPageStateGuard state_guard(interstitial); |
interstitial->Show(); |
+ NavigationEntry* interstitial_entry = controller().GetTransientEntry(); |
// The interstitial should not show until its navigation has committed. |
EXPECT_FALSE(interstitial->is_showing()); |
EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
- EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
+ EXPECT_EQ(nullptr, contents()->GetInterstitialPage()); |
// Let's commit the interstitial navigation. |
- interstitial->TestDidNavigate(1, url2); |
+ interstitial->TestDidNavigate(1, interstitial_entry->GetUniqueID(), true, |
+ url2); |
EXPECT_TRUE(interstitial->is_showing()); |
EXPECT_TRUE(contents()->ShowingInterstitialPage()); |
EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); |
- NavigationEntry* entry = controller().GetVisibleEntry(); |
- ASSERT_TRUE(entry != NULL); |
+ entry = controller().GetVisibleEntry(); |
+ ASSERT_NE(nullptr, entry); |
EXPECT_TRUE(entry->GetURL() == url2); |
// Now don't proceed. |
interstitial->DontProceed(); |
EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
- EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
+ EXPECT_EQ(nullptr, contents()->GetInterstitialPage()); |
entry = controller().GetVisibleEntry(); |
- ASSERT_TRUE(entry != NULL); |
+ ASSERT_NE(nullptr, entry); |
EXPECT_TRUE(entry->GetURL() == url1); |
EXPECT_EQ(1, controller().GetEntryCount()); |
@@ -1530,11 +1610,12 @@ TEST_F(WebContentsImplTest, |
// as when clicking on a link in the page) that shows an interstitial and |
// creates a new navigation entry, then hiding it without proceeding. |
TEST_F(WebContentsImplTest, |
- ShowInterstitiaFromRendererlWithNewNavigationDontProceed) { |
+ ShowInterstitialFromRendererWithNewNavigationDontProceed) { |
// Navigate to a page. |
GURL url1("http://www.google.com"); |
- contents()->GetMainFrame()->SendNavigate(1, url1); |
+ contents()->GetMainFrame()->SendNavigate(1, 0, true, url1); |
EXPECT_EQ(1, controller().GetEntryCount()); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
// Show an interstitial (no pending entry, the interstitial would have been |
// triggered by clicking on a link). |
@@ -1546,26 +1627,28 @@ TEST_F(WebContentsImplTest, |
new TestInterstitialPage(contents(), true, url2, &state, &deleted); |
TestInterstitialPageStateGuard state_guard(interstitial); |
interstitial->Show(); |
+ NavigationEntry* interstitial_entry = controller().GetTransientEntry(); |
// The interstitial should not show until its navigation has committed. |
EXPECT_FALSE(interstitial->is_showing()); |
EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
- EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
+ EXPECT_EQ(nullptr, contents()->GetInterstitialPage()); |
// Let's commit the interstitial navigation. |
- interstitial->TestDidNavigate(1, url2); |
+ interstitial->TestDidNavigate(1, interstitial_entry->GetUniqueID(), true, |
+ url2); |
EXPECT_TRUE(interstitial->is_showing()); |
EXPECT_TRUE(contents()->ShowingInterstitialPage()); |
EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); |
- NavigationEntry* entry = controller().GetVisibleEntry(); |
- ASSERT_TRUE(entry != NULL); |
+ entry = controller().GetVisibleEntry(); |
+ ASSERT_NE(nullptr, entry); |
EXPECT_TRUE(entry->GetURL() == url2); |
// Now don't proceed. |
interstitial->DontProceed(); |
EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
- EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
+ EXPECT_EQ(nullptr, contents()->GetInterstitialPage()); |
entry = controller().GetVisibleEntry(); |
- ASSERT_TRUE(entry != NULL); |
+ ASSERT_NE(nullptr, entry); |
EXPECT_TRUE(entry->GetURL() == url1); |
EXPECT_EQ(1, controller().GetEntryCount()); |
@@ -1579,8 +1662,9 @@ TEST_F(WebContentsImplTest, |
TEST_F(WebContentsImplTest, ShowInterstitialNoNewNavigationDontProceed) { |
// Navigate to a page. |
GURL url1("http://www.google.com"); |
- contents()->GetMainFrame()->SendNavigate(1, url1); |
+ contents()->GetMainFrame()->SendNavigate(1, 0, true, url1); |
EXPECT_EQ(1, controller().GetEntryCount()); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
// Show an interstitial. |
TestInterstitialPage::InterstitialState state = |
@@ -1594,14 +1678,14 @@ TEST_F(WebContentsImplTest, ShowInterstitialNoNewNavigationDontProceed) { |
// The interstitial should not show until its navigation has committed. |
EXPECT_FALSE(interstitial->is_showing()); |
EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
- EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
+ EXPECT_EQ(nullptr, contents()->GetInterstitialPage()); |
// Let's commit the interstitial navigation. |
- interstitial->TestDidNavigate(1, url2); |
+ interstitial->TestDidNavigate(1, 0, true, url2); |
EXPECT_TRUE(interstitial->is_showing()); |
EXPECT_TRUE(contents()->ShowingInterstitialPage()); |
EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); |
- NavigationEntry* entry = controller().GetVisibleEntry(); |
- ASSERT_TRUE(entry != NULL); |
+ entry = controller().GetVisibleEntry(); |
+ ASSERT_NE(nullptr, entry); |
// The URL specified to the interstitial should have been ignored. |
EXPECT_TRUE(entry->GetURL() == url1); |
@@ -1609,9 +1693,9 @@ TEST_F(WebContentsImplTest, ShowInterstitialNoNewNavigationDontProceed) { |
interstitial->DontProceed(); |
EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
- EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
+ EXPECT_EQ(nullptr, contents()->GetInterstitialPage()); |
entry = controller().GetVisibleEntry(); |
- ASSERT_TRUE(entry != NULL); |
+ ASSERT_NE(nullptr, entry); |
EXPECT_TRUE(entry->GetURL() == url1); |
EXPECT_EQ(1, controller().GetEntryCount()); |
@@ -1626,12 +1710,13 @@ TEST_F(WebContentsImplTest, |
ShowInterstitialFromBrowserNewNavigationProceed) { |
// Navigate to a page. |
GURL url1("http://www.google.com"); |
- contents()->GetMainFrame()->SendNavigate(1, url1); |
+ contents()->GetMainFrame()->SendNavigate(1, 0, true, url1); |
EXPECT_EQ(1, controller().GetEntryCount()); |
// Initiate a browser navigation that will trigger the interstitial |
controller().LoadURL(GURL("http://www.evil.com"), Referrer(), |
ui::PAGE_TRANSITION_TYPED, std::string()); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
// Show an interstitial. |
TestInterstitialPage::InterstitialState state = |
@@ -1642,17 +1727,19 @@ TEST_F(WebContentsImplTest, |
new TestInterstitialPage(contents(), true, url2, &state, &deleted); |
TestInterstitialPageStateGuard state_guard(interstitial); |
interstitial->Show(); |
+ NavigationEntry* interstitial_entry = controller().GetTransientEntry(); |
// The interstitial should not show until its navigation has committed. |
EXPECT_FALSE(interstitial->is_showing()); |
EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
- EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
+ EXPECT_EQ(nullptr, contents()->GetInterstitialPage()); |
// Let's commit the interstitial navigation. |
- interstitial->TestDidNavigate(1, url2); |
+ interstitial->TestDidNavigate(1, interstitial_entry->GetUniqueID(), true, |
+ url2); |
EXPECT_TRUE(interstitial->is_showing()); |
EXPECT_TRUE(contents()->ShowingInterstitialPage()); |
EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); |
- NavigationEntry* entry = controller().GetVisibleEntry(); |
- ASSERT_TRUE(entry != NULL); |
+ entry = controller().GetVisibleEntry(); |
+ ASSERT_NE(nullptr, entry); |
EXPECT_TRUE(entry->GetURL() == url2); |
// Then proceed. |
@@ -1667,12 +1754,12 @@ TEST_F(WebContentsImplTest, |
// Simulate the navigation to the page, that's when the interstitial gets |
// hidden. |
GURL url3("http://www.thepage.com"); |
- contents()->GetMainFrame()->SendNavigate(2, url3); |
+ contents()->GetMainFrame()->SendNavigate(2, 0, true, url3); |
EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
- EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
+ EXPECT_EQ(nullptr, contents()->GetInterstitialPage()); |
entry = controller().GetVisibleEntry(); |
- ASSERT_TRUE(entry != NULL); |
+ ASSERT_NE(nullptr, entry); |
EXPECT_TRUE(entry->GetURL() == url3); |
EXPECT_EQ(2, controller().GetEntryCount()); |
@@ -1688,8 +1775,9 @@ TEST_F(WebContentsImplTest, |
ShowInterstitialFromRendererNewNavigationProceed) { |
// Navigate to a page. |
GURL url1("http://www.google.com"); |
- contents()->GetMainFrame()->SendNavigate(1, url1); |
+ contents()->GetMainFrame()->SendNavigate(1, 0, true, url1); |
EXPECT_EQ(1, controller().GetEntryCount()); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
// Show an interstitial. |
TestInterstitialPage::InterstitialState state = |
@@ -1700,17 +1788,19 @@ TEST_F(WebContentsImplTest, |
new TestInterstitialPage(contents(), true, url2, &state, &deleted); |
TestInterstitialPageStateGuard state_guard(interstitial); |
interstitial->Show(); |
+ NavigationEntry* interstitial_entry = controller().GetTransientEntry(); |
// The interstitial should not show until its navigation has committed. |
EXPECT_FALSE(interstitial->is_showing()); |
EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
- EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
+ EXPECT_EQ(nullptr, contents()->GetInterstitialPage()); |
// Let's commit the interstitial navigation. |
- interstitial->TestDidNavigate(1, url2); |
+ interstitial->TestDidNavigate(1, interstitial_entry->GetUniqueID(), true, |
+ url2); |
EXPECT_TRUE(interstitial->is_showing()); |
EXPECT_TRUE(contents()->ShowingInterstitialPage()); |
EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); |
- NavigationEntry* entry = controller().GetVisibleEntry(); |
- ASSERT_TRUE(entry != NULL); |
+ entry = controller().GetVisibleEntry(); |
+ ASSERT_NE(nullptr, entry); |
EXPECT_TRUE(entry->GetURL() == url2); |
// Then proceed. |
@@ -1725,12 +1815,12 @@ TEST_F(WebContentsImplTest, |
// Simulate the navigation to the page, that's when the interstitial gets |
// hidden. |
GURL url3("http://www.thepage.com"); |
- contents()->GetMainFrame()->SendNavigate(2, url3); |
+ contents()->GetMainFrame()->SendNavigate(2, 0, true, url3); |
EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
- EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
+ EXPECT_EQ(nullptr, contents()->GetInterstitialPage()); |
entry = controller().GetVisibleEntry(); |
- ASSERT_TRUE(entry != NULL); |
+ ASSERT_NE(nullptr, entry); |
EXPECT_TRUE(entry->GetURL() == url3); |
EXPECT_EQ(2, controller().GetEntryCount()); |
@@ -1745,8 +1835,9 @@ TEST_F(WebContentsImplTest, |
TEST_F(WebContentsImplTest, ShowInterstitialNoNewNavigationProceed) { |
// Navigate to a page so we have a navigation entry in the controller. |
GURL url1("http://www.google.com"); |
- contents()->GetMainFrame()->SendNavigate(1, url1); |
+ contents()->GetMainFrame()->SendNavigate(1, 0, true, url1); |
EXPECT_EQ(1, controller().GetEntryCount()); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
// Show an interstitial. |
TestInterstitialPage::InterstitialState state = |
@@ -1760,14 +1851,14 @@ TEST_F(WebContentsImplTest, ShowInterstitialNoNewNavigationProceed) { |
// The interstitial should not show until its navigation has committed. |
EXPECT_FALSE(interstitial->is_showing()); |
EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
- EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
+ EXPECT_EQ(nullptr, contents()->GetInterstitialPage()); |
// Let's commit the interstitial navigation. |
- interstitial->TestDidNavigate(1, url2); |
+ interstitial->TestDidNavigate(1, 0, true, url2); |
EXPECT_TRUE(interstitial->is_showing()); |
EXPECT_TRUE(contents()->ShowingInterstitialPage()); |
EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); |
- NavigationEntry* entry = controller().GetVisibleEntry(); |
- ASSERT_TRUE(entry != NULL); |
+ entry = controller().GetVisibleEntry(); |
+ ASSERT_NE(nullptr, entry); |
// The URL specified to the interstitial should have been ignored. |
EXPECT_TRUE(entry->GetURL() == url1); |
@@ -1777,9 +1868,9 @@ TEST_F(WebContentsImplTest, ShowInterstitialNoNewNavigationProceed) { |
// away and shows the original page. |
EXPECT_EQ(TestInterstitialPage::OKED, state); |
EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
- EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
+ EXPECT_EQ(nullptr, contents()->GetInterstitialPage()); |
entry = controller().GetVisibleEntry(); |
- ASSERT_TRUE(entry != NULL); |
+ ASSERT_NE(nullptr, entry); |
EXPECT_TRUE(entry->GetURL() == url1); |
EXPECT_EQ(1, controller().GetEntryCount()); |
@@ -1799,11 +1890,13 @@ TEST_F(WebContentsImplTest, ShowInterstitialThenNavigate) { |
new TestInterstitialPage(contents(), true, url, &state, &deleted); |
TestInterstitialPageStateGuard state_guard(interstitial); |
interstitial->Show(); |
- interstitial->TestDidNavigate(1, url); |
+ NavigationEntry* interstitial_entry = controller().GetTransientEntry(); |
+ interstitial->TestDidNavigate(1, interstitial_entry->GetUniqueID(), true, |
+ url); |
// While interstitial showing, navigate to a new URL. |
const GURL url2("http://www.yahoo.com"); |
- contents()->GetMainFrame()->SendNavigate(1, url2); |
+ contents()->GetMainFrame()->SendNavigate(1, 1, true, url2); |
EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
@@ -1815,8 +1908,9 @@ TEST_F(WebContentsImplTest, ShowInterstitialThenNavigate) { |
TEST_F(WebContentsImplTest, ShowInterstitialThenGoBack) { |
// Navigate to a page so we have a navigation entry in the controller. |
GURL url1("http://www.google.com"); |
- contents()->GetMainFrame()->SendNavigate(1, url1); |
+ contents()->GetMainFrame()->SendNavigate(1, 0, true, url1); |
EXPECT_EQ(1, controller().GetEntryCount()); |
+ NavigationEntry* entry = controller().GetLastCommittedEntry(); |
// Show interstitial. |
TestInterstitialPage::InterstitialState state = |
@@ -1828,16 +1922,19 @@ TEST_F(WebContentsImplTest, ShowInterstitialThenGoBack) { |
&state, &deleted); |
TestInterstitialPageStateGuard state_guard(interstitial); |
interstitial->Show(); |
- interstitial->TestDidNavigate(2, interstitial_url); |
+ NavigationEntry* interstitial_entry = controller().GetTransientEntry(); |
+ interstitial->TestDidNavigate(2, interstitial_entry->GetUniqueID(), true, |
+ interstitial_url); |
// While the interstitial is showing, go back. |
controller().GoBack(); |
- contents()->GetMainFrame()->SendNavigate(1, url1); |
+ contents()->GetMainFrame()->SendNavigate( |
+ 1, entry->GetUniqueID(), false, url1); |
// Make sure we are back to the original page and that the interstitial is |
// gone. |
EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
- NavigationEntry* entry = controller().GetVisibleEntry(); |
+ entry = controller().GetVisibleEntry(); |
ASSERT_TRUE(entry); |
EXPECT_EQ(url1.spec(), entry->GetURL().spec()); |
@@ -1850,8 +1947,9 @@ TEST_F(WebContentsImplTest, ShowInterstitialThenGoBack) { |
TEST_F(WebContentsImplTest, ShowInterstitialCrashRendererThenGoBack) { |
// Navigate to a page so we have a navigation entry in the controller. |
GURL url1("http://www.google.com"); |
- contents()->GetMainFrame()->SendNavigate(1, url1); |
+ contents()->GetMainFrame()->SendNavigate(1, 0, true, url1); |
EXPECT_EQ(1, controller().GetEntryCount()); |
+ NavigationEntry* entry = controller().GetLastCommittedEntry(); |
// Show interstitial. |
TestInterstitialPage::InterstitialState state = |
@@ -1863,7 +1961,9 @@ TEST_F(WebContentsImplTest, ShowInterstitialCrashRendererThenGoBack) { |
&state, &deleted); |
TestInterstitialPageStateGuard state_guard(interstitial); |
interstitial->Show(); |
- interstitial->TestDidNavigate(2, interstitial_url); |
+ NavigationEntry* interstitial_entry = controller().GetTransientEntry(); |
+ interstitial->TestDidNavigate(2, interstitial_entry->GetUniqueID(), true, |
+ interstitial_url); |
// Crash the renderer |
main_rfh()->OnMessageReceived( |
@@ -1872,12 +1972,13 @@ TEST_F(WebContentsImplTest, ShowInterstitialCrashRendererThenGoBack) { |
// While the interstitial is showing, go back. |
controller().GoBack(); |
- contents()->GetMainFrame()->SendNavigate(1, url1); |
+ contents()->GetMainFrame()->SendNavigate( |
+ 1, entry->GetUniqueID(), false, url1); |
// Make sure we are back to the original page and that the interstitial is |
// gone. |
EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
- NavigationEntry* entry = controller().GetVisibleEntry(); |
+ entry = controller().GetVisibleEntry(); |
ASSERT_TRUE(entry); |
EXPECT_EQ(url1.spec(), entry->GetURL().spec()); |
@@ -1890,7 +1991,7 @@ TEST_F(WebContentsImplTest, ShowInterstitialCrashRendererThenGoBack) { |
TEST_F(WebContentsImplTest, ShowInterstitialCrashRendererThenNavigate) { |
// Navigate to a page so we have a navigation entry in the controller. |
GURL url1("http://www.google.com"); |
- contents()->GetMainFrame()->SendNavigate(1, url1); |
+ contents()->GetMainFrame()->SendNavigate(1, 0, true, url1); |
EXPECT_EQ(1, controller().GetEntryCount()); |
// Show interstitial. |
@@ -1903,13 +2004,15 @@ TEST_F(WebContentsImplTest, ShowInterstitialCrashRendererThenNavigate) { |
&state, &deleted); |
TestInterstitialPageStateGuard state_guard(interstitial); |
interstitial->Show(); |
+ NavigationEntry* interstitial_entry = controller().GetTransientEntry(); |
// Crash the renderer |
main_rfh()->OnMessageReceived( |
FrameHostMsg_RenderProcessGone( |
0, base::TERMINATION_STATUS_PROCESS_CRASHED, -1)); |
- interstitial->TestDidNavigate(2, interstitial_url); |
+ interstitial->TestDidNavigate(2, interstitial_entry->GetUniqueID(), true, |
+ interstitial_url); |
} |
// Test navigating to a page that shows an interstitial, then close the |
@@ -1924,7 +2027,9 @@ TEST_F(WebContentsImplTest, ShowInterstitialThenCloseTab) { |
new TestInterstitialPage(contents(), true, url, &state, &deleted); |
TestInterstitialPageStateGuard state_guard(interstitial); |
interstitial->Show(); |
- interstitial->TestDidNavigate(1, url); |
+ NavigationEntry* interstitial_entry = controller().GetTransientEntry(); |
+ interstitial->TestDidNavigate(1, interstitial_entry->GetUniqueID(), true, |
+ url); |
// Now close the contents. |
DeleteContents(); |
@@ -1946,7 +2051,9 @@ TEST_F(WebContentsImplTest, ShowInterstitialThenCloseAndShutdown) { |
new TestInterstitialPage(contents(), true, url, &state, &deleted); |
TestInterstitialPageStateGuard state_guard(interstitial); |
interstitial->Show(); |
- interstitial->TestDidNavigate(1, url); |
+ NavigationEntry* interstitial_entry = controller().GetTransientEntry(); |
+ interstitial->TestDidNavigate(1, interstitial_entry->GetUniqueID(), true, |
+ url); |
RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( |
interstitial->GetMainFrame()->GetRenderViewHost()); |
@@ -1969,7 +2076,7 @@ TEST_F(WebContentsImplTest, ShowInterstitialThenCloseAndShutdown) { |
TEST_F(WebContentsImplTest, ShowInterstitialProceedMultipleCommands) { |
// Navigate to a page so we have a navigation entry in the controller. |
GURL url1("http://www.google.com"); |
- contents()->GetMainFrame()->SendNavigate(1, url1); |
+ contents()->GetMainFrame()->SendNavigate(1, 0, true, url1); |
EXPECT_EQ(1, controller().GetEntryCount()); |
// Show an interstitial. |
@@ -1981,7 +2088,9 @@ TEST_F(WebContentsImplTest, ShowInterstitialProceedMultipleCommands) { |
new TestInterstitialPage(contents(), true, url2, &state, &deleted); |
TestInterstitialPageStateGuard state_guard(interstitial); |
interstitial->Show(); |
- interstitial->TestDidNavigate(1, url2); |
+ NavigationEntry* interstitial_entry = controller().GetTransientEntry(); |
+ interstitial->TestDidNavigate(1, interstitial_entry->GetUniqueID(), true, |
+ url2); |
// Run a command. |
EXPECT_EQ(0, interstitial->command_received_count()); |
@@ -2004,7 +2113,7 @@ TEST_F(WebContentsImplTest, ShowInterstitialProceedMultipleCommands) { |
TEST_F(WebContentsImplTest, ShowInterstitialOnInterstitial) { |
// Navigate to a page so we have a navigation entry in the controller. |
GURL start_url("http://www.google.com"); |
- contents()->GetMainFrame()->SendNavigate(1, start_url); |
+ contents()->GetMainFrame()->SendNavigate(1, 0, true, start_url); |
EXPECT_EQ(1, controller().GetEntryCount()); |
// Show an interstitial. |
@@ -2016,7 +2125,9 @@ TEST_F(WebContentsImplTest, ShowInterstitialOnInterstitial) { |
new TestInterstitialPage(contents(), true, url1, &state1, &deleted1); |
TestInterstitialPageStateGuard state_guard1(interstitial1); |
interstitial1->Show(); |
- interstitial1->TestDidNavigate(1, url1); |
+ NavigationEntry* interstitial_entry = controller().GetTransientEntry(); |
+ interstitial1->TestDidNavigate(1, interstitial_entry->GetUniqueID(), true, |
+ url1); |
// Now show another interstitial. |
TestInterstitialPage::InterstitialState state2 = |
@@ -2027,7 +2138,9 @@ TEST_F(WebContentsImplTest, ShowInterstitialOnInterstitial) { |
new TestInterstitialPage(contents(), true, url2, &state2, &deleted2); |
TestInterstitialPageStateGuard state_guard2(interstitial2); |
interstitial2->Show(); |
- interstitial2->TestDidNavigate(1, url2); |
+ interstitial_entry = controller().GetTransientEntry(); |
+ interstitial2->TestDidNavigate(1, interstitial_entry->GetUniqueID(), true, |
+ url2); |
// Showing interstitial2 should have caused interstitial1 to go away. |
EXPECT_EQ(TestInterstitialPage::CANCELED, state1); |
@@ -2040,12 +2153,12 @@ TEST_F(WebContentsImplTest, ShowInterstitialOnInterstitial) { |
// Let's make sure interstitial2 is working as intended. |
interstitial2->Proceed(); |
GURL landing_url("http://www.thepage.com"); |
- contents()->GetMainFrame()->SendNavigate(2, landing_url); |
+ contents()->GetMainFrame()->SendNavigate(2, 0, true, landing_url); |
EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
- EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
+ EXPECT_EQ(nullptr, contents()->GetInterstitialPage()); |
NavigationEntry* entry = controller().GetVisibleEntry(); |
- ASSERT_TRUE(entry != NULL); |
+ ASSERT_NE(nullptr, entry); |
EXPECT_TRUE(entry->GetURL() == landing_url); |
EXPECT_EQ(2, controller().GetEntryCount()); |
RunAllPendingInMessageLoop(); |
@@ -2057,7 +2170,7 @@ TEST_F(WebContentsImplTest, ShowInterstitialOnInterstitial) { |
TEST_F(WebContentsImplTest, ShowInterstitialProceedShowInterstitial) { |
// Navigate to a page so we have a navigation entry in the controller. |
GURL start_url("http://www.google.com"); |
- contents()->GetMainFrame()->SendNavigate(1, start_url); |
+ contents()->GetMainFrame()->SendNavigate(1, 0, true, start_url); |
EXPECT_EQ(1, controller().GetEntryCount()); |
// Show an interstitial. |
@@ -2069,7 +2182,9 @@ TEST_F(WebContentsImplTest, ShowInterstitialProceedShowInterstitial) { |
new TestInterstitialPage(contents(), true, url1, &state1, &deleted1); |
TestInterstitialPageStateGuard state_guard1(interstitial1); |
interstitial1->Show(); |
- interstitial1->TestDidNavigate(1, url1); |
+ NavigationEntry* interstitial_entry = controller().GetTransientEntry(); |
+ interstitial1->TestDidNavigate(1, interstitial_entry->GetUniqueID(), true, |
+ url1); |
// Take action. The interstitial won't be hidden until the navigation is |
// committed. |
@@ -2086,7 +2201,9 @@ TEST_F(WebContentsImplTest, ShowInterstitialProceedShowInterstitial) { |
new TestInterstitialPage(contents(), true, url2, &state2, &deleted2); |
TestInterstitialPageStateGuard state_guard2(interstitial2); |
interstitial2->Show(); |
- interstitial2->TestDidNavigate(1, url2); |
+ interstitial_entry = controller().GetTransientEntry(); |
+ interstitial2->TestDidNavigate(1, interstitial_entry->GetUniqueID(), true, |
+ url2); |
// Showing interstitial2 should have caused interstitial1 to go away. |
EXPECT_EQ(TestInterstitialPage::UNDECIDED, state2); |
@@ -2097,14 +2214,14 @@ TEST_F(WebContentsImplTest, ShowInterstitialProceedShowInterstitial) { |
// Let's make sure interstitial2 is working as intended. |
interstitial2->Proceed(); |
GURL landing_url("http://www.thepage.com"); |
- contents()->GetMainFrame()->SendNavigate(2, landing_url); |
+ contents()->GetMainFrame()->SendNavigate(2, 0, true, landing_url); |
RunAllPendingInMessageLoop(); |
EXPECT_TRUE(deleted2); |
EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
- EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
+ EXPECT_EQ(nullptr, contents()->GetInterstitialPage()); |
NavigationEntry* entry = controller().GetVisibleEntry(); |
- ASSERT_TRUE(entry != NULL); |
+ ASSERT_NE(nullptr, entry); |
EXPECT_TRUE(entry->GetURL() == landing_url); |
EXPECT_EQ(2, controller().GetEntryCount()); |
} |
@@ -2122,6 +2239,7 @@ TEST_F(WebContentsImplTest, NavigateBeforeInterstitialShows) { |
&state, &deleted); |
TestInterstitialPageStateGuard state_guard(interstitial); |
interstitial->Show(); |
+ NavigationEntry* interstitial_entry = controller().GetTransientEntry(); |
// Let's simulate a navigation initiated from the browser before the |
// interstitial finishes loading. |
@@ -2133,7 +2251,8 @@ TEST_F(WebContentsImplTest, NavigateBeforeInterstitialShows) { |
ASSERT_FALSE(deleted); |
// Now let's make the interstitial navigation commit. |
- interstitial->TestDidNavigate(1, interstitial_url); |
+ interstitial->TestDidNavigate(1, interstitial_entry->GetUniqueID(), true, |
+ interstitial_url); |
// After it loaded the interstitial should be gone. |
EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
@@ -2167,6 +2286,7 @@ TEST_F(WebContentsImplTest, TwoQuickInterstitials) { |
&state2, &deleted2); |
TestInterstitialPageStateGuard state_guard2(interstitial2); |
interstitial2->Show(); |
+ NavigationEntry* interstitial_entry = controller().GetTransientEntry(); |
// The first interstitial should have been closed and deleted. |
EXPECT_EQ(TestInterstitialPage::CANCELED, state1); |
@@ -2178,7 +2298,8 @@ TEST_F(WebContentsImplTest, TwoQuickInterstitials) { |
ASSERT_FALSE(deleted2); |
// Make the interstitial navigation commit it should be showing. |
- interstitial2->TestDidNavigate(1, interstitial_url); |
+ interstitial2->TestDidNavigate(1, interstitial_entry->GetUniqueID(), true, |
+ interstitial_url); |
EXPECT_EQ(interstitial2, contents()->GetInterstitialPage()); |
} |
@@ -2205,7 +2326,9 @@ TEST_F(WebContentsImplTest, InterstitialCrasher) { |
interstitial = |
new TestInterstitialPage(contents(), true, url, &state, &deleted); |
interstitial->Show(); |
- interstitial->TestDidNavigate(1, url); |
+ NavigationEntry* interstitial_entry = controller().GetTransientEntry(); |
+ interstitial->TestDidNavigate(1, interstitial_entry->GetUniqueID(), true, |
+ url); |
// Simulate a renderer crash. |
interstitial->TestRenderViewTerminated( |
base::TERMINATION_STATUS_PROCESS_CRASHED, -1); |
@@ -2234,7 +2357,9 @@ TEST_F(WebContentsImplTest, NewInterstitialDoesNotCancelPendingEntry) { |
new TestInterstitialPage(contents(), true, kGURL, &state, &deleted); |
TestInterstitialPageStateGuard state_guard(interstitial); |
interstitial->Show(); |
- interstitial->TestDidNavigate(1, kGURL); |
+ NavigationEntry* interstitial_entry = controller().GetTransientEntry(); |
+ interstitial->TestDidNavigate(1, interstitial_entry->GetUniqueID(), true, |
+ kGURL); |
// Initiate a new navigation from the browser that also triggers an |
// interstitial. |
@@ -2247,7 +2372,9 @@ TEST_F(WebContentsImplTest, NewInterstitialDoesNotCancelPendingEntry) { |
new TestInterstitialPage(contents(), true, kGURL, &state2, &deleted2); |
TestInterstitialPageStateGuard state_guard2(interstitial2); |
interstitial2->Show(); |
- interstitial2->TestDidNavigate(1, kGURL); |
+ interstitial_entry = controller().GetTransientEntry(); |
+ interstitial2->TestDidNavigate(1, interstitial_entry->GetUniqueID(), true, |
+ kGURL); |
// Make sure we still have an entry. |
NavigationEntry* entry = contents()->GetController().GetPendingEntry(); |
@@ -2271,9 +2398,11 @@ TEST_F(WebContentsImplTest, NoJSMessageOnInterstitials) { |
// Start a navigation to a page |
contents()->GetController().LoadURL( |
kGURL, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
// DidNavigate from the page |
- contents()->TestDidNavigate( |
- contents()->GetMainFrame(), 1, kGURL, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(contents()->GetMainFrame(), 1, |
+ entry->GetUniqueID(), true, kGURL, |
+ ui::PAGE_TRANSITION_TYPED); |
// Simulate showing an interstitial while the page is showing. |
TestInterstitialPage::InterstitialState state = |
@@ -2283,7 +2412,9 @@ TEST_F(WebContentsImplTest, NoJSMessageOnInterstitials) { |
new TestInterstitialPage(contents(), true, kGURL, &state, &deleted); |
TestInterstitialPageStateGuard state_guard(interstitial); |
interstitial->Show(); |
- interstitial->TestDidNavigate(1, kGURL); |
+ NavigationEntry* interstitial_entry = controller().GetTransientEntry(); |
+ interstitial->TestDidNavigate(1, interstitial_entry->GetUniqueID(), true, |
+ kGURL); |
// While the interstitial is showing, let's simulate the hidden page |
// attempting to show a JS message. |
@@ -2300,7 +2431,7 @@ TEST_F(WebContentsImplTest, NoJSMessageOnInterstitials) { |
TEST_F(WebContentsImplTest, CopyStateFromAndPruneSourceInterstitial) { |
// Navigate to a page. |
GURL url1("http://www.google.com"); |
- contents()->GetMainFrame()->SendNavigate(1, url1); |
+ contents()->GetMainFrame()->SendNavigate(1, 0, true, url1); |
EXPECT_EQ(1, controller().GetEntryCount()); |
// Initiate a browser navigation that will trigger the interstitial |
@@ -2316,7 +2447,9 @@ TEST_F(WebContentsImplTest, CopyStateFromAndPruneSourceInterstitial) { |
new TestInterstitialPage(contents(), true, url2, &state, &deleted); |
TestInterstitialPageStateGuard state_guard(interstitial); |
interstitial->Show(); |
- interstitial->TestDidNavigate(1, url2); |
+ NavigationEntry* interstitial_entry = controller().GetTransientEntry(); |
+ interstitial->TestDidNavigate(1, interstitial_entry->GetUniqueID(), true, |
+ url2); |
EXPECT_TRUE(interstitial->is_showing()); |
EXPECT_EQ(2, controller().GetEntryCount()); |
@@ -2365,7 +2498,9 @@ TEST_F(WebContentsImplTest, CopyStateFromAndPruneTargetInterstitial) { |
&deleted); |
TestInterstitialPageStateGuard state_guard(interstitial); |
interstitial->Show(); |
- interstitial->TestDidNavigate(1, url3); |
+ NavigationEntry* interstitial_entry = controller().GetTransientEntry(); |
+ interstitial->TestDidNavigate(1, interstitial_entry->GetUniqueID(), true, |
+ url3); |
EXPECT_TRUE(interstitial->is_showing()); |
EXPECT_EQ(2, other_controller.GetEntryCount()); |
@@ -2414,7 +2549,7 @@ TEST_F(WebContentsImplTest, PendingContents) { |
contents()->AddPendingContents(other_contents.get()); |
int route_id = other_contents->GetRenderViewHost()->GetRoutingID(); |
other_contents.reset(); |
- EXPECT_EQ(NULL, contents()->GetCreatedWindow(route_id)); |
+ EXPECT_EQ(nullptr, contents()->GetCreatedWindow(route_id)); |
} |
TEST_F(WebContentsImplTest, CapturerOverridesPreferredSize) { |
@@ -2806,9 +2941,11 @@ TEST_F(WebContentsImplTest, StartStopEventsBalance) { |
// The frame should still be loading. |
controller().LoadURL( |
main_url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
orig_rfh->OnMessageReceived( |
FrameHostMsg_DidStartLoading(orig_rfh->GetRoutingID(), false)); |
- contents()->TestDidNavigate(orig_rfh, 1, main_url, ui::PAGE_TRANSITION_TYPED); |
+ contents()->TestDidNavigate(orig_rfh, 1, entry->GetUniqueID(), true, main_url, |
+ ui::PAGE_TRANSITION_TYPED); |
EXPECT_FALSE(contents()->cross_navigation_pending()); |
EXPECT_EQ(orig_rfh, contents()->GetMainFrame()); |
EXPECT_TRUE(contents()->IsLoading()); |
@@ -2823,7 +2960,7 @@ TEST_F(WebContentsImplTest, StartStopEventsBalance) { |
subframe->OnMessageReceived( |
FrameHostMsg_DidStartLoading(subframe->GetRoutingID(), true)); |
subframe->SendNavigateWithTransition( |
- 1, GURL("about:blank"), ui::PAGE_TRANSITION_AUTO_SUBFRAME); |
+ 1, 0, false, GURL("about:blank"), ui::PAGE_TRANSITION_AUTO_SUBFRAME); |
subframe->OnMessageReceived( |
FrameHostMsg_DidStopLoading(subframe->GetRoutingID())); |
} |
@@ -2834,7 +2971,7 @@ TEST_F(WebContentsImplTest, StartStopEventsBalance) { |
subframe->OnMessageReceived( |
FrameHostMsg_DidStartLoading(subframe->GetRoutingID(), true)); |
subframe->SendNavigateWithTransition( |
- 1, foo_url, ui::PAGE_TRANSITION_AUTO_SUBFRAME); |
+ 1, 0, false, foo_url, ui::PAGE_TRANSITION_AUTO_SUBFRAME); |
subframe->OnMessageReceived( |
FrameHostMsg_DidStopLoading(subframe->GetRoutingID())); |
} |
@@ -2859,14 +2996,15 @@ TEST_F(WebContentsImplTest, StartStopEventsBalance) { |
load_params.frame_tree_node_id = |
subframe->frame_tree_node()->frame_tree_node_id(); |
controller().LoadURLWithParams(load_params); |
+ entry = controller().GetPendingEntry(); |
subframe->OnMessageReceived( |
FrameHostMsg_DidStartLoading(subframe->GetRoutingID(), true)); |
// Commit the navigation in the child frame and send the DidStopLoading |
// message. |
- contents()->TestDidNavigate( |
- subframe, 3, bar_url, ui::PAGE_TRANSITION_MANUAL_SUBFRAME); |
+ contents()->TestDidNavigate(subframe, 3, entry->GetUniqueID(), true, |
+ bar_url, ui::PAGE_TRANSITION_MANUAL_SUBFRAME); |
subframe->OnMessageReceived( |
FrameHostMsg_DidStopLoading(subframe->GetRoutingID())); |
} |
@@ -2902,6 +3040,7 @@ TEST_F(WebContentsImplTest, NoEarlyStop) { |
// be a pending RenderFrameHost and the WebContents should be loading. |
controller().LoadURL( |
kUrl2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
+ NavigationEntry* entry = controller().GetPendingEntry(); |
EXPECT_TRUE(contents()->cross_navigation_pending()); |
TestRenderFrameHost* pending_rfh = contents()->GetPendingMainFrame(); |
ASSERT_TRUE(pending_rfh); |
@@ -2925,7 +3064,7 @@ TEST_F(WebContentsImplTest, NoEarlyStop) { |
// Simulate the commit and DidStopLoading from the renderer-initiated |
// navigation in the current RenderFrameHost. There should still be a pending |
// RenderFrameHost and the WebContents should still be loading. |
- current_rfh->SendNavigate(1, kUrl3); |
+ current_rfh->SendNavigate(1, 0, true, kUrl3); |
current_rfh->OnMessageReceived( |
FrameHostMsg_DidStopLoading(current_rfh->GetRoutingID())); |
EXPECT_EQ(contents()->GetPendingMainFrame(), pending_rfh); |
@@ -2933,7 +3072,7 @@ TEST_F(WebContentsImplTest, NoEarlyStop) { |
// Commit the navigation. The formerly pending RenderFrameHost should now be |
// the current RenderFrameHost and the WebContents should still be loading. |
- contents()->TestDidNavigate(pending_rfh, 1, kUrl2, |
+ contents()->TestDidNavigate(pending_rfh, 1, entry->GetUniqueID(), true, kUrl2, |
ui::PAGE_TRANSITION_TYPED); |
EXPECT_FALSE(contents()->GetPendingMainFrame()); |
TestRenderFrameHost* new_current_rfh = contents()->GetMainFrame(); |