| Index: content/browser/tab_contents/tab_contents_unittest.cc
|
| ===================================================================
|
| --- content/browser/tab_contents/tab_contents_unittest.cc (revision 113050)
|
| +++ content/browser/tab_contents/tab_contents_unittest.cc (working copy)
|
| @@ -4,18 +4,16 @@
|
|
|
| #include "base/logging.h"
|
| #include "base/utf_string_conversions.h"
|
| -#include "chrome/browser/prefs/pref_service.h"
|
| -#include "chrome/common/pref_names.h"
|
| -#include "chrome/test/base/chrome_render_view_host_test_harness.h"
|
| -#include "chrome/test/base/testing_pref_service.h"
|
| -#include "chrome/test/base/testing_profile.h"
|
| +#include "content/browser/mock_content_browser_client.h"
|
| #include "content/browser/renderer_host/render_view_host.h"
|
| #include "content/browser/renderer_host/render_widget_host_view.h"
|
| +#include "content/browser/renderer_host/test_render_view_host.h"
|
| #include "content/browser/site_instance.h"
|
| #include "content/browser/tab_contents/interstitial_page.h"
|
| #include "content/browser/tab_contents/navigation_details.h"
|
| #include "content/browser/tab_contents/navigation_entry.h"
|
| #include "content/browser/tab_contents/test_tab_contents.h"
|
| +#include "content/browser/webui/empty_web_ui_factory.h"
|
| #include "content/common/view_messages.h"
|
| #include "content/public/browser/notification_details.h"
|
| #include "content/public/browser/notification_source.h"
|
| @@ -31,6 +29,56 @@
|
| using content::BrowserThread;
|
| using webkit_glue::PasswordForm;
|
|
|
| +namespace {
|
| +
|
| +class TabContentsTestWebUI : public WebUI {
|
| + public:
|
| + explicit TabContentsTestWebUI(TabContents* source)
|
| + : WebUI(source) {
|
| + }
|
| + virtual ~TabContentsTestWebUI() {
|
| + }
|
| +};
|
| +
|
| +class TabContentsTestWebUIFactory : public content::EmptyWebUIFactory {
|
| + public:
|
| + virtual WebUI* CreateWebUIForURL(TabContents* source,
|
| + const GURL& url) const OVERRIDE {
|
| + if (!HasWebUIScheme(url))
|
| + return NULL;
|
| +
|
| + return new TabContentsTestWebUI(source);
|
| + }
|
| +
|
| + virtual bool UseWebUIForURL(content::BrowserContext* browser_context,
|
| + const GURL& url) const OVERRIDE {
|
| + return HasWebUIScheme(url);
|
| + }
|
| +
|
| + virtual bool HasWebUIScheme(const GURL& url) const OVERRIDE {
|
| + return url.SchemeIs("tabcontentstest");
|
| + }
|
| +
|
| + virtual bool IsURLAcceptableForWebUI(content::BrowserContext* browser_context,
|
| + const GURL& url) const {
|
| + return HasWebUIScheme(url);
|
| + }
|
| +
|
| +};
|
| +
|
| +class TabContentsTestBrowserClient : public content::MockContentBrowserClient {
|
| + public:
|
| + TabContentsTestBrowserClient() {
|
| + }
|
| +
|
| + virtual content::WebUIFactory* GetWebUIFactory() OVERRIDE {
|
| + return &factory_;
|
| + }
|
| +
|
| + private:
|
| + TabContentsTestWebUIFactory factory_;
|
| +};
|
| +
|
| class TestInterstitialPage : public InterstitialPage {
|
| public:
|
| enum InterstitialState {
|
| @@ -166,38 +214,32 @@
|
| TestInterstitialPage* interstitial_page_;
|
| };
|
|
|
| -class TabContentsTest : public ChromeRenderViewHostTestHarness {
|
| +class TabContentsTest : public RenderViewHostTestHarness {
|
| public:
|
| - TabContentsTest() : ui_thread_(BrowserThread::UI, &message_loop_) {
|
| + TabContentsTest()
|
| + : ui_thread_(BrowserThread::UI, &message_loop_),
|
| + old_browser_client_(NULL) {
|
| }
|
|
|
| - private:
|
| - // Supply our own profile so we use the correct profile data. The test harness
|
| - // is not supposed to overwrite a profile if it's already created.
|
| virtual void SetUp() {
|
| - ChromeRenderViewHostTestHarness::SetUp();
|
| + old_browser_client_ = content::GetContentClient()->browser();
|
| + content::GetContentClient()->set_browser(&browser_client_);
|
| + RenderViewHostTestHarness::SetUp();
|
| + }
|
|
|
| - // Set some (WebKit) user preferences.
|
| - TestingPrefService* pref_services = profile()->GetTestingPrefService();
|
| -#if defined(TOOLKIT_USES_GTK)
|
| - pref_services->SetUserPref(prefs::kUsesSystemTheme,
|
| - Value::CreateBooleanValue(false));
|
| -#endif
|
| - pref_services->SetUserPref(prefs::kDefaultCharset,
|
| - Value::CreateStringValue("utf8"));
|
| - pref_services->SetUserPref(prefs::kWebKitDefaultFontSize,
|
| - Value::CreateIntegerValue(20));
|
| - pref_services->SetUserPref(prefs::kWebKitTextAreasAreResizable,
|
| - Value::CreateBooleanValue(false));
|
| - pref_services->SetUserPref(prefs::kWebKitUsesUniversalDetector,
|
| - Value::CreateBooleanValue(true));
|
| - pref_services->SetUserPref("webkit.webprefs.foo",
|
| - Value::CreateStringValue("bar"));
|
| + virtual void TearDown() {
|
| + content::GetContentClient()->set_browser(old_browser_client_);
|
| + RenderViewHostTestHarness::TearDown();
|
| }
|
|
|
| + private:
|
| + TabContentsTestBrowserClient browser_client_;
|
| content::TestBrowserThread ui_thread_;
|
| + content::ContentBrowserClient* old_browser_client_;
|
| };
|
|
|
| +} // namespace
|
| +
|
| // Test to make sure that title updates get stripped of whitespace.
|
| TEST_F(TabContentsTest, UpdateTitle) {
|
| ViewHostMsg_FrameNavigate_Params params;
|
| @@ -212,9 +254,9 @@
|
| EXPECT_EQ(ASCIIToUTF16("Lots O' Whitespace"), contents()->GetTitle());
|
| }
|
|
|
| -// Test view source mode for the new tabs page.
|
| +// Test view source mode for a webui page.
|
| TEST_F(TabContentsTest, NTPViewSource) {
|
| - const char kUrl[] = "view-source:chrome://newtab";
|
| + const char kUrl[] = "view-source:tabcontentstest://blah";
|
| const GURL kGURL(kUrl);
|
|
|
| process()->sink().ClearMessages();
|
| @@ -407,7 +449,7 @@
|
| contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED);
|
|
|
| // Open a new tab with the same SiteInstance, navigated to the same site.
|
| - TestTabContents contents2(profile(), instance1);
|
| + TestTabContents contents2(browser_context_.get(), instance1);
|
| contents2.transition_cross_site = true;
|
| contents2.controller().LoadURL(url, content::Referrer(),
|
| content::PAGE_TRANSITION_TYPED,
|
| @@ -468,7 +510,7 @@
|
| orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED);
|
|
|
| // Open a related tab to a second site.
|
| - TestTabContents contents2(profile(), instance1);
|
| + TestTabContents contents2(browser_context_.get(), instance1);
|
| contents2.transition_cross_site = true;
|
| const GURL url2("http://www.yahoo.com");
|
| contents2.controller().LoadURL(url2, content::Referrer(),
|
| @@ -592,8 +634,8 @@
|
| TEST_F(TabContentsTest, CrossSiteNavigationBackPreempted) {
|
| contents()->transition_cross_site = true;
|
|
|
| - // Start with NTP, which gets a new RVH with WebUI bindings.
|
| - const GURL url1("chrome://newtab");
|
| + // Start with a web ui page, which gets a new RVH with WebUI bindings.
|
| + const GURL url1("tabcontentstest://blah");
|
| controller().LoadURL(
|
| url1, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
|
| TestRenderViewHost* ntp_rvh = rvh();
|
| @@ -722,7 +764,7 @@
|
| contents()->transition_cross_site = true;
|
|
|
| // Navigate to NTP URL.
|
| - const GURL url("chrome://newtab");
|
| + const GURL url("tabcontentstest://blah");
|
| controller().LoadURL(
|
| url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
|
| TestRenderViewHost* orig_rvh = rvh();
|
| @@ -739,7 +781,7 @@
|
| // Suppose the first navigation tries to commit now, with a
|
| // ViewMsg_Stop in flight. This should not cancel the pending navigation,
|
| // but it should act as if the beforeunload ack arrived.
|
| - orig_rvh->SendNavigate(1, GURL("chrome://newtab"));
|
| + orig_rvh->SendNavigate(1, GURL("tabcontentstest://blah"));
|
| EXPECT_TRUE(contents()->cross_navigation_pending());
|
| EXPECT_EQ(orig_rvh, contents()->render_view_host());
|
| EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack());
|
| @@ -899,29 +941,6 @@
|
| EXPECT_FALSE(entry->content_state().empty());
|
| }
|
|
|
| -// Tests to see that webkit preferences are properly loaded and copied over
|
| -// to a WebPreferences object.
|
| -TEST_F(TabContentsTest, WebKitPrefs) {
|
| - WebPreferences webkit_prefs = contents()->TestGetWebkitPrefs();
|
| -
|
| - // These values have been overridden by the profile preferences.
|
| - EXPECT_EQ("UTF-8", webkit_prefs.default_encoding);
|
| - EXPECT_EQ(20, webkit_prefs.default_font_size);
|
| - EXPECT_FALSE(webkit_prefs.text_areas_are_resizable);
|
| - EXPECT_TRUE(webkit_prefs.uses_universal_detector);
|
| -
|
| - // These should still be the default values.
|
| -#if defined(OS_MACOSX)
|
| - const char kDefaultFont[] = "Times";
|
| -#elif defined(OS_CHROMEOS)
|
| - const char kDefaultFont[] = "Tinos";
|
| -#else
|
| - const char kDefaultFont[] = "Times New Roman";
|
| -#endif
|
| - EXPECT_EQ(ASCIIToUTF16(kDefaultFont), webkit_prefs.standard_font_family);
|
| - EXPECT_TRUE(webkit_prefs.javascript_enabled);
|
| -}
|
| -
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // Interstitial Tests
|
| ////////////////////////////////////////////////////////////////////////////////
|
|
|