| Index: content/browser/site_instance_unittest.cc
|
| diff --git a/content/browser/site_instance_unittest.cc b/content/browser/site_instance_unittest.cc
|
| index 1b072aac162ff08b08bac962c3c4b8a5a4c9e4b7..247dd133c86703b7d94423f866b2157c63c5594a 100644
|
| --- a/content/browser/site_instance_unittest.cc
|
| +++ b/content/browser/site_instance_unittest.cc
|
| @@ -10,21 +10,55 @@
|
| #include "chrome/common/url_constants.h"
|
| #include "chrome/test/testing_profile.h"
|
| #include "content/browser/browsing_instance.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -#include "content/browser/browsing_instance.h"
|
| #include "content/browser/child_process_security_policy.h"
|
| +#include "content/browser/content_browser_client.h"
|
| #include "content/browser/renderer_host/render_view_host.h"
|
| -#include "content/browser/site_instance.h"
|
| #include "content/browser/renderer_host/test_render_view_host.h"
|
| +#include "content/browser/site_instance.h"
|
| #include "content/browser/tab_contents/navigation_entry.h"
|
| #include "content/browser/tab_contents/tab_contents.h"
|
| +#include "content/browser/webui/empty_web_ui_factory.h"
|
| +#include "content/common/content_client.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +namespace {
|
| +
|
| +// TODO(estade): this shouldn't need to be chrome:, but it does (or else GURL
|
| +// doesn't think that the webui URLs have a host). Figure out where this is
|
| +// coming from and fix it.
|
| +const char kWebUIScheme[] = "chrome";
|
| +
|
| +class SiteInstanceTestWebUIFactory : public content::EmptyWebUIFactory {
|
| + public:
|
| + virtual bool UseWebUIForURL(Profile* profile, const GURL& url) const {
|
| + return HasWebUIScheme(url);
|
| + }
|
| + virtual bool HasWebUIScheme(const GURL& url) const {
|
| + return url.SchemeIs(kWebUIScheme);
|
| + }
|
| +};
|
| +
|
| +class SiteInstanceTestBrowserClient : public content::ContentBrowserClient {
|
| + public:
|
| + virtual content::WebUIFactory* GetWebUIFactory() {
|
| + return &factory_;
|
| + }
|
| +
|
| + private:
|
| + SiteInstanceTestWebUIFactory factory_;
|
| +};
|
|
|
| class SiteInstanceTest : public testing::Test {
|
| + public:
|
| + virtual void SetUp() {
|
| + content::GetContentClient()->set_browser(&browser_client_);
|
| + }
|
| +
|
| private:
|
| MessageLoopForUI message_loop_;
|
| -};
|
|
|
| -namespace {
|
| + SiteInstanceTestBrowserClient browser_client_;
|
| +};
|
|
|
| class TestBrowsingInstance : public BrowsingInstance {
|
| public:
|
| @@ -51,14 +85,13 @@ class TestBrowsingInstance : public BrowsingInstance {
|
| int* deleteCounter_;
|
| };
|
|
|
| -
|
| class TestSiteInstance : public SiteInstance {
|
| public:
|
| static TestSiteInstance* CreateTestSiteInstance(Profile* profile,
|
| int* siteDeleteCounter,
|
| int* browsingDeleteCounter) {
|
| TestBrowsingInstance* browsing_instance =
|
| - new TestBrowsingInstance(profile, browsingDeleteCounter);
|
| + new TestBrowsingInstance(profile, browsingDeleteCounter);
|
| return new TestSiteInstance(browsing_instance, siteDeleteCounter);
|
| }
|
|
|
| @@ -441,22 +474,24 @@ TEST_F(SiteInstanceTest, ProcessSharingByType) {
|
| extension2_instance->GetProcess());
|
|
|
| // Create some WebUI instances and make sure they share a process.
|
| - scoped_refptr<SiteInstance> dom1_instance(
|
| - CreateSiteInstance(&rph_factory, GURL("chrome://newtab")));
|
| - policy->GrantWebUIBindings(dom1_instance->GetProcess()->id());
|
| + scoped_refptr<SiteInstance> webui1_instance(
|
| + CreateSiteInstance(&rph_factory,
|
| + GURL(kWebUIScheme + std::string("://newtab"))));
|
| + policy->GrantWebUIBindings(webui1_instance->GetProcess()->id());
|
|
|
| - scoped_refptr<SiteInstance> dom2_instance(
|
| - CreateSiteInstance(&rph_factory, GURL("chrome://history")));
|
| + scoped_refptr<SiteInstance> webui2_instance(
|
| + CreateSiteInstance(&rph_factory,
|
| + GURL(kWebUIScheme + std::string("://history"))));
|
|
|
| - scoped_ptr<RenderProcessHost> dom_host(dom1_instance->GetProcess());
|
| - EXPECT_EQ(dom1_instance->GetProcess(), dom2_instance->GetProcess());
|
| + scoped_ptr<RenderProcessHost> dom_host(webui1_instance->GetProcess());
|
| + EXPECT_EQ(webui1_instance->GetProcess(), webui2_instance->GetProcess());
|
|
|
| // Make sure none of differing privilege processes are mixed.
|
| - EXPECT_NE(extension1_instance->GetProcess(), dom1_instance->GetProcess());
|
| + EXPECT_NE(extension1_instance->GetProcess(), webui1_instance->GetProcess());
|
|
|
| for (size_t i = 0; i < chrome::kMaxRendererProcessCount; ++i) {
|
| EXPECT_NE(extension1_instance->GetProcess(), hosts[i]);
|
| - EXPECT_NE(dom1_instance->GetProcess(), hosts[i]);
|
| + EXPECT_NE(webui1_instance->GetProcess(), hosts[i]);
|
| }
|
|
|
| STLDeleteContainerPointers(hosts.begin(), hosts.end());
|
|
|