Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1182)

Unified Diff: content/browser/site_instance_unittest.cc

Issue 9147051: Don't swap processes for javascript: URLs. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Added extra test case in the unit test and cleaned up code style. Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« content/browser/site_instance.cc ('K') | « content/browser/site_instance.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/site_instance_unittest.cc
diff --git a/content/browser/site_instance_unittest.cc b/content/browser/site_instance_unittest.cc
index dcfcd3efbfb01f380891f7330c078f75f2a3c91c..663c7a8e4ca6afc8044c21ec8d7bc1717b37a3f0 100644
--- a/content/browser/site_instance_unittest.cc
+++ b/content/browser/site_instance_unittest.cc
@@ -119,25 +119,29 @@ class TestBrowsingInstance : public BrowsingInstance {
TestBrowsingInstance(content::BrowserContext* browser_context,
int* deleteCounter)
: BrowsingInstance(browser_context),
- use_process_per_site(false),
- deleteCounter_(deleteCounter) {
+ use_process_per_site_(false),
+ delete_counter_(deleteCounter) {
awong 2012/01/13 21:19:04 nit: %s/deleteCounter/delete_counter/g
nasko 2012/01/13 21:47:10 Done.
}
// Overrides BrowsingInstance::ShouldUseProcessPerSite so that we can test
// both alternatives without using command-line switches.
bool ShouldUseProcessPerSite(const GURL& url) {
- return use_process_per_site;
+ return use_process_per_site_;
}
- // Set by individual tests.
- bool use_process_per_site;
+ void set_use_process_per_site(bool use_process_per_site) {
+ use_process_per_site_ = use_process_per_site;
+ }
private:
- ~TestBrowsingInstance() {
- (*deleteCounter_)++;
+ virtual ~TestBrowsingInstance() {
+ (*delete_counter_)++;
}
- int* deleteCounter_;
+ // Set by individual tests.
+ bool use_process_per_site_;
+
+ int* delete_counter_;
};
class TestSiteInstance : public SiteInstance {
@@ -151,14 +155,19 @@ class TestSiteInstance : public SiteInstance {
return new TestSiteInstance(browsing_instance, siteDeleteCounter);
}
+ void SetHasProcess(bool process) {
Charlie Reis 2012/01/13 21:16:29 set_has_process, since it's just a setter function
nasko 2012/01/13 21:47:10 Function is not needed anymore, since I create a r
+ has_process_ = process;
+ }
+
private:
TestSiteInstance(BrowsingInstance* browsing_instance, int* deleteCounter)
- : SiteInstance(browsing_instance), deleteCounter_(deleteCounter) {}
- ~TestSiteInstance() {
- (*deleteCounter_)++;
+ : SiteInstance(browsing_instance), delete_counter_(deleteCounter) {}
+ virtual ~TestSiteInstance() {
+ (*delete_counter_)++;
}
- int* deleteCounter_;
+ int* delete_counter_;
+ bool has_process_;
};
} // namespace
@@ -366,7 +375,7 @@ TEST_F(SiteInstanceTest, OneSiteInstancePerSite) {
int deleteCounter = 0;
TestBrowsingInstance* browsing_instance =
new TestBrowsingInstance(NULL, &deleteCounter);
- browsing_instance->use_process_per_site = false;
+ browsing_instance->set_use_process_per_site(false);
const GURL url_a1("http://www.google.com/1.html");
scoped_refptr<SiteInstance> site_instance_a1(
@@ -395,7 +404,7 @@ TEST_F(SiteInstanceTest, OneSiteInstancePerSite) {
// browser context) should return a different SiteInstance.
TestBrowsingInstance* browsing_instance2 =
new TestBrowsingInstance(NULL, &deleteCounter);
- browsing_instance2->use_process_per_site = false;
+ browsing_instance2->set_use_process_per_site(false);
// Ensure the new SiteInstance is ref counted so that it gets deleted.
scoped_refptr<SiteInstance> site_instance_a2_2(
browsing_instance2->GetSiteInstanceForURL(url_a2));
@@ -424,7 +433,7 @@ TEST_F(SiteInstanceTest, OneSiteInstancePerSiteInBrowserContext) {
int deleteCounter = 0;
TestBrowsingInstance* browsing_instance =
new TestBrowsingInstance(NULL, &deleteCounter);
- browsing_instance->use_process_per_site = true;
+ browsing_instance->set_use_process_per_site(true);
const GURL url_a1("http://www.google.com/1.html");
scoped_refptr<SiteInstance> site_instance_a1(
@@ -456,7 +465,7 @@ TEST_F(SiteInstanceTest, OneSiteInstancePerSiteInBrowserContext) {
// to make sure it gets deleted.
scoped_refptr<TestBrowsingInstance> browsing_instance2(
new TestBrowsingInstance(NULL, &deleteCounter));
- browsing_instance2->use_process_per_site = true;
+ browsing_instance2->set_use_process_per_site(true);
EXPECT_EQ(site_instance_a1.get(),
browsing_instance2->GetSiteInstanceForURL(url_a2));
@@ -465,7 +474,7 @@ TEST_F(SiteInstanceTest, OneSiteInstancePerSiteInBrowserContext) {
scoped_ptr<TestBrowserContext> browser_context(new TestBrowserContext());
TestBrowsingInstance* browsing_instance3 =
new TestBrowsingInstance(browser_context.get(), &deleteCounter);
- browsing_instance3->use_process_per_site = true;
+ browsing_instance3->set_use_process_per_site(true);
// Ensure the new SiteInstance is ref counted so that it gets deleted.
scoped_refptr<SiteInstance> site_instance_a2_3(
browsing_instance3->GetSiteInstanceForURL(url_a2));
@@ -529,7 +538,7 @@ TEST_F(SiteInstanceTest, ProcessSharingByType) {
GURL(chrome::kChromeUIScheme + std::string("://newtab"))));
policy->GrantWebUIBindings(webui1_instance->GetProcess()->GetID());
- scoped_refptr<SiteInstance> webui2_instance( CreateSiteInstance(&rph_factory,
+ scoped_refptr<SiteInstance> webui2_instance(CreateSiteInstance(&rph_factory,
GURL(chrome::kChromeUIScheme + std::string("://history"))));
scoped_ptr<content::RenderProcessHost> dom_host(
@@ -546,3 +555,34 @@ TEST_F(SiteInstanceTest, ProcessSharingByType) {
STLDeleteContainerPointers(hosts.begin(), hosts.end());
}
+
+// Test to ensure that HasWrongProcessForURL behaves properly for different
+// types of URLs.
+TEST_F(SiteInstanceTest, HasWrongProcessForURL) {
+ scoped_ptr<TestBrowserContext> browser_context(new TestBrowserContext());
+ scoped_ptr<content::RenderProcessHost> host;
+ scoped_refptr<SiteInstance> instance(
+ SiteInstance::CreateSiteInstance(browser_context.get()));
+
+ EXPECT_FALSE(instance->has_site());
+ EXPECT_TRUE(instance->site().is_empty());
+
+ instance->SetSite(GURL("http://evernote.com/"));
+ EXPECT_TRUE(instance->has_site());
+
+ // Check prior to "assigning" a process to the instance, which is expected
+ // to return false due to not being attached to any process yet.
+ EXPECT_FALSE(instance->HasWrongProcessForURL(GURL("http://google.com")));
+
+ // The call to GetProcess actually creates a new real process, which works
+ // fine, but might be a cause for problems in different contexts.
+ host.reset(instance->GetProcess());
+ EXPECT_TRUE(host.get() != NULL);
awong 2012/01/13 21:19:04 EXPECT_TRUE(host.get()) is jsut as common (maybe m
nasko 2012/01/13 21:47:10 I was trying to be consistent with the rest of the
+ EXPECT_TRUE(instance->HasProcess());
+
+ EXPECT_FALSE(instance->HasWrongProcessForURL(GURL("http://evernote.com")));
+ EXPECT_FALSE(instance->HasWrongProcessForURL(
+ GURL("javascript:alert(document.location.href);")));
+
+ EXPECT_TRUE(instance->HasWrongProcessForURL(GURL("chrome://settings")));
+}
« content/browser/site_instance.cc ('K') | « content/browser/site_instance.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698