| Index: chrome/browser/tab_contents/web_contents_unittest.cc
|
| ===================================================================
|
| --- chrome/browser/tab_contents/web_contents_unittest.cc (revision 8331)
|
| +++ chrome/browser/tab_contents/web_contents_unittest.cc (working copy)
|
| @@ -9,7 +9,7 @@
|
| #include "chrome/browser/tab_contents/interstitial_page.h"
|
| #include "chrome/browser/tab_contents/navigation_controller.h"
|
| #include "chrome/browser/tab_contents/navigation_entry.h"
|
| -#include "chrome/browser/tab_contents/web_contents.h"
|
| +#include "chrome/browser/tab_contents/test_web_contents.h"
|
| #include "chrome/common/chrome_paths.h"
|
| #include "chrome/common/ipc_channel.h"
|
| #include "chrome/common/pref_service.h"
|
| @@ -56,63 +56,6 @@
|
| }
|
| };
|
|
|
| -// Subclass WebContents to ensure it creates TestRenderViewHosts and does
|
| -// not do anything involving views.
|
| -//
|
| -// TODO(brettw) merge this with the TestRenderProcessHost to it can be used by
|
| -// other tests as well.
|
| -class TestWebContents : public WebContents {
|
| - public:
|
| - TestWebContents(Profile* profile, SiteInstance* instance)
|
| - : WebContents(profile,
|
| - instance,
|
| - TestRenderViewHostFactory::GetInstance(),
|
| - MSG_ROUTING_NONE,
|
| - NULL),
|
| - transition_cross_site(false) {}
|
| -
|
| - // Accessors for interesting fields
|
| - TestRenderViewHost* rvh() {
|
| - return static_cast<TestRenderViewHost*>(
|
| - render_manager_.render_view_host_);
|
| - }
|
| - TestRenderViewHost* pending_rvh() {
|
| - return static_cast<TestRenderViewHost*>(
|
| - render_manager_.pending_render_view_host_);
|
| - }
|
| -
|
| - // State accessor.
|
| - bool cross_navigation_pending() {
|
| - return render_manager_.cross_navigation_pending_;
|
| - }
|
| -
|
| - // Overrides WebContents::ShouldTransitionCrossSite so that we can test both
|
| - // alternatives without using command-line switches.
|
| - bool ShouldTransitionCrossSite() { return transition_cross_site; }
|
| -
|
| - // Promote DidNavigate to public.
|
| - void TestDidNavigate(TestRenderViewHost* render_view_host,
|
| - const ViewHostMsg_FrameNavigate_Params& params) {
|
| - DidNavigate(render_view_host, params);
|
| - }
|
| -
|
| - // Promote GetWebkitPrefs to public.
|
| - WebPreferences TestGetWebkitPrefs() {
|
| - return GetWebkitPrefs();
|
| - }
|
| -
|
| - // Prevent interaction with views.
|
| - bool CreateRenderViewForRenderManager(RenderViewHost* render_view_host) {
|
| - // This will go to a TestRenderViewHost.
|
| - render_view_host->CreateRenderView();
|
| - return true;
|
| - }
|
| - void UpdateRenderViewSizeForRenderManager() {}
|
| -
|
| - // Set by individual tests.
|
| - bool transition_cross_site;
|
| -};
|
| -
|
| class TestInterstitialPage : public InterstitialPage {
|
| public:
|
| enum InterstitialState {
|
| @@ -241,44 +184,18 @@
|
| TestInterstitialPage* interstitial_page_;
|
| };
|
|
|
| -class WebContentsTest : public testing::Test {
|
| +class WebContentsTest : public RenderViewHostTestHarness {
|
| public:
|
| - WebContentsTest() : contents(NULL) {}
|
| -
|
| - // testing::Test methods:
|
| -
|
| - virtual void SetUp() {
|
| - profile.reset(new WebContentsTestingProfile());
|
| -
|
| - // This will be deleted when the WebContents goes away
|
| - SiteInstance* instance = SiteInstance::CreateSiteInstance(profile.get());
|
| -
|
| - contents = new TestWebContents(profile.get(), instance);
|
| - contents->SetupController(profile.get());
|
| + WebContentsTest() : RenderViewHostTestHarness() {
|
| }
|
|
|
| - virtual void TearDown() {
|
| - // This will delete the contents.
|
| - if (contents)
|
| - contents->CloseContents();
|
| -
|
| - // Make sure that we flush any messages related to WebContents destruction
|
| - // before we destroy the profile.
|
| - MessageLoop::current()->RunAllPending();
|
| - }
|
| -
|
| - void Navigate(int page_id, const GURL& url) {
|
| - DCHECK(contents);
|
| - ViewHostMsg_FrameNavigate_Params params;
|
| - InitNavigateParams(¶ms, page_id, url);
|
| - contents->TestDidNavigate(contents->rvh(), params);
|
| - }
|
| -
|
| - scoped_ptr<WebContentsTestingProfile> profile;
|
| - TestWebContents* contents;
|
| -
|
| private:
|
| - MessageLoopForUI message_loop_;
|
| + // Supply our own profile so we use the correct profile data. The test harness
|
| + // is not supposed to overwrite an profile if it's already created.
|
| + virtual void SetUp() {
|
| + profile_.reset(new WebContentsTestingProfile());
|
| + RenderViewHostTestHarness::SetUp();
|
| + }
|
| };
|
|
|
| // Test to make sure that title updates get stripped of whitespace.
|
| @@ -287,169 +204,168 @@
|
| InitNavigateParams(¶ms, 0, GURL("about:blank"));
|
|
|
| NavigationController::LoadCommittedDetails details;
|
| - contents->controller()->RendererDidNavigate(params, &details);
|
| + controller()->RendererDidNavigate(params, &details);
|
|
|
| - contents->UpdateTitle(contents->rvh(), 0, L" Lots O' Whitespace\n");
|
| - EXPECT_EQ(std::wstring(L"Lots O' Whitespace"), contents->GetTitle());
|
| + contents()->UpdateTitle(rvh(), 0, L" Lots O' Whitespace\n");
|
| + EXPECT_EQ(std::wstring(L"Lots O' Whitespace"), contents()->GetTitle());
|
| }
|
|
|
| // Test simple same-SiteInstance navigation.
|
| TEST_F(WebContentsTest, SimpleNavigation) {
|
| - TestRenderViewHost* orig_rvh = contents->rvh();
|
| - SiteInstance* instance1 = contents->GetSiteInstance();
|
| - EXPECT_TRUE(contents->pending_rvh() == NULL);
|
| + TestRenderViewHost* orig_rvh = rvh();
|
| + SiteInstance* instance1 = contents()->GetSiteInstance();
|
| + EXPECT_TRUE(contents()->pending_rvh() == NULL);
|
|
|
| // Navigate to URL
|
| const GURL url("http://www.google.com");
|
| - contents->controller()->LoadURL(url, GURL(), PageTransition::TYPED);
|
| - EXPECT_FALSE(contents->cross_navigation_pending());
|
| + controller()->LoadURL(url, GURL(), PageTransition::TYPED);
|
| + EXPECT_FALSE(contents()->cross_navigation_pending());
|
| EXPECT_EQ(instance1, orig_rvh->site_instance());
|
| // Controller's pending entry will have a NULL site instance until we assign
|
| // it in DidNavigate.
|
| - EXPECT_TRUE(
|
| - contents->controller()->GetActiveEntry()->site_instance() == NULL);
|
| + EXPECT_TRUE(controller()->GetActiveEntry()->site_instance() == NULL);
|
|
|
| // DidNavigate from the page
|
| ViewHostMsg_FrameNavigate_Params params;
|
| InitNavigateParams(¶ms, 1, url);
|
| - contents->TestDidNavigate(orig_rvh, params);
|
| - EXPECT_FALSE(contents->cross_navigation_pending());
|
| - EXPECT_EQ(orig_rvh, contents->render_view_host());
|
| + contents()->TestDidNavigate(orig_rvh, params);
|
| + EXPECT_FALSE(contents()->cross_navigation_pending());
|
| + EXPECT_EQ(orig_rvh, contents()->render_view_host());
|
| EXPECT_EQ(instance1, orig_rvh->site_instance());
|
| // Controller's entry should now have the SiteInstance, or else we won't be
|
| // able to find it later.
|
| - EXPECT_EQ(instance1,
|
| - contents->controller()->GetActiveEntry()->site_instance());
|
| + EXPECT_EQ(instance1, controller()->GetActiveEntry()->site_instance());
|
| }
|
|
|
| // Test that navigating across a site boundary creates a new RenderViewHost
|
| // with a new SiteInstance. Going back should do the same.
|
| TEST_F(WebContentsTest, CrossSiteBoundaries) {
|
| - contents->transition_cross_site = true;
|
| - TestRenderViewHost* orig_rvh = contents->rvh();
|
| + contents()->transition_cross_site = true;
|
| + TestRenderViewHost* orig_rvh = rvh();
|
| int orig_rvh_delete_count = 0;
|
| orig_rvh->set_delete_counter(&orig_rvh_delete_count);
|
| - SiteInstance* instance1 = contents->GetSiteInstance();
|
| + SiteInstance* instance1 = contents()->GetSiteInstance();
|
|
|
| // Navigate to URL. First URL should use first RenderViewHost.
|
| const GURL url("http://www.google.com");
|
| - contents->controller()->LoadURL(url, GURL(), PageTransition::TYPED);
|
| + controller()->LoadURL(url, GURL(), PageTransition::TYPED);
|
| ViewHostMsg_FrameNavigate_Params params1;
|
| InitNavigateParams(¶ms1, 1, url);
|
| - contents->TestDidNavigate(orig_rvh, params1);
|
| + contents()->TestDidNavigate(orig_rvh, params1);
|
|
|
| - EXPECT_FALSE(contents->cross_navigation_pending());
|
| - EXPECT_EQ(orig_rvh, contents->render_view_host());
|
| + EXPECT_FALSE(contents()->cross_navigation_pending());
|
| + EXPECT_EQ(orig_rvh, contents()->render_view_host());
|
|
|
| // Navigate to new site
|
| const GURL url2("http://www.yahoo.com");
|
| - contents->controller()->LoadURL(url2, GURL(), PageTransition::TYPED);
|
| - EXPECT_TRUE(contents->cross_navigation_pending());
|
| - TestRenderViewHost* pending_rvh = contents->pending_rvh();
|
| + controller()->LoadURL(url2, GURL(), PageTransition::TYPED);
|
| + EXPECT_TRUE(contents()->cross_navigation_pending());
|
| + TestRenderViewHost* pending_rvh = contents()->pending_rvh();
|
| int pending_rvh_delete_count = 0;
|
| pending_rvh->set_delete_counter(&pending_rvh_delete_count);
|
|
|
| // DidNavigate from the pending page
|
| ViewHostMsg_FrameNavigate_Params params2;
|
| InitNavigateParams(¶ms2, 1, url2);
|
| - contents->TestDidNavigate(pending_rvh, params2);
|
| - SiteInstance* instance2 = contents->GetSiteInstance();
|
| + contents()->TestDidNavigate(pending_rvh, params2);
|
| + SiteInstance* instance2 = contents()->GetSiteInstance();
|
|
|
| - EXPECT_FALSE(contents->cross_navigation_pending());
|
| - EXPECT_EQ(pending_rvh, contents->render_view_host());
|
| + EXPECT_FALSE(contents()->cross_navigation_pending());
|
| + EXPECT_EQ(pending_rvh, contents()->render_view_host());
|
| EXPECT_NE(instance1, instance2);
|
| - EXPECT_TRUE(contents->pending_rvh() == NULL);
|
| + EXPECT_TRUE(contents()->pending_rvh() == NULL);
|
| EXPECT_EQ(orig_rvh_delete_count, 1);
|
|
|
| // Going back should switch SiteInstances again. The first SiteInstance is
|
| // stored in the NavigationEntry, so it should be the same as at the start.
|
| - contents->controller()->GoBack();
|
| - TestRenderViewHost* goback_rvh = contents->pending_rvh();
|
| - EXPECT_TRUE(contents->cross_navigation_pending());
|
| + controller()->GoBack();
|
| + TestRenderViewHost* goback_rvh = contents()->pending_rvh();
|
| + EXPECT_TRUE(contents()->cross_navigation_pending());
|
|
|
| // DidNavigate from the back action
|
| - contents->TestDidNavigate(goback_rvh, params1);
|
| - EXPECT_FALSE(contents->cross_navigation_pending());
|
| - EXPECT_EQ(goback_rvh, contents->render_view_host());
|
| + contents()->TestDidNavigate(goback_rvh, params1);
|
| + EXPECT_FALSE(contents()->cross_navigation_pending());
|
| + EXPECT_EQ(goback_rvh, contents()->render_view_host());
|
| EXPECT_EQ(pending_rvh_delete_count, 1);
|
| - EXPECT_EQ(instance1, contents->GetSiteInstance());
|
| + EXPECT_EQ(instance1, contents()->GetSiteInstance());
|
| }
|
|
|
| // Test that navigating across a site boundary after a crash creates a new
|
| // RVH without requiring a cross-site transition (i.e., PENDING state).
|
| TEST_F(WebContentsTest, CrossSiteBoundariesAfterCrash) {
|
| - contents->transition_cross_site = true;
|
| - TestRenderViewHost* orig_rvh = contents->rvh();
|
| + contents()->transition_cross_site = true;
|
| + TestRenderViewHost* orig_rvh = rvh();
|
| int orig_rvh_delete_count = 0;
|
| orig_rvh->set_delete_counter(&orig_rvh_delete_count);
|
| - SiteInstance* instance1 = contents->GetSiteInstance();
|
| + SiteInstance* instance1 = contents()->GetSiteInstance();
|
|
|
| // Navigate to URL. First URL should use first RenderViewHost.
|
| const GURL url("http://www.google.com");
|
| - contents->controller()->LoadURL(url, GURL(), PageTransition::TYPED);
|
| + controller()->LoadURL(url, GURL(), PageTransition::TYPED);
|
| ViewHostMsg_FrameNavigate_Params params1;
|
| InitNavigateParams(¶ms1, 1, url);
|
| - contents->TestDidNavigate(orig_rvh, params1);
|
| + contents()->TestDidNavigate(orig_rvh, params1);
|
|
|
| - EXPECT_FALSE(contents->cross_navigation_pending());
|
| - EXPECT_EQ(orig_rvh, contents->render_view_host());
|
| + EXPECT_FALSE(contents()->cross_navigation_pending());
|
| + EXPECT_EQ(orig_rvh, contents()->render_view_host());
|
|
|
| // Crash the renderer.
|
| orig_rvh->set_render_view_created(false);
|
|
|
| // Navigate to new site. We should not go into PENDING.
|
| const GURL url2("http://www.yahoo.com");
|
| - contents->controller()->LoadURL(url2, GURL(), PageTransition::TYPED);
|
| - TestRenderViewHost* new_rvh = contents->rvh();
|
| - EXPECT_FALSE(contents->cross_navigation_pending());
|
| - EXPECT_TRUE(contents->pending_rvh() == NULL);
|
| + controller()->LoadURL(url2, GURL(), PageTransition::TYPED);
|
| + TestRenderViewHost* new_rvh = rvh();
|
| + EXPECT_FALSE(contents()->cross_navigation_pending());
|
| + EXPECT_TRUE(contents()->pending_rvh() == NULL);
|
| EXPECT_NE(orig_rvh, new_rvh);
|
| EXPECT_EQ(orig_rvh_delete_count, 1);
|
|
|
| // DidNavigate from the new page
|
| ViewHostMsg_FrameNavigate_Params params2;
|
| InitNavigateParams(¶ms2, 1, url2);
|
| - contents->TestDidNavigate(new_rvh, params2);
|
| - SiteInstance* instance2 = contents->GetSiteInstance();
|
| + contents()->TestDidNavigate(new_rvh, params2);
|
| + SiteInstance* instance2 = contents()->GetSiteInstance();
|
|
|
| - EXPECT_FALSE(contents->cross_navigation_pending());
|
| - EXPECT_EQ(new_rvh, contents->render_view_host());
|
| + EXPECT_FALSE(contents()->cross_navigation_pending());
|
| + EXPECT_EQ(new_rvh, rvh());
|
| EXPECT_NE(instance1, instance2);
|
| - EXPECT_TRUE(contents->pending_rvh() == NULL);
|
| + EXPECT_TRUE(contents()->pending_rvh() == NULL);
|
| }
|
|
|
| // Test that opening a new tab in the same SiteInstance and then navigating
|
| // both tabs to a new site will place both tabs in a single SiteInstance.
|
| TEST_F(WebContentsTest, NavigateTwoTabsCrossSite) {
|
| - contents->transition_cross_site = true;
|
| - TestRenderViewHost* orig_rvh = contents->rvh();
|
| - SiteInstance* instance1 = contents->GetSiteInstance();
|
| + contents()->transition_cross_site = true;
|
| + TestRenderViewHost* orig_rvh = rvh();
|
| + SiteInstance* instance1 = contents()->GetSiteInstance();
|
|
|
| // Navigate to URL. First URL should use first RenderViewHost.
|
| const GURL url("http://www.google.com");
|
| - contents->controller()->LoadURL(url, GURL(), PageTransition::TYPED);
|
| + controller()->LoadURL(url, GURL(), PageTransition::TYPED);
|
| ViewHostMsg_FrameNavigate_Params params1;
|
| InitNavigateParams(¶ms1, 1, url);
|
| - contents->TestDidNavigate(orig_rvh, params1);
|
| + contents()->TestDidNavigate(orig_rvh, params1);
|
|
|
| // Open a new tab with the same SiteInstance, navigated to the same site.
|
| - TestWebContents* contents2 = new TestWebContents(profile.get(), instance1);
|
| + TestWebContents* contents2 = new TestWebContents(profile(), instance1,
|
| + &rvh_factory_);
|
| params1.page_id = 2; // Need this since the site instance is the same (which
|
| // is the scope of page IDs) and we want to consider
|
| // this a new page.
|
| contents2->transition_cross_site = true;
|
| - contents2->SetupController(profile.get());
|
| + contents2->SetupController(profile());
|
| contents2->controller()->LoadURL(url, GURL(), PageTransition::TYPED);
|
| - contents2->TestDidNavigate(contents2->rvh(), params1);
|
| + contents2->TestDidNavigate(contents2->render_view_host(), params1);
|
|
|
| // Navigate first tab to a new site
|
| const GURL url2a("http://www.yahoo.com");
|
| - contents->controller()->LoadURL(url2a, GURL(), PageTransition::TYPED);
|
| - TestRenderViewHost* pending_rvh_a = contents->pending_rvh();
|
| + controller()->LoadURL(url2a, GURL(), PageTransition::TYPED);
|
| + TestRenderViewHost* pending_rvh_a = contents()->pending_rvh();
|
| ViewHostMsg_FrameNavigate_Params params2a;
|
| InitNavigateParams(¶ms2a, 1, url2a);
|
| - contents->TestDidNavigate(pending_rvh_a, params2a);
|
| - SiteInstance* instance2a = contents->GetSiteInstance();
|
| + contents()->TestDidNavigate(pending_rvh_a, params2a);
|
| + SiteInstance* instance2a = contents()->GetSiteInstance();
|
| EXPECT_NE(instance1, instance2a);
|
|
|
| // Navigate second tab to the same site as the first tab
|
| @@ -478,26 +394,28 @@
|
| // Tests that WebContents uses the current URL, not the SiteInstance's site, to
|
| // determine whether a navigation is cross-site.
|
| TEST_F(WebContentsTest, CrossSiteComparesAgainstCurrentPage) {
|
| - contents->transition_cross_site = true;
|
| - TestRenderViewHost* orig_rvh = contents->rvh();
|
| - SiteInstance* instance1 = contents->GetSiteInstance();
|
| + contents()->transition_cross_site = true;
|
| + TestRenderViewHost* orig_rvh = rvh();
|
| + SiteInstance* instance1 = contents()->GetSiteInstance();
|
|
|
| // Navigate to URL.
|
| const GURL url("http://www.google.com");
|
| - contents->controller()->LoadURL(url, GURL(), PageTransition::TYPED);
|
| + controller()->LoadURL(url, GURL(), PageTransition::TYPED);
|
| ViewHostMsg_FrameNavigate_Params params1;
|
| InitNavigateParams(¶ms1, 1, url);
|
| - contents->TestDidNavigate(orig_rvh, params1);
|
| + contents()->TestDidNavigate(orig_rvh, params1);
|
|
|
| // Open a related tab to a second site.
|
| - TestWebContents* contents2 = new TestWebContents(profile.get(), instance1);
|
| + TestWebContents* contents2 = new TestWebContents(profile(), instance1,
|
| + &rvh_factory_);
|
| contents2->transition_cross_site = true;
|
| - contents2->SetupController(profile.get());
|
| + contents2->SetupController(profile());
|
| const GURL url2("http://www.yahoo.com");
|
| contents2->controller()->LoadURL(url2, GURL(), PageTransition::TYPED);
|
| // The first RVH in contents2 isn't live yet, so we shortcut the cross site
|
| // pending.
|
| - TestRenderViewHost* rvh2 = contents2->rvh();
|
| + TestRenderViewHost* rvh2 = static_cast<TestRenderViewHost*>(
|
| + contents2->render_view_host());
|
| EXPECT_FALSE(contents2->cross_navigation_pending());
|
| ViewHostMsg_FrameNavigate_Params params2;
|
| InitNavigateParams(¶ms2, 2, url2);
|
| @@ -510,20 +428,20 @@
|
| // SiteInstances, because we don't intercept WebKit navigations.
|
| ViewHostMsg_FrameNavigate_Params params3;
|
| InitNavigateParams(¶ms3, 2, url2);
|
| - contents->TestDidNavigate(orig_rvh, params3);
|
| - SiteInstance* instance3 = contents->GetSiteInstance();
|
| + contents()->TestDidNavigate(orig_rvh, params3);
|
| + SiteInstance* instance3 = contents()->GetSiteInstance();
|
| EXPECT_EQ(instance1, instance3);
|
| - EXPECT_FALSE(contents->cross_navigation_pending());
|
| + EXPECT_FALSE(contents()->cross_navigation_pending());
|
|
|
| // Navigate to the new site. Doesn't switch SiteInstancees, because we
|
| // compare against the current URL, not the SiteInstance's site.
|
| const GURL url3("http://mail.yahoo.com");
|
| - contents->controller()->LoadURL(url3, GURL(), PageTransition::TYPED);
|
| - EXPECT_FALSE(contents->cross_navigation_pending());
|
| + controller()->LoadURL(url3, GURL(), PageTransition::TYPED);
|
| + EXPECT_FALSE(contents()->cross_navigation_pending());
|
| ViewHostMsg_FrameNavigate_Params params4;
|
| InitNavigateParams(¶ms4, 3, url3);
|
| - contents->TestDidNavigate(orig_rvh, params4);
|
| - SiteInstance* instance4 = contents->GetSiteInstance();
|
| + contents()->TestDidNavigate(orig_rvh, params4);
|
| + SiteInstance* instance4 = contents()->GetSiteInstance();
|
| EXPECT_EQ(instance1, instance4);
|
|
|
| contents2->CloseContents();
|
| @@ -532,31 +450,32 @@
|
| // Test that the onbeforeunload and onunload handlers run when navigating
|
| // across site boundaries.
|
| TEST_F(WebContentsTest, CrossSiteUnloadHandlers) {
|
| - contents->transition_cross_site = true;
|
| - TestRenderViewHost* orig_rvh = contents->rvh();
|
| - SiteInstance* instance1 = contents->GetSiteInstance();
|
| + contents()->transition_cross_site = true;
|
| + TestRenderViewHost* orig_rvh = rvh();
|
| + SiteInstance* instance1 = contents()->GetSiteInstance();
|
|
|
| // Navigate to URL. First URL should use first RenderViewHost.
|
| const GURL url("http://www.google.com");
|
| - contents->controller()->LoadURL(url, GURL(), PageTransition::TYPED);
|
| + controller()->LoadURL(url, GURL(), PageTransition::TYPED);
|
| ViewHostMsg_FrameNavigate_Params params1;
|
| InitNavigateParams(¶ms1, 1, url);
|
| - contents->TestDidNavigate(orig_rvh, params1);
|
| - EXPECT_FALSE(contents->cross_navigation_pending());
|
| - EXPECT_EQ(orig_rvh, contents->render_view_host());
|
| + contents()->TestDidNavigate(orig_rvh, params1);
|
| + EXPECT_FALSE(contents()->cross_navigation_pending());
|
| + EXPECT_EQ(orig_rvh, contents()->render_view_host());
|
|
|
| // Navigate to new site, but simulate an onbeforeunload denial.
|
| const GURL url2("http://www.yahoo.com");
|
| - contents->controller()->LoadURL(url2, GURL(), PageTransition::TYPED);
|
| + controller()->LoadURL(url2, GURL(), PageTransition::TYPED);
|
| orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, false));
|
| - EXPECT_FALSE(contents->cross_navigation_pending());
|
| - EXPECT_EQ(orig_rvh, contents->render_view_host());
|
| + EXPECT_FALSE(contents()->cross_navigation_pending());
|
| + EXPECT_EQ(orig_rvh, contents()->render_view_host());
|
|
|
| // Navigate again, but simulate an onbeforeunload approval.
|
| - contents->controller()->LoadURL(url2, GURL(), PageTransition::TYPED);
|
| + controller()->LoadURL(url2, GURL(), PageTransition::TYPED);
|
| orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true));
|
| - EXPECT_TRUE(contents->cross_navigation_pending());
|
| - TestRenderViewHost* pending_rvh = contents->pending_rvh();
|
| + EXPECT_TRUE(contents()->cross_navigation_pending());
|
| + TestRenderViewHost* pending_rvh = static_cast<TestRenderViewHost*>(
|
| + contents()->pending_rvh());
|
|
|
| // We won't hear DidNavigate until the onunload handler has finished running.
|
| // (No way to simulate that here, but it involves a call from RDH to
|
| @@ -565,74 +484,74 @@
|
| // DidNavigate from the pending page
|
| ViewHostMsg_FrameNavigate_Params params2;
|
| InitNavigateParams(¶ms2, 1, url2);
|
| - contents->TestDidNavigate(pending_rvh, params2);
|
| - SiteInstance* instance2 = contents->GetSiteInstance();
|
| - EXPECT_FALSE(contents->cross_navigation_pending());
|
| - EXPECT_EQ(pending_rvh, contents->render_view_host());
|
| + contents()->TestDidNavigate(pending_rvh, params2);
|
| + SiteInstance* instance2 = contents()->GetSiteInstance();
|
| + EXPECT_FALSE(contents()->cross_navigation_pending());
|
| + EXPECT_EQ(pending_rvh, rvh());
|
| EXPECT_NE(instance1, instance2);
|
| - EXPECT_TRUE(contents->pending_rvh() == NULL);
|
| + EXPECT_TRUE(contents()->pending_rvh() == NULL);
|
| }
|
|
|
| // Test that NavigationEntries have the correct content state after going
|
| // forward and back. Prevents regression for bug 1116137.
|
| TEST_F(WebContentsTest, NavigationEntryContentState) {
|
| - TestRenderViewHost* orig_rvh = contents->rvh();
|
| + TestRenderViewHost* orig_rvh = rvh();
|
|
|
| // Navigate to URL. There should be no committed entry yet.
|
| const GURL url("http://www.google.com");
|
| - contents->controller()->LoadURL(url, GURL(), PageTransition::TYPED);
|
| - NavigationEntry* entry = contents->controller()->GetLastCommittedEntry();
|
| + controller()->LoadURL(url, GURL(), PageTransition::TYPED);
|
| + NavigationEntry* entry = controller()->GetLastCommittedEntry();
|
| EXPECT_TRUE(entry == NULL);
|
|
|
| // Committed entry should have content state after DidNavigate.
|
| ViewHostMsg_FrameNavigate_Params params1;
|
| InitNavigateParams(¶ms1, 1, url);
|
| - contents->TestDidNavigate(orig_rvh, params1);
|
| - entry = contents->controller()->GetLastCommittedEntry();
|
| + contents()->TestDidNavigate(orig_rvh, params1);
|
| + entry = controller()->GetLastCommittedEntry();
|
| EXPECT_FALSE(entry->content_state().empty());
|
|
|
| // Navigate to same site.
|
| const GURL url2("http://images.google.com");
|
| - contents->controller()->LoadURL(url2, GURL(), PageTransition::TYPED);
|
| - entry = contents->controller()->GetLastCommittedEntry();
|
| + controller()->LoadURL(url2, GURL(), PageTransition::TYPED);
|
| + entry = controller()->GetLastCommittedEntry();
|
| EXPECT_FALSE(entry->content_state().empty());
|
|
|
| // Committed entry should have content state after DidNavigate.
|
| ViewHostMsg_FrameNavigate_Params params2;
|
| InitNavigateParams(¶ms2, 2, url2);
|
| - contents->TestDidNavigate(orig_rvh, params2);
|
| - entry = contents->controller()->GetLastCommittedEntry();
|
| + contents()->TestDidNavigate(orig_rvh, params2);
|
| + entry = controller()->GetLastCommittedEntry();
|
| EXPECT_FALSE(entry->content_state().empty());
|
|
|
| // Now go back. Committed entry should still have content state.
|
| - contents->controller()->GoBack();
|
| - contents->TestDidNavigate(orig_rvh, params1);
|
| - entry = contents->controller()->GetLastCommittedEntry();
|
| + controller()->GoBack();
|
| + contents()->TestDidNavigate(orig_rvh, params1);
|
| + entry = controller()->GetLastCommittedEntry();
|
| EXPECT_FALSE(entry->content_state().empty());
|
| }
|
|
|
| // Test that NavigationEntries have the correct content state after opening
|
| // a new window to about:blank. Prevents regression for bug 1116137.
|
| TEST_F(WebContentsTest, NavigationEntryContentStateNewWindow) {
|
| - TestRenderViewHost* orig_rvh = contents->rvh();
|
| + TestRenderViewHost* orig_rvh = rvh();
|
|
|
| // When opening a new window, it is navigated to about:blank internally.
|
| // Currently, this results in two DidNavigate events.
|
| const GURL url("about:blank");
|
| ViewHostMsg_FrameNavigate_Params params1;
|
| InitNavigateParams(¶ms1, 1, url);
|
| - contents->TestDidNavigate(orig_rvh, params1);
|
| - contents->TestDidNavigate(orig_rvh, params1);
|
| + contents()->TestDidNavigate(orig_rvh, params1);
|
| + contents()->TestDidNavigate(orig_rvh, params1);
|
|
|
| // Should have a content state here.
|
| - NavigationEntry* entry = contents->controller()->GetLastCommittedEntry();
|
| + NavigationEntry* entry = controller()->GetLastCommittedEntry();
|
| EXPECT_FALSE(entry->content_state().empty());
|
| }
|
|
|
| // Tests to see that webkit preferences are properly loaded and copied over
|
| // to a WebPreferences object.
|
| TEST_F(WebContentsTest, WebKitPrefs) {
|
| - WebPreferences webkit_prefs = contents->TestGetWebkitPrefs();
|
| + WebPreferences webkit_prefs = contents()->TestGetWebkitPrefs();
|
|
|
| // These values have been overridden by the profile preferences.
|
| EXPECT_EQ(L"UTF-8", webkit_prefs.default_encoding);
|
| @@ -656,12 +575,12 @@
|
| ShowInterstitialFromBrowserWithNewNavigationDontProceed) {
|
| // Navigate to a page.
|
| GURL url1("http://www.google.com");
|
| - Navigate(1, url1);
|
| - EXPECT_EQ(1, contents->controller()->GetEntryCount());
|
| + rvh()->SendNavigate(1, url1);
|
| + EXPECT_EQ(1, controller()->GetEntryCount());
|
|
|
| // Initiate a browser navigation that will trigger the interstitial
|
| - contents->controller()->LoadURL(GURL("http://www.evil.com"), GURL(),
|
| - PageTransition::TYPED);
|
| + controller()->LoadURL(GURL("http://www.evil.com"), GURL(),
|
| + PageTransition::TYPED);
|
|
|
| // Show an interstitial.
|
| TestInterstitialPage::InterstitialState state =
|
| @@ -669,19 +588,19 @@
|
| bool deleted = false;
|
| GURL url2("http://interstitial");
|
| TestInterstitialPage* interstitial =
|
| - new TestInterstitialPage(contents, true, url2, &state, &deleted);
|
| + new TestInterstitialPage(contents(), true, url2, &state, &deleted);
|
| TestInterstitialPageStateGuard state_guard(interstitial);
|
| interstitial->Show();
|
| // The interstitial should not show until its navigation has committed.
|
| EXPECT_FALSE(interstitial->is_showing());
|
| - EXPECT_FALSE(contents->showing_interstitial_page());
|
| - EXPECT_TRUE(contents->interstitial_page() == NULL);
|
| + EXPECT_FALSE(contents()->showing_interstitial_page());
|
| + EXPECT_TRUE(contents()->interstitial_page() == NULL);
|
| // Let's commit the interstitial navigation.
|
| interstitial->TestDidNavigate(1, url2);
|
| EXPECT_TRUE(interstitial->is_showing());
|
| - EXPECT_TRUE(contents->showing_interstitial_page());
|
| - EXPECT_TRUE(contents->interstitial_page() == interstitial);
|
| - NavigationEntry* entry = contents->controller()->GetActiveEntry();
|
| + EXPECT_TRUE(contents()->showing_interstitial_page());
|
| + EXPECT_TRUE(contents()->interstitial_page() == interstitial);
|
| + NavigationEntry* entry = controller()->GetActiveEntry();
|
| ASSERT_TRUE(entry != NULL);
|
| EXPECT_TRUE(entry->url() == url2);
|
|
|
| @@ -689,12 +608,12 @@
|
| interstitial->DontProceed();
|
| EXPECT_TRUE(deleted);
|
| EXPECT_EQ(TestInterstitialPage::CANCELED, state);
|
| - EXPECT_FALSE(contents->showing_interstitial_page());
|
| - EXPECT_TRUE(contents->interstitial_page() == NULL);
|
| - entry = contents->controller()->GetActiveEntry();
|
| + EXPECT_FALSE(contents()->showing_interstitial_page());
|
| + EXPECT_TRUE(contents()->interstitial_page() == NULL);
|
| + entry = controller()->GetActiveEntry();
|
| ASSERT_TRUE(entry != NULL);
|
| EXPECT_TRUE(entry->url() == url1);
|
| - EXPECT_EQ(1, contents->controller()->GetEntryCount());
|
| + EXPECT_EQ(1, controller()->GetEntryCount());
|
| }
|
|
|
| // Test navigating to a page (with the navigation initiated from the renderer,
|
| @@ -704,8 +623,8 @@
|
| ShowInterstitiaFromRendererlWithNewNavigationDontProceed) {
|
| // Navigate to a page.
|
| GURL url1("http://www.google.com");
|
| - Navigate(1, url1);
|
| - EXPECT_EQ(1, contents->controller()->GetEntryCount());
|
| + rvh()->SendNavigate(1, url1);
|
| + EXPECT_EQ(1, controller()->GetEntryCount());
|
|
|
| // Show an interstitial (no pending entry, the interstitial would have been
|
| // triggered by clicking on a link).
|
| @@ -714,19 +633,19 @@
|
| bool deleted = false;
|
| GURL url2("http://interstitial");
|
| TestInterstitialPage* interstitial =
|
| - new TestInterstitialPage(contents, true, url2, &state, &deleted);
|
| + new TestInterstitialPage(contents(), true, url2, &state, &deleted);
|
| TestInterstitialPageStateGuard state_guard(interstitial);
|
| interstitial->Show();
|
| // The interstitial should not show until its navigation has committed.
|
| EXPECT_FALSE(interstitial->is_showing());
|
| - EXPECT_FALSE(contents->showing_interstitial_page());
|
| - EXPECT_TRUE(contents->interstitial_page() == NULL);
|
| + EXPECT_FALSE(contents()->showing_interstitial_page());
|
| + EXPECT_TRUE(contents()->interstitial_page() == NULL);
|
| // Let's commit the interstitial navigation.
|
| interstitial->TestDidNavigate(1, url2);
|
| EXPECT_TRUE(interstitial->is_showing());
|
| - EXPECT_TRUE(contents->showing_interstitial_page());
|
| - EXPECT_TRUE(contents->interstitial_page() == interstitial);
|
| - NavigationEntry* entry = contents->controller()->GetActiveEntry();
|
| + EXPECT_TRUE(contents()->showing_interstitial_page());
|
| + EXPECT_TRUE(contents()->interstitial_page() == interstitial);
|
| + NavigationEntry* entry = controller()->GetActiveEntry();
|
| ASSERT_TRUE(entry != NULL);
|
| EXPECT_TRUE(entry->url() == url2);
|
|
|
| @@ -734,12 +653,12 @@
|
| interstitial->DontProceed();
|
| EXPECT_TRUE(deleted);
|
| EXPECT_EQ(TestInterstitialPage::CANCELED, state);
|
| - EXPECT_FALSE(contents->showing_interstitial_page());
|
| - EXPECT_TRUE(contents->interstitial_page() == NULL);
|
| - entry = contents->controller()->GetActiveEntry();
|
| + EXPECT_FALSE(contents()->showing_interstitial_page());
|
| + EXPECT_TRUE(contents()->interstitial_page() == NULL);
|
| + entry = controller()->GetActiveEntry();
|
| ASSERT_TRUE(entry != NULL);
|
| EXPECT_TRUE(entry->url() == url1);
|
| - EXPECT_EQ(1, contents->controller()->GetEntryCount());
|
| + EXPECT_EQ(1, controller()->GetEntryCount());
|
| }
|
|
|
| // Test navigating to a page that shows an interstitial without creating a new
|
| @@ -748,8 +667,8 @@
|
| TEST_F(WebContentsTest, ShowInterstitialNoNewNavigationDontProceed) {
|
| // Navigate to a page.
|
| GURL url1("http://www.google.com");
|
| - Navigate(1, url1);
|
| - EXPECT_EQ(1, contents->controller()->GetEntryCount());
|
| + rvh()->SendNavigate(1, url1);
|
| + EXPECT_EQ(1, controller()->GetEntryCount());
|
|
|
| // Show an interstitial.
|
| TestInterstitialPage::InterstitialState state =
|
| @@ -757,19 +676,19 @@
|
| bool deleted = false;
|
| GURL url2("http://interstitial");
|
| TestInterstitialPage* interstitial =
|
| - new TestInterstitialPage(contents, false, url2, &state, &deleted);
|
| + new TestInterstitialPage(contents(), false, url2, &state, &deleted);
|
| TestInterstitialPageStateGuard state_guard(interstitial);
|
| interstitial->Show();
|
| // The interstitial should not show until its navigation has committed.
|
| EXPECT_FALSE(interstitial->is_showing());
|
| - EXPECT_FALSE(contents->showing_interstitial_page());
|
| - EXPECT_TRUE(contents->interstitial_page() == NULL);
|
| + EXPECT_FALSE(contents()->showing_interstitial_page());
|
| + EXPECT_TRUE(contents()->interstitial_page() == NULL);
|
| // Let's commit the interstitial navigation.
|
| interstitial->TestDidNavigate(1, url2);
|
| EXPECT_TRUE(interstitial->is_showing());
|
| - EXPECT_TRUE(contents->showing_interstitial_page());
|
| - EXPECT_TRUE(contents->interstitial_page() == interstitial);
|
| - NavigationEntry* entry = contents->controller()->GetActiveEntry();
|
| + EXPECT_TRUE(contents()->showing_interstitial_page());
|
| + EXPECT_TRUE(contents()->interstitial_page() == interstitial);
|
| + NavigationEntry* entry = controller()->GetActiveEntry();
|
| ASSERT_TRUE(entry != NULL);
|
| // The URL specified to the interstitial should have been ignored.
|
| EXPECT_TRUE(entry->url() == url1);
|
| @@ -778,12 +697,12 @@
|
| interstitial->DontProceed();
|
| EXPECT_TRUE(deleted);
|
| EXPECT_EQ(TestInterstitialPage::CANCELED, state);
|
| - EXPECT_FALSE(contents->showing_interstitial_page());
|
| - EXPECT_TRUE(contents->interstitial_page() == NULL);
|
| - entry = contents->controller()->GetActiveEntry();
|
| + EXPECT_FALSE(contents()->showing_interstitial_page());
|
| + EXPECT_TRUE(contents()->interstitial_page() == NULL);
|
| + entry = controller()->GetActiveEntry();
|
| ASSERT_TRUE(entry != NULL);
|
| EXPECT_TRUE(entry->url() == url1);
|
| - EXPECT_EQ(1, contents->controller()->GetEntryCount());
|
| + EXPECT_EQ(1, controller()->GetEntryCount());
|
| }
|
|
|
| // Test navigating to a page (with the navigation initiated from the browser,
|
| @@ -793,12 +712,12 @@
|
| ShowInterstitialFromBrowserNewNavigationProceed) {
|
| // Navigate to a page.
|
| GURL url1("http://www.google.com");
|
| - Navigate(1, url1);
|
| - EXPECT_EQ(1, contents->controller()->GetEntryCount());
|
| + rvh()->SendNavigate(1, url1);
|
| + EXPECT_EQ(1, controller()->GetEntryCount());
|
|
|
| // Initiate a browser navigation that will trigger the interstitial
|
| - contents->controller()->LoadURL(GURL("http://www.evil.com"), GURL(),
|
| - PageTransition::TYPED);
|
| + controller()->LoadURL(GURL("http://www.evil.com"), GURL(),
|
| + PageTransition::TYPED);
|
|
|
| // Show an interstitial.
|
| TestInterstitialPage::InterstitialState state =
|
| @@ -806,19 +725,19 @@
|
| bool deleted = false;
|
| GURL url2("http://interstitial");
|
| TestInterstitialPage* interstitial =
|
| - new TestInterstitialPage(contents, true, url2, &state, &deleted);
|
| + new TestInterstitialPage(contents(), true, url2, &state, &deleted);
|
| TestInterstitialPageStateGuard state_guard(interstitial);
|
| interstitial->Show();
|
| // The interstitial should not show until its navigation has committed.
|
| EXPECT_FALSE(interstitial->is_showing());
|
| - EXPECT_FALSE(contents->showing_interstitial_page());
|
| - EXPECT_TRUE(contents->interstitial_page() == NULL);
|
| + EXPECT_FALSE(contents()->showing_interstitial_page());
|
| + EXPECT_TRUE(contents()->interstitial_page() == NULL);
|
| // Let's commit the interstitial navigation.
|
| interstitial->TestDidNavigate(1, url2);
|
| EXPECT_TRUE(interstitial->is_showing());
|
| - EXPECT_TRUE(contents->showing_interstitial_page());
|
| - EXPECT_TRUE(contents->interstitial_page() == interstitial);
|
| - NavigationEntry* entry = contents->controller()->GetActiveEntry();
|
| + EXPECT_TRUE(contents()->showing_interstitial_page());
|
| + EXPECT_TRUE(contents()->interstitial_page() == interstitial);
|
| + NavigationEntry* entry = controller()->GetActiveEntry();
|
| ASSERT_TRUE(entry != NULL);
|
| EXPECT_TRUE(entry->url() == url2);
|
|
|
| @@ -827,22 +746,22 @@
|
| // The interstitial should show until the new navigation commits.
|
| ASSERT_FALSE(deleted);
|
| EXPECT_EQ(TestInterstitialPage::OKED, state);
|
| - EXPECT_TRUE(contents->showing_interstitial_page());
|
| - EXPECT_TRUE(contents->interstitial_page() == interstitial);
|
| + EXPECT_TRUE(contents()->showing_interstitial_page());
|
| + EXPECT_TRUE(contents()->interstitial_page() == interstitial);
|
|
|
| // Simulate the navigation to the page, that's when the interstitial gets
|
| // hidden.
|
| GURL url3("http://www.thepage.com");
|
| - Navigate(2, url3);
|
| + rvh()->SendNavigate(2, url3);
|
|
|
| EXPECT_TRUE(deleted);
|
| - EXPECT_FALSE(contents->showing_interstitial_page());
|
| - EXPECT_TRUE(contents->interstitial_page() == NULL);
|
| - entry = contents->controller()->GetActiveEntry();
|
| + EXPECT_FALSE(contents()->showing_interstitial_page());
|
| + EXPECT_TRUE(contents()->interstitial_page() == NULL);
|
| + entry = controller()->GetActiveEntry();
|
| ASSERT_TRUE(entry != NULL);
|
| EXPECT_TRUE(entry->url() == url3);
|
|
|
| - EXPECT_EQ(2, contents->controller()->GetEntryCount());
|
| + EXPECT_EQ(2, controller()->GetEntryCount());
|
| }
|
|
|
| // Test navigating to a page (with the navigation initiated from the renderer,
|
| @@ -852,8 +771,8 @@
|
| ShowInterstitialFromRendererNewNavigationProceed) {
|
| // Navigate to a page.
|
| GURL url1("http://www.google.com");
|
| - Navigate(1, url1);
|
| - EXPECT_EQ(1, contents->controller()->GetEntryCount());
|
| + rvh()->SendNavigate(1, url1);
|
| + EXPECT_EQ(1, controller()->GetEntryCount());
|
|
|
| // Show an interstitial.
|
| TestInterstitialPage::InterstitialState state =
|
| @@ -861,19 +780,19 @@
|
| bool deleted = false;
|
| GURL url2("http://interstitial");
|
| TestInterstitialPage* interstitial =
|
| - new TestInterstitialPage(contents, true, url2, &state, &deleted);
|
| + new TestInterstitialPage(contents(), true, url2, &state, &deleted);
|
| TestInterstitialPageStateGuard state_guard(interstitial);
|
| interstitial->Show();
|
| // The interstitial should not show until its navigation has committed.
|
| EXPECT_FALSE(interstitial->is_showing());
|
| - EXPECT_FALSE(contents->showing_interstitial_page());
|
| - EXPECT_TRUE(contents->interstitial_page() == NULL);
|
| + EXPECT_FALSE(contents()->showing_interstitial_page());
|
| + EXPECT_TRUE(contents()->interstitial_page() == NULL);
|
| // Let's commit the interstitial navigation.
|
| interstitial->TestDidNavigate(1, url2);
|
| EXPECT_TRUE(interstitial->is_showing());
|
| - EXPECT_TRUE(contents->showing_interstitial_page());
|
| - EXPECT_TRUE(contents->interstitial_page() == interstitial);
|
| - NavigationEntry* entry = contents->controller()->GetActiveEntry();
|
| + EXPECT_TRUE(contents()->showing_interstitial_page());
|
| + EXPECT_TRUE(contents()->interstitial_page() == interstitial);
|
| + NavigationEntry* entry = controller()->GetActiveEntry();
|
| ASSERT_TRUE(entry != NULL);
|
| EXPECT_TRUE(entry->url() == url2);
|
|
|
| @@ -882,22 +801,22 @@
|
| // The interstitial should show until the new navigation commits.
|
| ASSERT_FALSE(deleted);
|
| EXPECT_EQ(TestInterstitialPage::OKED, state);
|
| - EXPECT_TRUE(contents->showing_interstitial_page());
|
| - EXPECT_TRUE(contents->interstitial_page() == interstitial);
|
| + EXPECT_TRUE(contents()->showing_interstitial_page());
|
| + EXPECT_TRUE(contents()->interstitial_page() == interstitial);
|
|
|
| // Simulate the navigation to the page, that's when the interstitial gets
|
| // hidden.
|
| GURL url3("http://www.thepage.com");
|
| - Navigate(2, url3);
|
| + rvh()->SendNavigate(2, url3);
|
|
|
| EXPECT_TRUE(deleted);
|
| - EXPECT_FALSE(contents->showing_interstitial_page());
|
| - EXPECT_TRUE(contents->interstitial_page() == NULL);
|
| - entry = contents->controller()->GetActiveEntry();
|
| + EXPECT_FALSE(contents()->showing_interstitial_page());
|
| + EXPECT_TRUE(contents()->interstitial_page() == NULL);
|
| + entry = controller()->GetActiveEntry();
|
| ASSERT_TRUE(entry != NULL);
|
| EXPECT_TRUE(entry->url() == url3);
|
|
|
| - EXPECT_EQ(2, contents->controller()->GetEntryCount());
|
| + EXPECT_EQ(2, controller()->GetEntryCount());
|
| }
|
|
|
| // Test navigating to a page that shows an interstitial without creating a new
|
| @@ -906,8 +825,8 @@
|
| TEST_F(WebContentsTest, ShowInterstitialNoNewNavigationProceed) {
|
| // Navigate to a page so we have a navigation entry in the controller.
|
| GURL url1("http://www.google.com");
|
| - Navigate(1, url1);
|
| - EXPECT_EQ(1, contents->controller()->GetEntryCount());
|
| + rvh()->SendNavigate(1, url1);
|
| + EXPECT_EQ(1, controller()->GetEntryCount());
|
|
|
| // Show an interstitial.
|
| TestInterstitialPage::InterstitialState state =
|
| @@ -915,19 +834,19 @@
|
| bool deleted = false;
|
| GURL url2("http://interstitial");
|
| TestInterstitialPage* interstitial =
|
| - new TestInterstitialPage(contents, false, url2, &state, &deleted);
|
| + new TestInterstitialPage(contents(), false, url2, &state, &deleted);
|
| TestInterstitialPageStateGuard state_guard(interstitial);
|
| interstitial->Show();
|
| // The interstitial should not show until its navigation has committed.
|
| EXPECT_FALSE(interstitial->is_showing());
|
| - EXPECT_FALSE(contents->showing_interstitial_page());
|
| - EXPECT_TRUE(contents->interstitial_page() == NULL);
|
| + EXPECT_FALSE(contents()->showing_interstitial_page());
|
| + EXPECT_TRUE(contents()->interstitial_page() == NULL);
|
| // Let's commit the interstitial navigation.
|
| interstitial->TestDidNavigate(1, url2);
|
| EXPECT_TRUE(interstitial->is_showing());
|
| - EXPECT_TRUE(contents->showing_interstitial_page());
|
| - EXPECT_TRUE(contents->interstitial_page() == interstitial);
|
| - NavigationEntry* entry = contents->controller()->GetActiveEntry();
|
| + EXPECT_TRUE(contents()->showing_interstitial_page());
|
| + EXPECT_TRUE(contents()->interstitial_page() == interstitial);
|
| + NavigationEntry* entry = controller()->GetActiveEntry();
|
| ASSERT_TRUE(entry != NULL);
|
| // The URL specified to the interstitial should have been ignored.
|
| EXPECT_TRUE(entry->url() == url1);
|
| @@ -938,13 +857,13 @@
|
| // away and shows the original page.
|
| EXPECT_TRUE(deleted);
|
| EXPECT_EQ(TestInterstitialPage::OKED, state);
|
| - EXPECT_FALSE(contents->showing_interstitial_page());
|
| - EXPECT_TRUE(contents->interstitial_page() == NULL);
|
| - entry = contents->controller()->GetActiveEntry();
|
| + EXPECT_FALSE(contents()->showing_interstitial_page());
|
| + EXPECT_TRUE(contents()->interstitial_page() == NULL);
|
| + entry = controller()->GetActiveEntry();
|
| ASSERT_TRUE(entry != NULL);
|
| EXPECT_TRUE(entry->url() == url1);
|
|
|
| - EXPECT_EQ(1, contents->controller()->GetEntryCount());
|
| + EXPECT_EQ(1, controller()->GetEntryCount());
|
| }
|
|
|
| // Test navigating to a page that shows an interstitial, then navigating away.
|
| @@ -955,19 +874,19 @@
|
| bool deleted = false;
|
| GURL url("http://interstitial");
|
| TestInterstitialPage* interstitial =
|
| - new TestInterstitialPage(contents, true, url, &state, &deleted);
|
| + new TestInterstitialPage(contents(), true, url, &state, &deleted);
|
| TestInterstitialPageStateGuard state_guard(interstitial);
|
| interstitial->Show();
|
| interstitial->TestDidNavigate(1, url);
|
|
|
| // While interstitial showing, navigate to a new URL.
|
| const GURL url2("http://www.yahoo.com");
|
| - Navigate(1, url2);
|
| + rvh()->SendNavigate(1, url2);
|
|
|
| EXPECT_TRUE(deleted);
|
| EXPECT_EQ(TestInterstitialPage::CANCELED, state);
|
| }
|
| -
|
| +/* FIXME(brettw)
|
| // Test navigating to a page that shows an interstitial, then close the tab.
|
| TEST_F(WebContentsTest, ShowInterstitialThenCloseTab) {
|
| // Show interstitial.
|
| @@ -976,25 +895,25 @@
|
| bool deleted = false;
|
| GURL url("http://interstitial");
|
| TestInterstitialPage* interstitial =
|
| - new TestInterstitialPage(contents, true, url, &state, &deleted);
|
| + new TestInterstitialPage(contents(), true, url, &state, &deleted);
|
| TestInterstitialPageStateGuard state_guard(interstitial);
|
| interstitial->Show();
|
| interstitial->TestDidNavigate(1, url);
|
|
|
| // Now close the tab.
|
| - contents->CloseContents();
|
| + contents()->CloseContents();
|
| contents = NULL; // So we don't detroy it again on TearDown.
|
| EXPECT_TRUE(deleted);
|
| EXPECT_EQ(TestInterstitialPage::CANCELED, state);
|
| }
|
| -
|
| +*/
|
| // Test that after Proceed is called and an interstitial is still shown, no more
|
| // commands get executed.
|
| TEST_F(WebContentsTest, ShowInterstitialProceedMultipleCommands) {
|
| // Navigate to a page so we have a navigation entry in the controller.
|
| GURL url1("http://www.google.com");
|
| - Navigate(1, url1);
|
| - EXPECT_EQ(1, contents->controller()->GetEntryCount());
|
| + rvh()->SendNavigate(1, url1);
|
| + EXPECT_EQ(1, controller()->GetEntryCount());
|
|
|
| // Show an interstitial.
|
| TestInterstitialPage::InterstitialState state =
|
| @@ -1002,7 +921,7 @@
|
| bool deleted = false;
|
| GURL url2("http://interstitial");
|
| TestInterstitialPage* interstitial =
|
| - new TestInterstitialPage(contents, true, url2, &state, &deleted);
|
| + new TestInterstitialPage(contents(), true, url2, &state, &deleted);
|
| TestInterstitialPageStateGuard state_guard(interstitial);
|
| interstitial->Show();
|
| interstitial->TestDidNavigate(1, url2);
|
| @@ -1027,8 +946,8 @@
|
| TEST_F(WebContentsTest, ShowInterstitialOnInterstitial) {
|
| // Navigate to a page so we have a navigation entry in the controller.
|
| GURL start_url("http://www.google.com");
|
| - Navigate(1, start_url);
|
| - EXPECT_EQ(1, contents->controller()->GetEntryCount());
|
| + rvh()->SendNavigate(1, start_url);
|
| + EXPECT_EQ(1, controller()->GetEntryCount());
|
|
|
| // Show an interstitial.
|
| TestInterstitialPage::InterstitialState state1 =
|
| @@ -1036,7 +955,7 @@
|
| bool deleted1 = false;
|
| GURL url1("http://interstitial1");
|
| TestInterstitialPage* interstitial1 =
|
| - new TestInterstitialPage(contents, true, url1, &state1, &deleted1);
|
| + new TestInterstitialPage(contents(), true, url1, &state1, &deleted1);
|
| TestInterstitialPageStateGuard state_guard1(interstitial1);
|
| interstitial1->Show();
|
| interstitial1->TestDidNavigate(1, url1);
|
| @@ -1047,7 +966,7 @@
|
| bool deleted2 = false;
|
| GURL url2("http://interstitial2");
|
| TestInterstitialPage* interstitial2 =
|
| - new TestInterstitialPage(contents, true, url2, &state2, &deleted2);
|
| + new TestInterstitialPage(contents(), true, url2, &state2, &deleted2);
|
| TestInterstitialPageStateGuard state_guard2(interstitial2);
|
| interstitial2->Show();
|
| interstitial2->TestDidNavigate(1, url2);
|
| @@ -1061,15 +980,15 @@
|
| EXPECT_EQ(TestInterstitialPage::UNDECIDED, state2);
|
| interstitial2->Proceed();
|
| GURL landing_url("http://www.thepage.com");
|
| - Navigate(2, landing_url);
|
| + rvh()->SendNavigate(2, landing_url);
|
|
|
| EXPECT_TRUE(deleted2);
|
| - EXPECT_FALSE(contents->showing_interstitial_page());
|
| - EXPECT_TRUE(contents->interstitial_page() == NULL);
|
| - NavigationEntry* entry = contents->controller()->GetActiveEntry();
|
| + EXPECT_FALSE(contents()->showing_interstitial_page());
|
| + EXPECT_TRUE(contents()->interstitial_page() == NULL);
|
| + NavigationEntry* entry = controller()->GetActiveEntry();
|
| ASSERT_TRUE(entry != NULL);
|
| EXPECT_TRUE(entry->url() == landing_url);
|
| - EXPECT_EQ(2, contents->controller()->GetEntryCount());
|
| + EXPECT_EQ(2, controller()->GetEntryCount());
|
| }
|
|
|
| // Test that navigating away from an interstitial while it's loading cause it
|
| @@ -1081,7 +1000,7 @@
|
| bool deleted = false;
|
| GURL interstitial_url("http://interstitial");
|
| TestInterstitialPage* interstitial =
|
| - new TestInterstitialPage(contents, true, interstitial_url,
|
| + new TestInterstitialPage(contents(), true, interstitial_url,
|
| &state, &deleted);
|
| TestInterstitialPageStateGuard state_guard(interstitial);
|
| interstitial->Show();
|
| @@ -1089,7 +1008,7 @@
|
| // Let's simulate a navigation initiated from the browser before the
|
| // interstitial finishes loading.
|
| const GURL url("http://www.google.com");
|
| - contents->controller()->LoadURL(url, GURL(), PageTransition::TYPED);
|
| + controller()->LoadURL(url, GURL(), PageTransition::TYPED);
|
| ASSERT_FALSE(deleted);
|
| EXPECT_FALSE(interstitial->is_showing());
|
|
|
| @@ -1109,7 +1028,7 @@
|
| bool deleted = false;
|
| GURL url("http://interstitial");
|
| TestInterstitialPage* interstitial =
|
| - new TestInterstitialPage(contents, true, url, &state, &deleted);
|
| + new TestInterstitialPage(contents(), true, url, &state, &deleted);
|
| TestInterstitialPageStateGuard state_guard(interstitial);
|
| interstitial->Show();
|
| // Simulate a renderer crash before the interstitial is shown.
|
| @@ -1120,7 +1039,7 @@
|
|
|
| // Now try again but this time crash the intersitial after it was shown.
|
| interstitial =
|
| - new TestInterstitialPage(contents, true, url, &state, &deleted);
|
| + new TestInterstitialPage(contents(), true, url, &state, &deleted);
|
| interstitial->Show();
|
| interstitial->TestDidNavigate(1, url);
|
| // Simulate a renderer crash.
|
|
|