diff options
author | creis@chromium.org <creis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-15 18:42:04 +0000 |
---|---|---|
committer | creis@chromium.org <creis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-15 18:42:04 +0000 |
commit | 744c2a2d90c3c9a33c818e1ea4b7ccb5010663a0 (patch) | |
tree | 1671691e79cab4bd2ba5339137145adda5eeeb55 /content/browser/tab_contents/render_view_host_manager_unittest.cc | |
parent | b553de8ad8058d912e997ab5182433b7506afce6 (diff) | |
download | chromium_src-744c2a2d90c3c9a33c818e1ea4b7ccb5010663a0.zip chromium_src-744c2a2d90c3c9a33c818e1ea4b7ccb5010663a0.tar.gz chromium_src-744c2a2d90c3c9a33c818e1ea4b7ccb5010663a0.tar.bz2 |
Allow browser to handle all WebUI navigations.
BUG=113496
TEST="Google Dashboard" link in Sync settings loads in new process.
Review URL: http://codereview.chromium.org/9663045
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@126949 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/tab_contents/render_view_host_manager_unittest.cc')
-rw-r--r-- | content/browser/tab_contents/render_view_host_manager_unittest.cc | 58 |
1 files changed, 20 insertions, 38 deletions
diff --git a/content/browser/tab_contents/render_view_host_manager_unittest.cc b/content/browser/tab_contents/render_view_host_manager_unittest.cc index 6f3fd02..35c3499 100644 --- a/content/browser/tab_contents/render_view_host_manager_unittest.cc +++ b/content/browser/tab_contents/render_view_host_manager_unittest.cc @@ -22,6 +22,7 @@ #include "content/public/common/page_transition_types.h" #include "content/public/common/url_constants.h" #include "content/test/test_browser_context.h" +#include "content/test/test_content_client.h" #include "content/test/test_notification_tracker.h" #include "testing/gtest/include/gtest/gtest.h" #include "googleurl/src/url_util.h" @@ -45,8 +46,6 @@ using content::WebUIController; namespace { -const char kChromeUISchemeButNotWebUIURL[] = "chrome://not-webui"; - class RenderViewHostManagerTestWebUIControllerFactory : public content::WebUIControllerFactory { public: @@ -62,7 +61,8 @@ class RenderViewHostManagerTestWebUIControllerFactory // WebUIFactory implementation. virtual WebUIController* CreateWebUIControllerForURL( WebUI* web_ui, const GURL& url) const OVERRIDE { - if (!(should_create_webui_ && HasWebUIScheme(url))) + if (!(should_create_webui_ && + content::GetContentClient()->HasWebUIScheme(url))) return NULL; return new WebUIController(web_ui); } @@ -74,17 +74,12 @@ class RenderViewHostManagerTestWebUIControllerFactory virtual bool UseWebUIForURL(BrowserContext* browser_context, const GURL& url) const OVERRIDE { - return HasWebUIScheme(url); + return content::GetContentClient()->HasWebUIScheme(url); } virtual bool UseWebUIBindingsForURL(BrowserContext* browser_context, const GURL& url) const OVERRIDE { - return HasWebUIScheme(url); - } - - virtual bool HasWebUIScheme(const GURL& url) const OVERRIDE { - return url.SchemeIs(chrome::kChromeUIScheme) && - url.spec() != kChromeUISchemeButNotWebUIURL; + return content::GetContentClient()->HasWebUIScheme(url); } virtual bool IsURLAcceptableForWebUI(BrowserContext* browser_context, @@ -98,6 +93,16 @@ class RenderViewHostManagerTestWebUIControllerFactory DISALLOW_COPY_AND_ASSIGN(RenderViewHostManagerTestWebUIControllerFactory); }; +class RenderViewHostManagerTestClient : public TestContentClient { + public: + RenderViewHostManagerTestClient() { + } + + virtual bool HasWebUIScheme(const GURL& url) const OVERRIDE { + return url.SchemeIs(chrome::kChromeUIScheme); + } +}; + class RenderViewHostManagerTestBrowserClient : public content::MockContentBrowserClient { public: @@ -127,6 +132,8 @@ class RenderViewHostManagerTest public: virtual void SetUp() OVERRIDE { RenderViewHostTestHarness::SetUp(); + old_client_ = content::GetContentClient(); + content::SetContentClient(&client_); old_browser_client_ = content::GetContentClient()->browser(); content::GetContentClient()->set_browser(&browser_client_); url_util::AddStandardScheme(chrome::kChromeUIScheme); @@ -135,6 +142,7 @@ class RenderViewHostManagerTest virtual void TearDown() OVERRIDE { RenderViewHostTestHarness::TearDown(); content::GetContentClient()->set_browser(old_browser_client_); + content::SetContentClient(old_client_); } void set_should_create_webui(bool should_create_webui) { @@ -172,7 +180,9 @@ class RenderViewHostManagerTest } private: + RenderViewHostManagerTestClient client_; RenderViewHostManagerTestBrowserClient browser_client_; + content::ContentClient* old_client_; content::ContentBrowserClient* old_browser_client_; }; @@ -674,34 +684,6 @@ TEST_F(RenderViewHostManagerTest, WebUI) { manager.DidNavigateMainFrame(host); } -// Tests that chrome: URLs that are not Web UI pages do not get grouped into -// Web UI renderers, even if --process-per-tab is enabled. In that mode, we -// still swap processes if ShouldSwapProcessesForNavigation is true. -// Regression test for bug 46290. -TEST_F(RenderViewHostManagerTest, NonWebUIChromeURLs) { - BrowserThreadImpl thread(BrowserThread::UI, &message_loop_); - SiteInstance* instance = SiteInstance::Create(browser_context()); - TestTabContents tab_contents(browser_context(), instance); - RenderViewHostManager manager(&tab_contents, &tab_contents); - manager.Init(browser_context(), instance, MSG_ROUTING_NONE); - - // NTP is a Web UI page. - const GURL kNtpUrl(chrome::kTestNewTabURL); - NavigationEntryImpl ntp_entry(NULL /* instance */, -1 /* page_id */, kNtpUrl, - content::Referrer(), string16() /* title */, - content::PAGE_TRANSITION_TYPED, - false /* is_renderer_init */); - - // A URL with the Chrome UI scheme, that isn't handled by Web UI. - GURL about_url(kChromeUISchemeButNotWebUIURL); - NavigationEntryImpl about_entry( - NULL /* instance */, -1 /* page_id */, about_url, - content::Referrer(), string16() /* title */, - content::PAGE_TRANSITION_TYPED, false /* is_renderer_init */); - - EXPECT_TRUE(ShouldSwapProcesses(&manager, &ntp_entry, &about_entry)); -} - // Tests that we don't end up in an inconsistent state if a page does a back and // then reload. http://crbug.com/51680 TEST_F(RenderViewHostManagerTest, PageDoesBackAndReload) { |