| Index: chrome/browser/ui/webui/web_ui_unittest.cc
|
| ===================================================================
|
| --- chrome/browser/ui/webui/web_ui_unittest.cc (revision 193436)
|
| +++ chrome/browser/ui/webui/web_ui_unittest.cc (working copy)
|
| @@ -1,240 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/favicon/favicon_tab_helper.h"
|
| -#include "chrome/common/url_constants.h"
|
| -#include "chrome/test/base/chrome_render_view_host_test_harness.h"
|
| -#include "chrome/test/base/testing_profile.h"
|
| -#include "content/public/browser/navigation_controller.h"
|
| -#include "content/public/browser/site_instance.h"
|
| -#include "content/public/browser/web_contents.h"
|
| -#include "content/public/browser/web_contents_delegate.h"
|
| -#include "content/public/common/referrer.h"
|
| -#include "content/public/test/test_browser_thread.h"
|
| -#include "content/public/test/test_renderer_host.h"
|
| -#include "content/public/test/web_contents_tester.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -using content::BrowserThread;
|
| -using content::NavigationController;
|
| -using content::RenderViewHost;
|
| -using content::RenderViewHostTester;
|
| -using content::SiteInstance;
|
| -using content::WebContents;
|
| -using content::WebContentsTester;
|
| -
|
| -class WebUITest : public ChromeRenderViewHostTestHarness {
|
| - public:
|
| - WebUITest() : ui_thread_(BrowserThread::UI, MessageLoop::current()) {}
|
| -
|
| - // Tests navigating with a Web UI from a fresh (nothing pending or committed)
|
| - // state, through pending, committed, then another navigation. The first page
|
| - // ID that we should use is passed as a parameter. We'll use the next two
|
| - // values. This must be increasing for the life of the tests.
|
| - static void DoNavigationTest(WebContents* web_contents, int page_id) {
|
| - NavigationController* controller = &web_contents->GetController();
|
| - FaviconTabHelper* favicon_tab_helper =
|
| - FaviconTabHelper::FromWebContents(web_contents);
|
| -
|
| - // Start a pending load.
|
| - GURL new_tab_url(chrome::kChromeUINewTabURL);
|
| - controller->LoadURL(new_tab_url, content::Referrer(),
|
| - content::PAGE_TRANSITION_LINK,
|
| - std::string());
|
| -
|
| - // The navigation entry should be pending with no committed entry.
|
| - ASSERT_TRUE(controller->GetPendingEntry());
|
| - ASSERT_FALSE(controller->GetLastCommittedEntry());
|
| -
|
| - // Check the things the pending Web UI should have set.
|
| - EXPECT_FALSE(favicon_tab_helper->ShouldDisplayFavicon());
|
| - EXPECT_TRUE(web_contents->FocusLocationBarByDefault());
|
| -
|
| - // Now commit the load.
|
| - RenderViewHostTester::For(
|
| - web_contents->GetRenderViewHost())->SendNavigate(page_id, new_tab_url);
|
| -
|
| - // The same flags should be set as before now that the load has committed.
|
| - EXPECT_FALSE(favicon_tab_helper->ShouldDisplayFavicon());
|
| - EXPECT_TRUE(web_contents->FocusLocationBarByDefault());
|
| -
|
| - // Start a pending navigation to a regular page.
|
| - GURL next_url("http://google.com/");
|
| - controller->LoadURL(next_url, content::Referrer(),
|
| - content::PAGE_TRANSITION_LINK,
|
| - std::string());
|
| -
|
| - // Check the flags. Some should reflect the new page (URL, title), some
|
| - // should reflect the old one (bookmark bar) until it has committed.
|
| - EXPECT_TRUE(favicon_tab_helper->ShouldDisplayFavicon());
|
| - EXPECT_FALSE(web_contents->FocusLocationBarByDefault());
|
| -
|
| - // Commit the regular page load. Note that we must send it to the "pending"
|
| - // RenderViewHost if there is one, since this transition will also cause a
|
| - // process transition, and our RVH pointer will be the "committed" one.
|
| - // In the second call to this function from WebUIToStandard, it won't
|
| - // actually be pending, which is the point of this test.
|
| - RenderViewHost* pending_rvh =
|
| - RenderViewHostTester::GetPendingForController(controller);
|
| - if (pending_rvh) {
|
| - RenderViewHostTester::For(pending_rvh)->
|
| - SendNavigate(page_id + 1, next_url);
|
| - } else {
|
| - RenderViewHostTester::For(web_contents->GetRenderViewHost())->
|
| - SendNavigate(page_id + 1, next_url);
|
| - }
|
| -
|
| - // The state should now reflect a regular page.
|
| - EXPECT_TRUE(favicon_tab_helper->ShouldDisplayFavicon());
|
| - EXPECT_FALSE(web_contents->FocusLocationBarByDefault());
|
| - }
|
| -
|
| - private:
|
| - virtual void SetUp() OVERRIDE {
|
| - ChromeRenderViewHostTestHarness::SetUp();
|
| - FaviconTabHelper::CreateForWebContents(web_contents());
|
| - }
|
| -
|
| - content::TestBrowserThread ui_thread_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(WebUITest);
|
| -};
|
| -
|
| -// Tests that the New Tab Page flags are correctly set and propogated by
|
| -// WebContents when we first navigate to a Web UI page, then to a standard
|
| -// non-DOM-UI page.
|
| -TEST_F(WebUITest, WebUIToStandard) {
|
| - DoNavigationTest(web_contents(), 1);
|
| -
|
| - // Test the case where we're not doing the initial navigation. This is
|
| - // slightly different than the very-first-navigation case since the
|
| - // SiteInstance will be the same (the original WebContents must still be
|
| - // alive), which will trigger different behavior in RenderViewHostManager.
|
| - scoped_ptr<WebContents> contents2(
|
| - WebContentsTester::CreateTestWebContents(profile(), NULL));
|
| - FaviconTabHelper::CreateForWebContents(contents2.get());
|
| -
|
| - DoNavigationTest(contents2.get(), 101);
|
| -}
|
| -
|
| -TEST_F(WebUITest, WebUIToWebUI) {
|
| - // Do a load (this state is tested above).
|
| - GURL new_tab_url(chrome::kChromeUINewTabURL);
|
| - controller().LoadURL(new_tab_url, content::Referrer(),
|
| - content::PAGE_TRANSITION_LINK,
|
| - std::string());
|
| - rvh_tester()->SendNavigate(1, new_tab_url);
|
| -
|
| - // Start another pending load of the new tab page.
|
| - controller().LoadURL(new_tab_url, content::Referrer(),
|
| - content::PAGE_TRANSITION_LINK,
|
| - std::string());
|
| - rvh_tester()->SendNavigate(2, new_tab_url);
|
| -
|
| - // The flags should be the same as the non-pending state.
|
| - FaviconTabHelper* favicon_tab_helper =
|
| - FaviconTabHelper::FromWebContents(web_contents());
|
| - EXPECT_FALSE(favicon_tab_helper->ShouldDisplayFavicon());
|
| - EXPECT_TRUE(web_contents()->FocusLocationBarByDefault());
|
| -}
|
| -
|
| -TEST_F(WebUITest, StandardToWebUI) {
|
| - // Start a pending navigation to a regular page.
|
| - GURL std_url("http://google.com/");
|
| -
|
| - controller().LoadURL(std_url, content::Referrer(),
|
| - content::PAGE_TRANSITION_LINK,
|
| - std::string());
|
| -
|
| - FaviconTabHelper* favicon_tab_helper =
|
| - FaviconTabHelper::FromWebContents(web_contents());
|
| - // The state should now reflect the default.
|
| - EXPECT_TRUE(favicon_tab_helper->ShouldDisplayFavicon());
|
| - EXPECT_FALSE(web_contents()->FocusLocationBarByDefault());
|
| -
|
| - // Commit the load, the state should be the same.
|
| - rvh_tester()->SendNavigate(1, std_url);
|
| - EXPECT_TRUE(favicon_tab_helper->ShouldDisplayFavicon());
|
| - EXPECT_FALSE(web_contents()->FocusLocationBarByDefault());
|
| -
|
| - // Start a pending load for a WebUI.
|
| - GURL new_tab_url(chrome::kChromeUINewTabURL);
|
| - controller().LoadURL(new_tab_url, content::Referrer(),
|
| - content::PAGE_TRANSITION_LINK,
|
| - std::string());
|
| - EXPECT_TRUE(favicon_tab_helper->ShouldDisplayFavicon());
|
| - EXPECT_TRUE(web_contents()->FocusLocationBarByDefault());
|
| -
|
| - // Committing Web UI is tested above.
|
| -}
|
| -
|
| -namespace {
|
| -
|
| -class TestDelegate : public content::WebContentsDelegate {
|
| - public:
|
| - TestDelegate() : focus_count_(0) {}
|
| -
|
| - virtual void SetFocusToLocationBar(bool select_all) OVERRIDE {
|
| - focus_count_++;
|
| - }
|
| -
|
| - int focus_count() const { return focus_count_; }
|
| -
|
| - private:
|
| - int focus_count_;
|
| -};
|
| -
|
| -}
|
| -
|
| -TEST_F(WebUITest, FocusOnNavigate) {
|
| - // Setup. |wc| will be used to track when we try to focus the location bar.
|
| - WebContents* wc = WebContentsTester::CreateTestWebContents(
|
| - web_contents()->GetBrowserContext(),
|
| - SiteInstance::Create(web_contents()->GetBrowserContext()));
|
| - TestDelegate delegate;
|
| - wc->SetDelegate(&delegate);
|
| - wc->GetController().CopyStateFrom(controller());
|
| - SetContents(wc);
|
| - int page_id = 200;
|
| -
|
| - // Load the NTP.
|
| - GURL new_tab_url(chrome::kChromeUINewTabURL);
|
| - controller().LoadURL(new_tab_url, content::Referrer(),
|
| - content::PAGE_TRANSITION_LINK,
|
| - std::string());
|
| - rvh_tester()->SendNavigate(page_id, new_tab_url);
|
| -
|
| - // Navigate to another page.
|
| - GURL next_url("http://google.com/");
|
| - int next_page_id = page_id + 1;
|
| - controller().LoadURL(next_url, content::Referrer(),
|
| - content::PAGE_TRANSITION_LINK,
|
| - std::string());
|
| - RenderViewHost* old_rvh = rvh();
|
| - RenderViewHostTester::For(old_rvh)->SendShouldCloseACK(true);
|
| - RenderViewHostTester::For(
|
| - pending_rvh())->SendNavigate(next_page_id, next_url);
|
| - RenderViewHostTester::For(old_rvh)->SimulateSwapOutACK();
|
| -
|
| - // Navigate back. Should focus the location bar.
|
| - int focus_called = delegate.focus_count();
|
| - ASSERT_TRUE(controller().CanGoBack());
|
| - controller().GoBack();
|
| - old_rvh = rvh();
|
| - RenderViewHostTester::For(old_rvh)->SendShouldCloseACK(true);
|
| - RenderViewHostTester::For(pending_rvh())->SendNavigate(page_id, new_tab_url);
|
| - RenderViewHostTester::For(old_rvh)->SimulateSwapOutACK();
|
| - EXPECT_LT(focus_called, delegate.focus_count());
|
| -
|
| - // Navigate forward. Shouldn't focus the location bar.
|
| - focus_called = delegate.focus_count();
|
| - ASSERT_TRUE(controller().CanGoForward());
|
| - controller().GoForward();
|
| - old_rvh = rvh();
|
| - RenderViewHostTester::For(old_rvh)->SendShouldCloseACK(true);
|
| - RenderViewHostTester::For(
|
| - pending_rvh())->SendNavigate(next_page_id, next_url);
|
| - RenderViewHostTester::For(old_rvh)->SimulateSwapOutACK();
|
| - EXPECT_EQ(focus_called, delegate.focus_count());
|
| -}
|
|
|