Commit 4726a173 authored by Lukasz Anforowicz's avatar Lukasz Anforowicz Committed by Commit Bot

DCHECK(browser_context) in most methods of ContentBrowserClient.

ContentBrowserClients assume that |browser_context| client is not null
(e.g. HeadlessContentBrowserClient::DoesSiteRequireDedicatedProcess and
ChromeContentBrowserClientExtensionsPart::DoesSiteRequireDedicatedProcess).
To avoid surprises, this CL adds DCHECK(browser_context) to most methods
of ContentBrowserClients, so that the assumption is documented and
verified during //content-layer tests.

Bug: 787576
Change-Id: I115ab53bb64cebe50b5993a39b3e153e3054b1b3
Reviewed-on: https://chromium-review.googlesource.com/c/1276559Reviewed-by: default avatarCharlie Reis <creis@chromium.org>
Reviewed-by: default avatarAlex Moshchuk <alexmos@chromium.org>
Commit-Queue: Łukasz Anforowicz <lukasza@chromium.org>
Cr-Commit-Position: refs/heads/master@{#599752}
parent d3ed4e64
...@@ -18,6 +18,7 @@ namespace content { ...@@ -18,6 +18,7 @@ namespace content {
BrowsingInstance::BrowsingInstance(BrowserContext* browser_context) BrowsingInstance::BrowsingInstance(BrowserContext* browser_context)
: browser_context_(browser_context), : browser_context_(browser_context),
active_contents_count_(0u) { active_contents_count_(0u) {
DCHECK(browser_context);
} }
bool BrowsingInstance::HasSiteInstance(const GURL& url) { bool BrowsingInstance::HasSiteInstance(const GURL& url) {
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include "build/build_config.h" #include "build/build_config.h"
#include "content/browser/bad_message.h" #include "content/browser/bad_message.h"
#include "content/browser/isolated_origin_util.h" #include "content/browser/isolated_origin_util.h"
#include "content/browser/renderer_host/render_process_host_impl.h"
#include "content/browser/site_instance_impl.h" #include "content/browser/site_instance_impl.h"
#include "content/public/browser/browser_context.h" #include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
...@@ -1174,8 +1175,16 @@ void ChildProcessSecurityPolicyImpl::LockToOrigin(int child_id, ...@@ -1174,8 +1175,16 @@ void ChildProcessSecurityPolicyImpl::LockToOrigin(int child_id,
// call GetOriginLock or CheckOriginLock from any thread). // call GetOriginLock or CheckOriginLock from any thread).
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
// "gurl" can be currently empty in some cases, such as file://blah. #if DCHECK_IS_ON()
DCHECK_EQ(SiteInstanceImpl::DetermineProcessLockURL(nullptr, gurl), gurl); // Sanity-check that the |gurl| argument can be used as a lock.
RenderProcessHost* rph = RenderProcessHostImpl::FromID(child_id);
if (rph) { // |rph| can be null in unittests.
DCHECK_EQ(SiteInstanceImpl::DetermineProcessLockURL(
rph->GetBrowserContext(), gurl),
gurl);
}
#endif
base::AutoLock lock(lock_); base::AutoLock lock(lock_);
auto state = security_state_.find(child_id); auto state = security_state_.find(child_id);
DCHECK(state != security_state_.end()); DCHECK(state != security_state_.end());
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
#include "content/browser/frame_host/navigation_entry_impl.h" #include "content/browser/frame_host/navigation_entry_impl.h"
#include <utility>
#include "base/path_service.h" #include "base/path_service.h"
#include "base/strings/string16.h" #include "base/strings/string16.h"
#include "base/strings/string_util.h" #include "base/strings/string_util.h"
...@@ -13,6 +15,8 @@ ...@@ -13,6 +15,8 @@
#include "build/build_config.h" #include "build/build_config.h"
#include "content/browser/site_instance_impl.h" #include "content/browser/site_instance_impl.h"
#include "content/public/browser/ssl_status.h" #include "content/public/browser/ssl_status.h"
#include "content/public/test/test_browser_context.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
using base::ASCIIToUTF16; using base::ASCIIToUTF16;
...@@ -54,7 +58,7 @@ class NavigationEntryTest : public testing::Test { ...@@ -54,7 +58,7 @@ class NavigationEntryTest : public testing::Test {
void SetUp() override { void SetUp() override {
entry1_.reset(new NavigationEntryImpl); entry1_.reset(new NavigationEntryImpl);
instance_ = SiteInstanceImpl::Create(nullptr); instance_ = SiteInstanceImpl::Create(&browser_context_);
entry2_.reset(new NavigationEntryImpl( entry2_.reset(new NavigationEntryImpl(
instance_, GURL("test:url"), instance_, GURL("test:url"),
Referrer(GURL("from"), blink::kWebReferrerPolicyDefault), Referrer(GURL("from"), blink::kWebReferrerPolicyDefault),
...@@ -69,6 +73,10 @@ class NavigationEntryTest : public testing::Test { ...@@ -69,6 +73,10 @@ class NavigationEntryTest : public testing::Test {
std::unique_ptr<NavigationEntryImpl> entry2_; std::unique_ptr<NavigationEntryImpl> entry2_;
// SiteInstances are deleted when their NavigationEntries are gone. // SiteInstances are deleted when their NavigationEntries are gone.
scoped_refptr<SiteInstanceImpl> instance_; scoped_refptr<SiteInstanceImpl> instance_;
private:
TestBrowserThreadBundle thread_bundle_;
TestBrowserContext browser_context_;
}; };
// Test unique ID accessors // Test unique ID accessors
......
...@@ -261,6 +261,7 @@ void SetupOnUIThread(base::WeakPtr<ServiceWorkerProcessManager> process_manager, ...@@ -261,6 +261,7 @@ void SetupOnUIThread(base::WeakPtr<ServiceWorkerProcessManager> process_manager,
// TODO(crbug.com/862854): Support changes to RendererPreferences while the // TODO(crbug.com/862854): Support changes to RendererPreferences while the
// worker is running. // worker is running.
DCHECK(process_manager->browser_context() || process_manager->IsShutdown());
GetContentClient()->browser()->UpdateRendererPreferencesForWorker( GetContentClient()->browser()->UpdateRendererPreferencesForWorker(
process_manager->browser_context(), &params->renderer_preferences); process_manager->browser_context(), &params->renderer_preferences);
......
...@@ -29,6 +29,7 @@ ServiceWorkerProcessManager::ServiceWorkerProcessManager( ...@@ -29,6 +29,7 @@ ServiceWorkerProcessManager::ServiceWorkerProcessManager(
new_process_id_for_test_(ChildProcessHost::kInvalidUniqueID), new_process_id_for_test_(ChildProcessHost::kInvalidUniqueID),
weak_this_factory_(this) { weak_this_factory_(this) {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
DCHECK(browser_context);
weak_this_ = weak_this_factory_.GetWeakPtr(); weak_this_ = weak_this_factory_.GetWeakPtr();
} }
......
...@@ -59,6 +59,7 @@ SiteInstanceImpl::~SiteInstanceImpl() { ...@@ -59,6 +59,7 @@ SiteInstanceImpl::~SiteInstanceImpl() {
// static // static
scoped_refptr<SiteInstanceImpl> SiteInstanceImpl::Create( scoped_refptr<SiteInstanceImpl> SiteInstanceImpl::Create(
BrowserContext* browser_context) { BrowserContext* browser_context) {
DCHECK(browser_context);
return base::WrapRefCounted( return base::WrapRefCounted(
new SiteInstanceImpl(new BrowsingInstance(browser_context))); new SiteInstanceImpl(new BrowsingInstance(browser_context)));
} }
...@@ -67,6 +68,7 @@ scoped_refptr<SiteInstanceImpl> SiteInstanceImpl::Create( ...@@ -67,6 +68,7 @@ scoped_refptr<SiteInstanceImpl> SiteInstanceImpl::Create(
scoped_refptr<SiteInstanceImpl> SiteInstanceImpl::CreateForURL( scoped_refptr<SiteInstanceImpl> SiteInstanceImpl::CreateForURL(
BrowserContext* browser_context, BrowserContext* browser_context,
const GURL& url) { const GURL& url) {
DCHECK(browser_context);
// This will create a new SiteInstance and BrowsingInstance. // This will create a new SiteInstance and BrowsingInstance.
scoped_refptr<BrowsingInstance> instance( scoped_refptr<BrowsingInstance> instance(
new BrowsingInstance(browser_context)); new BrowsingInstance(browser_context));
...@@ -314,6 +316,7 @@ BrowserContext* SiteInstanceImpl::GetBrowserContext() const { ...@@ -314,6 +316,7 @@ BrowserContext* SiteInstanceImpl::GetBrowserContext() const {
// static // static
scoped_refptr<SiteInstance> SiteInstance::Create( scoped_refptr<SiteInstance> SiteInstance::Create(
BrowserContext* browser_context) { BrowserContext* browser_context) {
DCHECK(browser_context);
return SiteInstanceImpl::Create(browser_context); return SiteInstanceImpl::Create(browser_context);
} }
...@@ -321,6 +324,7 @@ scoped_refptr<SiteInstance> SiteInstance::Create( ...@@ -321,6 +324,7 @@ scoped_refptr<SiteInstance> SiteInstance::Create(
scoped_refptr<SiteInstance> SiteInstance::CreateForURL( scoped_refptr<SiteInstance> SiteInstance::CreateForURL(
BrowserContext* browser_context, BrowserContext* browser_context,
const GURL& url) { const GURL& url) {
DCHECK(browser_context);
return SiteInstanceImpl::CreateForURL(browser_context, url); return SiteInstanceImpl::CreateForURL(browser_context, url);
} }
...@@ -341,6 +345,8 @@ bool SiteInstanceImpl::IsSameWebSite(BrowserContext* browser_context, ...@@ -341,6 +345,8 @@ bool SiteInstanceImpl::IsSameWebSite(BrowserContext* browser_context,
const GURL& real_src_url, const GURL& real_src_url,
const GURL& real_dest_url, const GURL& real_dest_url,
bool should_compare_effective_urls) { bool should_compare_effective_urls) {
DCHECK(browser_context);
GURL src_url = GURL src_url =
should_compare_effective_urls should_compare_effective_urls
? SiteInstanceImpl::GetEffectiveURL(browser_context, real_src_url) ? SiteInstanceImpl::GetEffectiveURL(browser_context, real_src_url)
...@@ -555,6 +561,8 @@ bool SiteInstanceImpl::HasEffectiveURL(BrowserContext* browser_context, ...@@ -555,6 +561,8 @@ bool SiteInstanceImpl::HasEffectiveURL(BrowserContext* browser_context,
bool SiteInstanceImpl::DoesSiteRequireDedicatedProcess( bool SiteInstanceImpl::DoesSiteRequireDedicatedProcess(
BrowserContext* browser_context, BrowserContext* browser_context,
const GURL& url) { const GURL& url) {
DCHECK(browser_context);
// If --site-per-process is enabled, site isolation is enabled everywhere. // If --site-per-process is enabled, site isolation is enabled everywhere.
if (SiteIsolationPolicy::UseDedicatedProcessesForAllSites()) if (SiteIsolationPolicy::UseDedicatedProcessesForAllSites())
return true; return true;
...@@ -590,6 +598,8 @@ bool SiteInstanceImpl::DoesSiteRequireDedicatedProcess( ...@@ -590,6 +598,8 @@ bool SiteInstanceImpl::DoesSiteRequireDedicatedProcess(
// static // static
bool SiteInstanceImpl::ShouldLockToOrigin(BrowserContext* browser_context, bool SiteInstanceImpl::ShouldLockToOrigin(BrowserContext* browser_context,
GURL site_url) { GURL site_url) {
DCHECK(browser_context);
// Don't lock to origin in --single-process mode, since this mode puts // Don't lock to origin in --single-process mode, since this mode puts
// cross-site pages into the same process. // cross-site pages into the same process.
if (RenderProcessHost::run_renderer_in_process()) if (RenderProcessHost::run_renderer_in_process())
......
...@@ -163,13 +163,15 @@ class SiteInstanceTest : public testing::Test { ...@@ -163,13 +163,15 @@ class SiteInstanceTest : public testing::Test {
// Test to ensure no memory leaks for SiteInstance objects. // Test to ensure no memory leaks for SiteInstance objects.
TEST_F(SiteInstanceTest, SiteInstanceDestructor) { TEST_F(SiteInstanceTest, SiteInstanceDestructor) {
TestBrowserContext context;
// The existence of this object will cause WebContentsImpl to create our // The existence of this object will cause WebContentsImpl to create our
// test one instead of the real one. // test one instead of the real one.
RenderViewHostTestEnabler rvh_test_enabler; RenderViewHostTestEnabler rvh_test_enabler;
const GURL url("test:foo"); const GURL url("test:foo");
// Ensure that instances are deleted when their NavigationEntries are gone. // Ensure that instances are deleted when their NavigationEntries are gone.
scoped_refptr<SiteInstanceImpl> instance = SiteInstanceImpl::Create(nullptr); scoped_refptr<SiteInstanceImpl> instance = SiteInstanceImpl::Create(&context);
EXPECT_EQ(0, browser_client()->GetAndClearSiteInstanceDeleteCount()); EXPECT_EQ(0, browser_client()->GetAndClearSiteInstanceDeleteCount());
NavigationEntryImpl* e1 = new NavigationEntryImpl( NavigationEntryImpl* e1 = new NavigationEntryImpl(
...@@ -242,7 +244,9 @@ TEST_F(SiteInstanceTest, GetProcess) { ...@@ -242,7 +244,9 @@ TEST_F(SiteInstanceTest, GetProcess) {
// Test to ensure SetSite and site() work properly. // Test to ensure SetSite and site() work properly.
TEST_F(SiteInstanceTest, SetSite) { TEST_F(SiteInstanceTest, SetSite) {
scoped_refptr<SiteInstanceImpl> instance(SiteInstanceImpl::Create(nullptr)); TestBrowserContext context;
scoped_refptr<SiteInstanceImpl> instance(SiteInstanceImpl::Create(&context));
EXPECT_FALSE(instance->HasSite()); EXPECT_FALSE(instance->HasSite());
EXPECT_TRUE(instance->GetSiteURL().is_empty()); EXPECT_TRUE(instance->GetSiteURL().is_empty());
...@@ -256,53 +260,55 @@ TEST_F(SiteInstanceTest, SetSite) { ...@@ -256,53 +260,55 @@ TEST_F(SiteInstanceTest, SetSite) {
// Test to ensure GetSiteForURL properly returns sites for URLs. // Test to ensure GetSiteForURL properly returns sites for URLs.
TEST_F(SiteInstanceTest, GetSiteForURL) { TEST_F(SiteInstanceTest, GetSiteForURL) {
TestBrowserContext context;
// Pages are irrelevant. // Pages are irrelevant.
GURL test_url = GURL("http://www.google.com/index.html"); GURL test_url = GURL("http://www.google.com/index.html");
GURL site_url = SiteInstance::GetSiteForURL(nullptr, test_url); GURL site_url = SiteInstance::GetSiteForURL(&context, test_url);
EXPECT_EQ(GURL("http://google.com"), site_url); EXPECT_EQ(GURL("http://google.com"), site_url);
EXPECT_EQ("http", site_url.scheme()); EXPECT_EQ("http", site_url.scheme());
EXPECT_EQ("google.com", site_url.host()); EXPECT_EQ("google.com", site_url.host());
// Ports are irrelevant. // Ports are irrelevant.
test_url = GURL("https://www.google.com:8080"); test_url = GURL("https://www.google.com:8080");
site_url = SiteInstance::GetSiteForURL(nullptr, test_url); site_url = SiteInstance::GetSiteForURL(&context, test_url);
EXPECT_EQ(GURL("https://google.com"), site_url); EXPECT_EQ(GURL("https://google.com"), site_url);
// Punycode is canonicalized. // Punycode is canonicalized.
test_url = GURL("http://☃snowperson☃.net:333/"); test_url = GURL("http://☃snowperson☃.net:333/");
site_url = SiteInstance::GetSiteForURL(nullptr, test_url); site_url = SiteInstance::GetSiteForURL(&context, test_url);
EXPECT_EQ(GURL("http://xn--snowperson-di0gka.net"), site_url); EXPECT_EQ(GURL("http://xn--snowperson-di0gka.net"), site_url);
// Username and password are stripped out. // Username and password are stripped out.
test_url = GURL("ftp://username:password@ftp.chromium.org/files/README"); test_url = GURL("ftp://username:password@ftp.chromium.org/files/README");
site_url = SiteInstance::GetSiteForURL(nullptr, test_url); site_url = SiteInstance::GetSiteForURL(&context, test_url);
EXPECT_EQ(GURL("ftp://chromium.org"), site_url); EXPECT_EQ(GURL("ftp://chromium.org"), site_url);
// Literal IP addresses of any flavor are okay. // Literal IP addresses of any flavor are okay.
test_url = GURL("http://127.0.0.1/a.html"); test_url = GURL("http://127.0.0.1/a.html");
site_url = SiteInstance::GetSiteForURL(nullptr, test_url); site_url = SiteInstance::GetSiteForURL(&context, test_url);
EXPECT_EQ(GURL("http://127.0.0.1"), site_url); EXPECT_EQ(GURL("http://127.0.0.1"), site_url);
EXPECT_EQ("127.0.0.1", site_url.host()); EXPECT_EQ("127.0.0.1", site_url.host());
test_url = GURL("http://2130706433/a.html"); test_url = GURL("http://2130706433/a.html");
site_url = SiteInstance::GetSiteForURL(nullptr, test_url); site_url = SiteInstance::GetSiteForURL(&context, test_url);
EXPECT_EQ(GURL("http://127.0.0.1"), site_url); EXPECT_EQ(GURL("http://127.0.0.1"), site_url);
EXPECT_EQ("127.0.0.1", site_url.host()); EXPECT_EQ("127.0.0.1", site_url.host());
test_url = GURL("http://[::1]:2/page.html"); test_url = GURL("http://[::1]:2/page.html");
site_url = SiteInstance::GetSiteForURL(nullptr, test_url); site_url = SiteInstance::GetSiteForURL(&context, test_url);
EXPECT_EQ(GURL("http://[::1]"), site_url); EXPECT_EQ(GURL("http://[::1]"), site_url);
EXPECT_EQ("[::1]", site_url.host()); EXPECT_EQ("[::1]", site_url.host());
// Hostnames without TLDs are okay. // Hostnames without TLDs are okay.
test_url = GURL("http://foo/a.html"); test_url = GURL("http://foo/a.html");
site_url = SiteInstance::GetSiteForURL(nullptr, test_url); site_url = SiteInstance::GetSiteForURL(&context, test_url);
EXPECT_EQ(GURL("http://foo"), site_url); EXPECT_EQ(GURL("http://foo"), site_url);
EXPECT_EQ("foo", site_url.host()); EXPECT_EQ("foo", site_url.host());
// File URLs should include the scheme. // File URLs should include the scheme.
test_url = GURL("file:///C:/Downloads/"); test_url = GURL("file:///C:/Downloads/");
site_url = SiteInstance::GetSiteForURL(nullptr, test_url); site_url = SiteInstance::GetSiteForURL(&context, test_url);
EXPECT_EQ(GURL("file:"), site_url); EXPECT_EQ(GURL("file:"), site_url);
EXPECT_EQ("file", site_url.scheme()); EXPECT_EQ("file", site_url.scheme());
EXPECT_FALSE(site_url.has_host()); EXPECT_FALSE(site_url.has_host());
...@@ -311,7 +317,7 @@ TEST_F(SiteInstanceTest, GetSiteForURL) { ...@@ -311,7 +317,7 @@ TEST_F(SiteInstanceTest, GetSiteForURL) {
// maps *all* file://... URLs into "file://" origin) such file URLs still need // maps *all* file://... URLs into "file://" origin) such file URLs still need
// to map into "file:" site URL. See also https://crbug.com/776160. // to map into "file:" site URL. See also https://crbug.com/776160.
test_url = GURL("file://server/path"); test_url = GURL("file://server/path");
site_url = SiteInstance::GetSiteForURL(nullptr, test_url); site_url = SiteInstance::GetSiteForURL(&context, test_url);
EXPECT_EQ(GURL("file:"), site_url); EXPECT_EQ(GURL("file:"), site_url);
EXPECT_EQ("file", site_url.scheme()); EXPECT_EQ("file", site_url.scheme());
EXPECT_FALSE(site_url.has_host()); EXPECT_FALSE(site_url.has_host());
...@@ -319,7 +325,7 @@ TEST_F(SiteInstanceTest, GetSiteForURL) { ...@@ -319,7 +325,7 @@ TEST_F(SiteInstanceTest, GetSiteForURL) {
// Data URLs should include the whole URL, except for the hash, when Site // Data URLs should include the whole URL, except for the hash, when Site
// Isolation is enabled. Otherwise they just include the scheme. // Isolation is enabled. Otherwise they just include the scheme.
test_url = GURL("data:text/html,foo"); test_url = GURL("data:text/html,foo");
site_url = SiteInstance::GetSiteForURL(nullptr, test_url); site_url = SiteInstance::GetSiteForURL(&context, test_url);
if (AreAllSitesIsolatedForTesting()) if (AreAllSitesIsolatedForTesting())
EXPECT_EQ(test_url, site_url); EXPECT_EQ(test_url, site_url);
else else
...@@ -327,7 +333,7 @@ TEST_F(SiteInstanceTest, GetSiteForURL) { ...@@ -327,7 +333,7 @@ TEST_F(SiteInstanceTest, GetSiteForURL) {
EXPECT_EQ("data", site_url.scheme()); EXPECT_EQ("data", site_url.scheme());
EXPECT_FALSE(site_url.has_host()); EXPECT_FALSE(site_url.has_host());
test_url = GURL("data:text/html,foo#bar"); test_url = GURL("data:text/html,foo#bar");
site_url = SiteInstance::GetSiteForURL(nullptr, test_url); site_url = SiteInstance::GetSiteForURL(&context, test_url);
EXPECT_FALSE(site_url.has_ref()); EXPECT_FALSE(site_url.has_ref());
if (AreAllSitesIsolatedForTesting()) { if (AreAllSitesIsolatedForTesting()) {
EXPECT_NE(test_url, site_url); EXPECT_NE(test_url, site_url);
...@@ -338,7 +344,7 @@ TEST_F(SiteInstanceTest, GetSiteForURL) { ...@@ -338,7 +344,7 @@ TEST_F(SiteInstanceTest, GetSiteForURL) {
// Javascript URLs should include the scheme. // Javascript URLs should include the scheme.
test_url = GURL("javascript:foo();"); test_url = GURL("javascript:foo();");
site_url = SiteInstance::GetSiteForURL(nullptr, test_url); site_url = SiteInstance::GetSiteForURL(&context, test_url);
EXPECT_EQ(GURL("javascript:"), site_url); EXPECT_EQ(GURL("javascript:"), site_url);
EXPECT_EQ("javascript", site_url.scheme()); EXPECT_EQ("javascript", site_url.scheme());
EXPECT_FALSE(site_url.has_host()); EXPECT_FALSE(site_url.has_host());
...@@ -347,12 +353,12 @@ TEST_F(SiteInstanceTest, GetSiteForURL) { ...@@ -347,12 +353,12 @@ TEST_F(SiteInstanceTest, GetSiteForURL) {
test_url = GURL( test_url = GURL(
"blob:gopher://www.ftp.chromium.org/" "blob:gopher://www.ftp.chromium.org/"
"4d4ff040-6d61-4446-86d3-13ca07ec9ab9"); "4d4ff040-6d61-4446-86d3-13ca07ec9ab9");
site_url = SiteInstance::GetSiteForURL(nullptr, test_url); site_url = SiteInstance::GetSiteForURL(&context, test_url);
EXPECT_EQ(GURL("gopher://chromium.org"), site_url); EXPECT_EQ(GURL("gopher://chromium.org"), site_url);
// Blob URLs with file origin also extract the site from the origin. // Blob URLs with file origin also extract the site from the origin.
test_url = GURL("blob:file:///1029e5a4-2983-4b90-a585-ed217563acfeb"); test_url = GURL("blob:file:///1029e5a4-2983-4b90-a585-ed217563acfeb");
site_url = SiteInstance::GetSiteForURL(nullptr, test_url); site_url = SiteInstance::GetSiteForURL(&context, test_url);
EXPECT_EQ(GURL("file:"), site_url); EXPECT_EQ(GURL("file:"), site_url);
EXPECT_EQ("file", site_url.scheme()); EXPECT_EQ("file", site_url.scheme());
EXPECT_FALSE(site_url.has_host()); EXPECT_FALSE(site_url.has_host());
...@@ -361,13 +367,13 @@ TEST_F(SiteInstanceTest, GetSiteForURL) { ...@@ -361,13 +367,13 @@ TEST_F(SiteInstanceTest, GetSiteForURL) {
// when Site Isolation is enabled, except for the hash. Otherwise they just // when Site Isolation is enabled, except for the hash. Otherwise they just
// include the scheme. // include the scheme.
test_url = GURL("blob:null/1029e5a4-2983-4b90-a585-ed217563acfeb"); test_url = GURL("blob:null/1029e5a4-2983-4b90-a585-ed217563acfeb");
site_url = SiteInstance::GetSiteForURL(nullptr, test_url); site_url = SiteInstance::GetSiteForURL(&context, test_url);
if (AreAllSitesIsolatedForTesting()) if (AreAllSitesIsolatedForTesting())
EXPECT_EQ(test_url, site_url); EXPECT_EQ(test_url, site_url);
else else
EXPECT_EQ(GURL("blob:"), site_url); EXPECT_EQ(GURL("blob:"), site_url);
test_url = GURL("blob:null/1029e5a4-2983-4b90-a585-ed217563acfeb#foo"); test_url = GURL("blob:null/1029e5a4-2983-4b90-a585-ed217563acfeb#foo");
site_url = SiteInstance::GetSiteForURL(nullptr, test_url); site_url = SiteInstance::GetSiteForURL(&context, test_url);
EXPECT_FALSE(site_url.has_ref()); EXPECT_FALSE(site_url.has_ref());
if (AreAllSitesIsolatedForTesting()) { if (AreAllSitesIsolatedForTesting()) {
EXPECT_NE(test_url, site_url); EXPECT_NE(test_url, site_url);
...@@ -380,12 +386,12 @@ TEST_F(SiteInstanceTest, GetSiteForURL) { ...@@ -380,12 +386,12 @@ TEST_F(SiteInstanceTest, GetSiteForURL) {
test_url = GURL( test_url = GURL(
"blob:http://www.example.appspot.com:44/" "blob:http://www.example.appspot.com:44/"
"4d4ff040-6d61-4446-86d3-13ca07ec9ab9"); "4d4ff040-6d61-4446-86d3-13ca07ec9ab9");
site_url = SiteInstance::GetSiteForURL(nullptr, test_url); site_url = SiteInstance::GetSiteForURL(&context, test_url);
EXPECT_EQ(GURL("http://example.appspot.com"), site_url); EXPECT_EQ(GURL("http://example.appspot.com"), site_url);
// The site of filesystem URLs is determined by the inner URL. // The site of filesystem URLs is determined by the inner URL.
test_url = GURL("filesystem:http://www.google.com/foo/bar.html?foo#bar"); test_url = GURL("filesystem:http://www.google.com/foo/bar.html?foo#bar");
site_url = SiteInstance::GetSiteForURL(nullptr, test_url); site_url = SiteInstance::GetSiteForURL(&context, test_url);
EXPECT_EQ(GURL("http://google.com"), site_url); EXPECT_EQ(GURL("http://google.com"), site_url);
// Guest URLs are special and need to have the path in the site as well, // Guest URLs are special and need to have the path in the site as well,
...@@ -393,7 +399,7 @@ TEST_F(SiteInstanceTest, GetSiteForURL) { ...@@ -393,7 +399,7 @@ TEST_F(SiteInstanceTest, GetSiteForURL) {
std::string guest_url(kGuestScheme); std::string guest_url(kGuestScheme);
guest_url.append("://abc123/path"); guest_url.append("://abc123/path");
test_url = GURL(guest_url); test_url = GURL(guest_url);
site_url = SiteInstance::GetSiteForURL(nullptr, test_url); site_url = SiteInstance::GetSiteForURL(&context, test_url);
EXPECT_EQ(test_url, site_url); EXPECT_EQ(test_url, site_url);
DrainMessageLoop(); DrainMessageLoop();
...@@ -401,6 +407,7 @@ TEST_F(SiteInstanceTest, GetSiteForURL) { ...@@ -401,6 +407,7 @@ TEST_F(SiteInstanceTest, GetSiteForURL) {
// Test that process lock URLs are computed without using effective URLs. // Test that process lock URLs are computed without using effective URLs.
TEST_F(SiteInstanceTest, ProcessLockDoesNotUseEffectiveURL) { TEST_F(SiteInstanceTest, ProcessLockDoesNotUseEffectiveURL) {
TestBrowserContext context;
GURL test_url("https://some.app.foo.com/"); GURL test_url("https://some.app.foo.com/");
GURL nonapp_site_url("https://foo.com/"); GURL nonapp_site_url("https://foo.com/");
GURL app_url("https://app.com/"); GURL app_url("https://app.com/");
...@@ -415,10 +422,10 @@ TEST_F(SiteInstanceTest, ProcessLockDoesNotUseEffectiveURL) { ...@@ -415,10 +422,10 @@ TEST_F(SiteInstanceTest, ProcessLockDoesNotUseEffectiveURL) {
GURL expected_app_site_url(app_url.spec() + "#" + nonapp_site_url.spec()); GURL expected_app_site_url(app_url.spec() + "#" + nonapp_site_url.spec());
{ {
GURL site_url = SiteInstanceImpl::GetSiteForURL( GURL site_url = SiteInstanceImpl::GetSiteForURL(
nullptr, test_url, false /* use_effective_urls */); &context, test_url, false /* use_effective_urls */);
EXPECT_EQ(nonapp_site_url, site_url); EXPECT_EQ(nonapp_site_url, site_url);
site_url = SiteInstanceImpl::GetSiteForURL(nullptr, test_url, site_url = SiteInstanceImpl::GetSiteForURL(&context, test_url,
true /* use_effective_urls */); true /* use_effective_urls */);
EXPECT_EQ(expected_app_site_url, site_url); EXPECT_EQ(expected_app_site_url, site_url);
} }
...@@ -461,6 +468,7 @@ TEST_F(SiteInstanceTest, ProcessLockDoesNotUseEffectiveURL) { ...@@ -461,6 +468,7 @@ TEST_F(SiteInstanceTest, ProcessLockDoesNotUseEffectiveURL) {
// tested in RegistryControlledDomainTest. This test focuses on URLs with // tested in RegistryControlledDomainTest. This test focuses on URLs with
// different schemes or ports. // different schemes or ports.
TEST_F(SiteInstanceTest, IsSameWebSite) { TEST_F(SiteInstanceTest, IsSameWebSite) {
TestBrowserContext context;
GURL url_foo = GURL("http://foo/a.html"); GURL url_foo = GURL("http://foo/a.html");
GURL url_foo2 = GURL("http://foo/b.html"); GURL url_foo2 = GURL("http://foo/b.html");
GURL url_foo_https = GURL("https://foo/a.html"); GURL url_foo_https = GURL("https://foo/a.html");
...@@ -469,31 +477,31 @@ TEST_F(SiteInstanceTest, IsSameWebSite) { ...@@ -469,31 +477,31 @@ TEST_F(SiteInstanceTest, IsSameWebSite) {
GURL url_blank = GURL(url::kAboutBlankURL); GURL url_blank = GURL(url::kAboutBlankURL);
// Same scheme and port -> same site. // Same scheme and port -> same site.
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, url_foo, url_foo2)); EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, url_foo, url_foo2));
// Different scheme -> different site. // Different scheme -> different site.
EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, url_foo, url_foo_https)); EXPECT_FALSE(SiteInstance::IsSameWebSite(&context, url_foo, url_foo_https));
// Different port -> same site. // Different port -> same site.
// (Changes to document.domain make renderer ignore the port.) // (Changes to document.domain make renderer ignore the port.)
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, url_foo, url_foo_port)); EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, url_foo, url_foo_port));
// JavaScript links should be considered same site for anything. // JavaScript links should be considered same site for anything.
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, url_javascript, url_foo)); EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, url_javascript, url_foo));
EXPECT_TRUE( EXPECT_TRUE(
SiteInstance::IsSameWebSite(nullptr, url_javascript, url_foo_https)); SiteInstance::IsSameWebSite(&context, url_javascript, url_foo_https));
EXPECT_TRUE( EXPECT_TRUE(
SiteInstance::IsSameWebSite(nullptr, url_javascript, url_foo_port)); SiteInstance::IsSameWebSite(&context, url_javascript, url_foo_port));
// Navigating to a blank page is considered the same site. // Navigating to a blank page is considered the same site.
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, url_foo, url_blank)); EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, url_foo, url_blank));
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, url_foo_https, url_blank)); EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, url_foo_https, url_blank));
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, url_foo_port, url_blank)); EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, url_foo_port, url_blank));
// Navigating from a blank site is not considered to be the same site. // Navigating from a blank site is not considered to be the same site.
EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, url_blank, url_foo)); EXPECT_FALSE(SiteInstance::IsSameWebSite(&context, url_blank, url_foo));
EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, url_blank, url_foo_https)); EXPECT_FALSE(SiteInstance::IsSameWebSite(&context, url_blank, url_foo_https));
EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, url_blank, url_foo_port)); EXPECT_FALSE(SiteInstance::IsSameWebSite(&context, url_blank, url_foo_port));
DrainMessageLoop(); DrainMessageLoop();
} }
...@@ -501,26 +509,30 @@ TEST_F(SiteInstanceTest, IsSameWebSite) { ...@@ -501,26 +509,30 @@ TEST_F(SiteInstanceTest, IsSameWebSite) {
// Test that two file URLs are considered same-site if they have the same path, // Test that two file URLs are considered same-site if they have the same path,
// even if they have different fragments. // even if they have different fragments.
TEST_F(SiteInstanceTest, IsSameWebSiteForFileURLs) { TEST_F(SiteInstanceTest, IsSameWebSiteForFileURLs) {
TestBrowserContext context;
// Two identical file URLs should be same-site. // Two identical file URLs should be same-site.
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, GURL("file:///foo/bar.html"), EXPECT_TRUE(SiteInstance::IsSameWebSite(
GURL("file:///foo/bar.html"))); &context, GURL("file:///foo/bar.html"), GURL("file:///foo/bar.html")));
// File URLs with the same path but different fragment are considered // File URLs with the same path but different fragment are considered
// same-site. // same-site.
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, GURL("file:///foo/bar.html"), EXPECT_TRUE(SiteInstance::IsSameWebSite(&context,
GURL("file:///foo/bar.html"),
GURL("file:///foo/bar.html#baz"))); GURL("file:///foo/bar.html#baz")));
EXPECT_TRUE(SiteInstance::IsSameWebSite( EXPECT_TRUE(SiteInstance::IsSameWebSite(&context,
nullptr, GURL("file:///foo/bar.html#baz"), GURL("file:///foo/bar.html"))); GURL("file:///foo/bar.html#baz"),
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, GURL("file:///foo/bar.html")));
EXPECT_TRUE(SiteInstance::IsSameWebSite(&context,
GURL("file:///foo/bar.html#baz"), GURL("file:///foo/bar.html#baz"),
GURL("file:///foo/bar.html#qux"))); GURL("file:///foo/bar.html#qux")));
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, GURL("file:///#abc"), EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, GURL("file:///#abc"),
GURL("file:///#def"))); GURL("file:///#def")));
// Other cases are cross-site. // Other cases are cross-site.
EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, GURL("file:///foo.html"), EXPECT_FALSE(SiteInstance::IsSameWebSite(&context, GURL("file:///foo.html"),
GURL("file:///foo/bar.html"))); GURL("file:///foo/bar.html")));
EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, GURL("file:///#bar"), EXPECT_FALSE(SiteInstance::IsSameWebSite(&context, GURL("file:///#bar"),
GURL("file:///foo/#bar"))); GURL("file:///foo/#bar")));
} }
...@@ -833,6 +845,7 @@ TEST_F(SiteInstanceTest, NoProcessPerSiteForEmptySite) { ...@@ -833,6 +845,7 @@ TEST_F(SiteInstanceTest, NoProcessPerSiteForEmptySite) {
// Check that an URL is considered same-site with blob: and filesystem: URLs // Check that an URL is considered same-site with blob: and filesystem: URLs
// with a matching inner origin. See https://crbug.com/726370. // with a matching inner origin. See https://crbug.com/726370.
TEST_F(SiteInstanceTest, IsSameWebsiteForNestedURLs) { TEST_F(SiteInstanceTest, IsSameWebsiteForNestedURLs) {
TestBrowserContext context;
GURL foo_url("http://foo.com/"); GURL foo_url("http://foo.com/");
GURL bar_url("http://bar.com/"); GURL bar_url("http://bar.com/");
GURL blob_foo_url("blob:http://foo.com/uuid"); GURL blob_foo_url("blob:http://foo.com/uuid");
...@@ -840,36 +853,38 @@ TEST_F(SiteInstanceTest, IsSameWebsiteForNestedURLs) { ...@@ -840,36 +853,38 @@ TEST_F(SiteInstanceTest, IsSameWebsiteForNestedURLs) {
GURL fs_foo_url("filesystem:http://foo.com/path/"); GURL fs_foo_url("filesystem:http://foo.com/path/");
GURL fs_bar_url("filesystem:http://bar.com/path/"); GURL fs_bar_url("filesystem:http://bar.com/path/");
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, foo_url, blob_foo_url)); EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, foo_url, blob_foo_url));
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, blob_foo_url, foo_url)); EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, blob_foo_url, foo_url));
EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, foo_url, blob_bar_url)); EXPECT_FALSE(SiteInstance::IsSameWebSite(&context, foo_url, blob_bar_url));
EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, blob_foo_url, bar_url)); EXPECT_FALSE(SiteInstance::IsSameWebSite(&context, blob_foo_url, bar_url));
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, foo_url, fs_foo_url)); EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, foo_url, fs_foo_url));
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, fs_foo_url, foo_url)); EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, fs_foo_url, foo_url));
EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, foo_url, fs_bar_url)); EXPECT_FALSE(SiteInstance::IsSameWebSite(&context, foo_url, fs_bar_url));
EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, fs_foo_url, bar_url)); EXPECT_FALSE(SiteInstance::IsSameWebSite(&context, fs_foo_url, bar_url));
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, blob_foo_url, fs_foo_url)); EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, blob_foo_url, fs_foo_url));
EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, blob_foo_url, fs_bar_url)); EXPECT_FALSE(SiteInstance::IsSameWebSite(&context, blob_foo_url, fs_bar_url));
EXPECT_FALSE( EXPECT_FALSE(
SiteInstance::IsSameWebSite(nullptr, blob_foo_url, blob_bar_url)); SiteInstance::IsSameWebSite(&context, blob_foo_url, blob_bar_url));
EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, fs_foo_url, fs_bar_url)); EXPECT_FALSE(SiteInstance::IsSameWebSite(&context, fs_foo_url, fs_bar_url));
// Verify that the scheme and ETLD+1 are used for comparison. // Verify that the scheme and ETLD+1 are used for comparison.
GURL www_bar_url("http://www.bar.com/"); GURL www_bar_url("http://www.bar.com/");
GURL bar_org_url("http://bar.org/"); GURL bar_org_url("http://bar.org/");
GURL https_bar_url("https://bar.com/"); GURL https_bar_url("https://bar.com/");
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, www_bar_url, bar_url)); EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, www_bar_url, bar_url));
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, www_bar_url, blob_bar_url)); EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, www_bar_url, blob_bar_url));
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, www_bar_url, fs_bar_url)); EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, www_bar_url, fs_bar_url));
EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, bar_org_url, bar_url)); EXPECT_FALSE(SiteInstance::IsSameWebSite(&context, bar_org_url, bar_url));
EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, bar_org_url, blob_bar_url)); EXPECT_FALSE(
EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, bar_org_url, fs_bar_url)); SiteInstance::IsSameWebSite(&context, bar_org_url, blob_bar_url));
EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, https_bar_url, bar_url)); EXPECT_FALSE(SiteInstance::IsSameWebSite(&context, bar_org_url, fs_bar_url));
EXPECT_FALSE(SiteInstance::IsSameWebSite(&context, https_bar_url, bar_url));
EXPECT_FALSE( EXPECT_FALSE(
SiteInstance::IsSameWebSite(nullptr, https_bar_url, blob_bar_url)); SiteInstance::IsSameWebSite(&context, https_bar_url, blob_bar_url));
EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, https_bar_url, fs_bar_url)); EXPECT_FALSE(
SiteInstance::IsSameWebSite(&context, https_bar_url, fs_bar_url));
} }
TEST_F(SiteInstanceTest, IsolatedOrigins) { TEST_F(SiteInstanceTest, IsolatedOrigins) {
...@@ -878,9 +893,10 @@ TEST_F(SiteInstanceTest, IsolatedOrigins) { ...@@ -878,9 +893,10 @@ TEST_F(SiteInstanceTest, IsolatedOrigins) {
GURL isolated_bar_url("http://isolated.bar.com"); GURL isolated_bar_url("http://isolated.bar.com");
auto* policy = ChildProcessSecurityPolicyImpl::GetInstance(); auto* policy = ChildProcessSecurityPolicyImpl::GetInstance();
TestBrowserContext context;
EXPECT_FALSE(policy->IsIsolatedOrigin(url::Origin::Create(isolated_foo_url))); EXPECT_FALSE(policy->IsIsolatedOrigin(url::Origin::Create(isolated_foo_url)));
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, foo_url, isolated_foo_url)); EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, foo_url, isolated_foo_url));
policy->AddIsolatedOrigins({url::Origin::Create(isolated_foo_url)}); policy->AddIsolatedOrigins({url::Origin::Create(isolated_foo_url)});
EXPECT_TRUE(policy->IsIsolatedOrigin(url::Origin::Create(isolated_foo_url))); EXPECT_TRUE(policy->IsIsolatedOrigin(url::Origin::Create(isolated_foo_url)));
...@@ -899,42 +915,44 @@ TEST_F(SiteInstanceTest, IsolatedOrigins) { ...@@ -899,42 +915,44 @@ TEST_F(SiteInstanceTest, IsolatedOrigins) {
// IsSameWebSite should compare origins rather than sites if either URL is an // IsSameWebSite should compare origins rather than sites if either URL is an
// isolated origin. // isolated origin.
EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, foo_url, isolated_foo_url));
EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, isolated_foo_url, foo_url));
EXPECT_FALSE( EXPECT_FALSE(
SiteInstance::IsSameWebSite(nullptr, isolated_foo_url, isolated_bar_url)); SiteInstance::IsSameWebSite(&context, foo_url, isolated_foo_url));
EXPECT_TRUE( EXPECT_FALSE(
SiteInstance::IsSameWebSite(nullptr, isolated_foo_url, isolated_foo_url)); SiteInstance::IsSameWebSite(&context, isolated_foo_url, foo_url));
EXPECT_FALSE(SiteInstance::IsSameWebSite(&context, isolated_foo_url,
isolated_bar_url));
EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, isolated_foo_url,
isolated_foo_url));
// Ensure blob and filesystem URLs with isolated origins are compared // Ensure blob and filesystem URLs with isolated origins are compared
// correctly. // correctly.
GURL isolated_blob_foo_url("blob:http://isolated.foo.com/uuid"); GURL isolated_blob_foo_url("blob:http://isolated.foo.com/uuid");
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, isolated_foo_url, EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, isolated_foo_url,
isolated_blob_foo_url)); isolated_blob_foo_url));
GURL isolated_filesystem_foo_url("filesystem:http://isolated.foo.com/bar/"); GURL isolated_filesystem_foo_url("filesystem:http://isolated.foo.com/bar/");
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, isolated_foo_url, EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, isolated_foo_url,
isolated_filesystem_foo_url)); isolated_filesystem_foo_url));
// The site URL for an isolated origin should be the full origin rather than // The site URL for an isolated origin should be the full origin rather than
// eTLD+1. // eTLD+1.
EXPECT_EQ(isolated_foo_url, EXPECT_EQ(isolated_foo_url,
SiteInstance::GetSiteForURL(nullptr, isolated_foo_url)); SiteInstance::GetSiteForURL(&context, isolated_foo_url));
EXPECT_EQ(isolated_bar_url, EXPECT_EQ(isolated_bar_url,
SiteInstance::GetSiteForURL(nullptr, isolated_bar_url)); SiteInstance::GetSiteForURL(&context, isolated_bar_url));
EXPECT_EQ(isolated_foo_url, EXPECT_EQ(isolated_foo_url,
SiteInstance::GetSiteForURL(nullptr, isolated_blob_foo_url)); SiteInstance::GetSiteForURL(&context, isolated_blob_foo_url));
EXPECT_EQ(isolated_foo_url, EXPECT_EQ(isolated_foo_url,
SiteInstance::GetSiteForURL(nullptr, isolated_filesystem_foo_url)); SiteInstance::GetSiteForURL(&context, isolated_filesystem_foo_url));
// Isolated origins always require a dedicated process. // Isolated origins always require a dedicated process.
EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess( EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess(
nullptr, isolated_foo_url)); &context, isolated_foo_url));
EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess( EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess(
nullptr, isolated_bar_url)); &context, isolated_bar_url));
EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess( EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess(
nullptr, isolated_blob_foo_url)); &context, isolated_blob_foo_url));
EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess( EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess(
nullptr, isolated_filesystem_foo_url)); &context, isolated_filesystem_foo_url));
// Cleanup. // Cleanup.
policy->RemoveIsolatedOriginForTesting(url::Origin::Create(isolated_foo_url)); policy->RemoveIsolatedOriginForTesting(url::Origin::Create(isolated_foo_url));
...@@ -983,6 +1001,7 @@ TEST_F(SiteInstanceTest, SubdomainOnIsolatedSite) { ...@@ -983,6 +1001,7 @@ TEST_F(SiteInstanceTest, SubdomainOnIsolatedSite) {
GURL isolated_url("http://isolated.com"); GURL isolated_url("http://isolated.com");
GURL foo_isolated_url("http://foo.isolated.com"); GURL foo_isolated_url("http://foo.isolated.com");
TestBrowserContext context;
auto* policy = ChildProcessSecurityPolicyImpl::GetInstance(); auto* policy = ChildProcessSecurityPolicyImpl::GetInstance();
policy->AddIsolatedOrigins({url::Origin::Create(isolated_url)}); policy->AddIsolatedOrigins({url::Origin::Create(isolated_url)});
...@@ -1006,15 +1025,15 @@ TEST_F(SiteInstanceTest, SubdomainOnIsolatedSite) { ...@@ -1006,15 +1025,15 @@ TEST_F(SiteInstanceTest, SubdomainOnIsolatedSite) {
// should use the isolated origin's host and not its own host as the site // should use the isolated origin's host and not its own host as the site
// URL. // URL.
EXPECT_EQ(isolated_url, EXPECT_EQ(isolated_url,
SiteInstance::GetSiteForURL(nullptr, foo_isolated_url)); SiteInstance::GetSiteForURL(&context, foo_isolated_url));
EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess( EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess(
nullptr, foo_isolated_url)); &context, foo_isolated_url));
EXPECT_TRUE( EXPECT_TRUE(
SiteInstance::IsSameWebSite(nullptr, isolated_url, foo_isolated_url)); SiteInstance::IsSameWebSite(&context, isolated_url, foo_isolated_url));
EXPECT_TRUE( EXPECT_TRUE(
SiteInstance::IsSameWebSite(nullptr, foo_isolated_url, isolated_url)); SiteInstance::IsSameWebSite(&context, foo_isolated_url, isolated_url));
// Don't try to match subdomains on IP addresses. // Don't try to match subdomains on IP addresses.
GURL isolated_ip("http://127.0.0.1"); GURL isolated_ip("http://127.0.0.1");
...@@ -1033,6 +1052,7 @@ TEST_F(SiteInstanceTest, SubdomainOnIsolatedOrigin) { ...@@ -1033,6 +1052,7 @@ TEST_F(SiteInstanceTest, SubdomainOnIsolatedOrigin) {
GURL bar_isolated_foo_url("http://bar.isolated.foo.com"); GURL bar_isolated_foo_url("http://bar.isolated.foo.com");
GURL baz_isolated_foo_url("http://baz.isolated.foo.com"); GURL baz_isolated_foo_url("http://baz.isolated.foo.com");
TestBrowserContext context;
auto* policy = ChildProcessSecurityPolicyImpl::GetInstance(); auto* policy = ChildProcessSecurityPolicyImpl::GetInstance();
policy->AddIsolatedOrigins({url::Origin::Create(isolated_foo_url)}); policy->AddIsolatedOrigins({url::Origin::Create(isolated_foo_url)});
...@@ -1043,38 +1063,40 @@ TEST_F(SiteInstanceTest, SubdomainOnIsolatedOrigin) { ...@@ -1043,38 +1063,40 @@ TEST_F(SiteInstanceTest, SubdomainOnIsolatedOrigin) {
EXPECT_TRUE( EXPECT_TRUE(
policy->IsIsolatedOrigin(url::Origin::Create(baz_isolated_foo_url))); policy->IsIsolatedOrigin(url::Origin::Create(baz_isolated_foo_url)));
EXPECT_EQ(foo_url, SiteInstance::GetSiteForURL(nullptr, foo_url)); EXPECT_EQ(foo_url, SiteInstance::GetSiteForURL(&context, foo_url));
EXPECT_EQ(isolated_foo_url, EXPECT_EQ(isolated_foo_url,
SiteInstance::GetSiteForURL(nullptr, isolated_foo_url)); SiteInstance::GetSiteForURL(&context, isolated_foo_url));
EXPECT_EQ(isolated_foo_url, EXPECT_EQ(isolated_foo_url,
SiteInstance::GetSiteForURL(nullptr, bar_isolated_foo_url)); SiteInstance::GetSiteForURL(&context, bar_isolated_foo_url));
EXPECT_EQ(isolated_foo_url, EXPECT_EQ(isolated_foo_url,
SiteInstance::GetSiteForURL(nullptr, baz_isolated_foo_url)); SiteInstance::GetSiteForURL(&context, baz_isolated_foo_url));
if (!AreAllSitesIsolatedForTesting()) { if (!AreAllSitesIsolatedForTesting()) {
EXPECT_FALSE( EXPECT_FALSE(
SiteInstanceImpl::DoesSiteRequireDedicatedProcess(nullptr, foo_url)); SiteInstanceImpl::DoesSiteRequireDedicatedProcess(&context, foo_url));
} }
EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess( EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess(
nullptr, isolated_foo_url)); &context, isolated_foo_url));
EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess( EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess(
nullptr, bar_isolated_foo_url)); &context, bar_isolated_foo_url));
EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess( EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess(
nullptr, baz_isolated_foo_url)); &context, baz_isolated_foo_url));
EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, foo_url, isolated_foo_url));
EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, isolated_foo_url, foo_url));
EXPECT_FALSE( EXPECT_FALSE(
SiteInstance::IsSameWebSite(nullptr, foo_url, bar_isolated_foo_url)); SiteInstance::IsSameWebSite(&context, foo_url, isolated_foo_url));
EXPECT_FALSE(
SiteInstance::IsSameWebSite(&context, isolated_foo_url, foo_url));
EXPECT_FALSE(
SiteInstance::IsSameWebSite(&context, foo_url, bar_isolated_foo_url));
EXPECT_FALSE( EXPECT_FALSE(
SiteInstance::IsSameWebSite(nullptr, bar_isolated_foo_url, foo_url)); SiteInstance::IsSameWebSite(&context, bar_isolated_foo_url, foo_url));
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, bar_isolated_foo_url, EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, bar_isolated_foo_url,
isolated_foo_url)); isolated_foo_url));
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, isolated_foo_url, EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, isolated_foo_url,
bar_isolated_foo_url)); bar_isolated_foo_url));
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, bar_isolated_foo_url, EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, bar_isolated_foo_url,
baz_isolated_foo_url)); baz_isolated_foo_url));
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, baz_isolated_foo_url, EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, baz_isolated_foo_url,
bar_isolated_foo_url)); bar_isolated_foo_url));
// Cleanup. // Cleanup.
...@@ -1087,6 +1109,7 @@ TEST_F(SiteInstanceTest, MultipleIsolatedOriginsWithCommonSite) { ...@@ -1087,6 +1109,7 @@ TEST_F(SiteInstanceTest, MultipleIsolatedOriginsWithCommonSite) {
GURL baz_bar_foo_url("http://baz.bar.foo.com"); GURL baz_bar_foo_url("http://baz.bar.foo.com");
GURL qux_baz_bar_foo_url("http://qux.baz.bar.foo.com"); GURL qux_baz_bar_foo_url("http://qux.baz.bar.foo.com");
TestBrowserContext context;
auto* policy = ChildProcessSecurityPolicyImpl::GetInstance(); auto* policy = ChildProcessSecurityPolicyImpl::GetInstance();
policy->AddIsolatedOrigins( policy->AddIsolatedOrigins(
{url::Origin::Create(foo_url), url::Origin::Create(baz_bar_foo_url)}); {url::Origin::Create(foo_url), url::Origin::Create(baz_bar_foo_url)});
...@@ -1097,33 +1120,33 @@ TEST_F(SiteInstanceTest, MultipleIsolatedOriginsWithCommonSite) { ...@@ -1097,33 +1120,33 @@ TEST_F(SiteInstanceTest, MultipleIsolatedOriginsWithCommonSite) {
EXPECT_TRUE( EXPECT_TRUE(
policy->IsIsolatedOrigin(url::Origin::Create(qux_baz_bar_foo_url))); policy->IsIsolatedOrigin(url::Origin::Create(qux_baz_bar_foo_url)));
EXPECT_EQ(foo_url, SiteInstance::GetSiteForURL(nullptr, foo_url)); EXPECT_EQ(foo_url, SiteInstance::GetSiteForURL(&context, foo_url));
EXPECT_EQ(foo_url, SiteInstance::GetSiteForURL(nullptr, bar_foo_url)); EXPECT_EQ(foo_url, SiteInstance::GetSiteForURL(&context, bar_foo_url));
EXPECT_EQ(baz_bar_foo_url, EXPECT_EQ(baz_bar_foo_url,
SiteInstance::GetSiteForURL(nullptr, baz_bar_foo_url)); SiteInstance::GetSiteForURL(&context, baz_bar_foo_url));
EXPECT_EQ(baz_bar_foo_url, EXPECT_EQ(baz_bar_foo_url,
SiteInstance::GetSiteForURL(nullptr, qux_baz_bar_foo_url)); SiteInstance::GetSiteForURL(&context, qux_baz_bar_foo_url));
EXPECT_TRUE( EXPECT_TRUE(
SiteInstanceImpl::DoesSiteRequireDedicatedProcess(nullptr, foo_url)); SiteInstanceImpl::DoesSiteRequireDedicatedProcess(&context, foo_url));
EXPECT_TRUE( EXPECT_TRUE(
SiteInstanceImpl::DoesSiteRequireDedicatedProcess(nullptr, bar_foo_url)); SiteInstanceImpl::DoesSiteRequireDedicatedProcess(&context, bar_foo_url));
EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess( EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess(
nullptr, baz_bar_foo_url)); &context, baz_bar_foo_url));
EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess( EXPECT_TRUE(SiteInstanceImpl::DoesSiteRequireDedicatedProcess(
nullptr, qux_baz_bar_foo_url)); &context, qux_baz_bar_foo_url));
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, foo_url, bar_foo_url)); EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, foo_url, bar_foo_url));
EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, foo_url, baz_bar_foo_url)); EXPECT_FALSE(SiteInstance::IsSameWebSite(&context, foo_url, baz_bar_foo_url));
EXPECT_FALSE( EXPECT_FALSE(
SiteInstance::IsSameWebSite(nullptr, foo_url, qux_baz_bar_foo_url)); SiteInstance::IsSameWebSite(&context, foo_url, qux_baz_bar_foo_url));
EXPECT_FALSE( EXPECT_FALSE(
SiteInstance::IsSameWebSite(nullptr, bar_foo_url, baz_bar_foo_url)); SiteInstance::IsSameWebSite(&context, bar_foo_url, baz_bar_foo_url));
EXPECT_FALSE( EXPECT_FALSE(
SiteInstance::IsSameWebSite(nullptr, bar_foo_url, qux_baz_bar_foo_url)); SiteInstance::IsSameWebSite(&context, bar_foo_url, qux_baz_bar_foo_url));
EXPECT_TRUE(SiteInstance::IsSameWebSite(nullptr, baz_bar_foo_url, EXPECT_TRUE(SiteInstance::IsSameWebSite(&context, baz_bar_foo_url,
qux_baz_bar_foo_url)); qux_baz_bar_foo_url));
// Cleanup. // Cleanup.
......
...@@ -78,6 +78,7 @@ bool ContentBrowserClient::AllowGpuLaunchRetryOnIOThread() { ...@@ -78,6 +78,7 @@ bool ContentBrowserClient::AllowGpuLaunchRetryOnIOThread() {
GURL ContentBrowserClient::GetEffectiveURL(BrowserContext* browser_context, GURL ContentBrowserClient::GetEffectiveURL(BrowserContext* browser_context,
const GURL& url) { const GURL& url) {
DCHECK(browser_context);
return url; return url;
} }
...@@ -87,6 +88,7 @@ bool ContentBrowserClient::ShouldCompareEffectiveURLsForSiteInstanceSelection( ...@@ -87,6 +88,7 @@ bool ContentBrowserClient::ShouldCompareEffectiveURLsForSiteInstanceSelection(
bool is_main_frame, bool is_main_frame,
const GURL& candidate_url, const GURL& candidate_url,
const GURL& destination_url) { const GURL& destination_url) {
DCHECK(browser_context);
return true; return true;
} }
...@@ -96,6 +98,7 @@ bool ContentBrowserClient::ShouldUseMobileFlingCurve() const { ...@@ -96,6 +98,7 @@ bool ContentBrowserClient::ShouldUseMobileFlingCurve() const {
bool ContentBrowserClient::ShouldUseProcessPerSite( bool ContentBrowserClient::ShouldUseProcessPerSite(
BrowserContext* browser_context, const GURL& effective_url) { BrowserContext* browser_context, const GURL& effective_url) {
DCHECK(browser_context);
return false; return false;
} }
...@@ -108,11 +111,13 @@ bool ContentBrowserClient::ShouldUseSpareRenderProcessHost( ...@@ -108,11 +111,13 @@ bool ContentBrowserClient::ShouldUseSpareRenderProcessHost(
bool ContentBrowserClient::DoesSiteRequireDedicatedProcess( bool ContentBrowserClient::DoesSiteRequireDedicatedProcess(
BrowserContext* browser_context, BrowserContext* browser_context,
const GURL& effective_site_url) { const GURL& effective_site_url) {
DCHECK(browser_context);
return false; return false;
} }
bool ContentBrowserClient::ShouldLockToOrigin(BrowserContext* browser_context, bool ContentBrowserClient::ShouldLockToOrigin(BrowserContext* browser_context,
const GURL& effective_url) { const GURL& effective_url) {
DCHECK(browser_context);
return true; return true;
} }
...@@ -165,6 +170,7 @@ bool ContentBrowserClient::ShouldAllowOpenURL(SiteInstance* site_instance, ...@@ -165,6 +170,7 @@ bool ContentBrowserClient::ShouldAllowOpenURL(SiteInstance* site_instance,
bool ContentBrowserClient::IsURLAcceptableForWebUI( bool ContentBrowserClient::IsURLAcceptableForWebUI(
BrowserContext* browser_context, BrowserContext* browser_context,
const GURL& url) { const GURL& url) {
DCHECK(browser_context);
return false; return false;
} }
...@@ -185,6 +191,7 @@ bool ContentBrowserClient::MayReuseHost(RenderProcessHost* process_host) { ...@@ -185,6 +191,7 @@ bool ContentBrowserClient::MayReuseHost(RenderProcessHost* process_host) {
bool ContentBrowserClient::ShouldTryToUseExistingProcessHost( bool ContentBrowserClient::ShouldTryToUseExistingProcessHost(
BrowserContext* browser_context, const GURL& url) { BrowserContext* browser_context, const GURL& url) {
DCHECK(browser_context);
return false; return false;
} }
...@@ -247,6 +254,7 @@ std::string ContentBrowserClient::GetApplicationLocale() { ...@@ -247,6 +254,7 @@ std::string ContentBrowserClient::GetApplicationLocale() {
} }
std::string ContentBrowserClient::GetAcceptLangs(BrowserContext* context) { std::string ContentBrowserClient::GetAcceptLangs(BrowserContext* context) {
DCHECK(context);
return std::string(); return std::string();
} }
...@@ -282,16 +290,20 @@ bool ContentBrowserClient::AllowSharedWorker( ...@@ -282,16 +290,20 @@ bool ContentBrowserClient::AllowSharedWorker(
BrowserContext* context, BrowserContext* context,
int render_process_id, int render_process_id,
int render_frame_id) { int render_frame_id) {
DCHECK(context);
return true; return true;
} }
bool ContentBrowserClient::IsDataSaverEnabled(BrowserContext* context) { bool ContentBrowserClient::IsDataSaverEnabled(BrowserContext* context) {
DCHECK(context);
return false; return false;
} }
void ContentBrowserClient::UpdateRendererPreferencesForWorker( void ContentBrowserClient::UpdateRendererPreferencesForWorker(
BrowserContext* browser_context, BrowserContext* browser_context,
RendererPreferences* out_prefs) {} RendererPreferences* out_prefs) {
// |browser_context| may be null (e.g. during shutdown of a service worker).
}
bool ContentBrowserClient::AllowGetCookie(const GURL& url, bool ContentBrowserClient::AllowGetCookie(const GURL& url,
const GURL& first_party, const GURL& first_party,
...@@ -346,6 +358,7 @@ ContentBrowserClient::AllowWebBluetooth( ...@@ -346,6 +358,7 @@ ContentBrowserClient::AllowWebBluetooth(
content::BrowserContext* browser_context, content::BrowserContext* browser_context,
const url::Origin& requesting_origin, const url::Origin& requesting_origin,
const url::Origin& embedding_origin) { const url::Origin& embedding_origin) {
DCHECK(browser_context);
return AllowWebBluetoothResult::ALLOW; return AllowWebBluetoothResult::ALLOW;
} }
...@@ -361,6 +374,8 @@ void ContentBrowserClient::GetQuotaSettings( ...@@ -361,6 +374,8 @@ void ContentBrowserClient::GetQuotaSettings(
BrowserContext* context, BrowserContext* context,
StoragePartition* partition, StoragePartition* partition,
storage::OptionalQuotaSettingsCallback callback) { storage::OptionalQuotaSettingsCallback callback) {
DCHECK(context);
// By default, no quota is provided, embedders should override. // By default, no quota is provided, embedders should override.
std::move(callback).Run(storage::GetNoQuotaSettings()); std::move(callback).Run(storage::GetNoQuotaSettings());
} }
...@@ -412,12 +427,15 @@ bool ContentBrowserClient::ShouldUseGmsCoreGeolocationProvider() { ...@@ -412,12 +427,15 @@ bool ContentBrowserClient::ShouldUseGmsCoreGeolocationProvider() {
std::string ContentBrowserClient::GetStoragePartitionIdForSite( std::string ContentBrowserClient::GetStoragePartitionIdForSite(
BrowserContext* browser_context, BrowserContext* browser_context,
const GURL& site) { const GURL& site) {
DCHECK(browser_context);
return std::string(); return std::string();
} }
bool ContentBrowserClient::IsValidStoragePartitionId( bool ContentBrowserClient::IsValidStoragePartitionId(
BrowserContext* browser_context, BrowserContext* browser_context,
const std::string& partition_id) { const std::string& partition_id) {
DCHECK(browser_context);
// Since the GetStoragePartitionIdForChildProcess() only generates empty // Since the GetStoragePartitionIdForChildProcess() only generates empty
// strings, we should only ever see empty strings coming back. // strings, we should only ever see empty strings coming back.
return partition_id.empty(); return partition_id.empty();
...@@ -430,6 +448,8 @@ void ContentBrowserClient::GetStoragePartitionConfigForSite( ...@@ -430,6 +448,8 @@ void ContentBrowserClient::GetStoragePartitionConfigForSite(
std::string* partition_domain, std::string* partition_domain,
std::string* partition_name, std::string* partition_name,
bool* in_memory) { bool* in_memory) {
DCHECK(browser_context);
partition_domain->clear(); partition_domain->clear();
partition_name->clear(); partition_name->clear();
*in_memory = false; *in_memory = false;
...@@ -497,17 +517,20 @@ bool ContentBrowserClient::AllowPepperSocketAPI( ...@@ -497,17 +517,20 @@ bool ContentBrowserClient::AllowPepperSocketAPI(
const GURL& url, const GURL& url,
bool private_api, bool private_api,
const SocketPermissionRequest* params) { const SocketPermissionRequest* params) {
DCHECK(browser_context);
return false; return false;
} }
bool ContentBrowserClient::IsPepperVpnProviderAPIAllowed( bool ContentBrowserClient::IsPepperVpnProviderAPIAllowed(
BrowserContext* browser_context, BrowserContext* browser_context,
const GURL& url) { const GURL& url) {
DCHECK(browser_context);
return false; return false;
} }
std::unique_ptr<VpnServiceProxy> ContentBrowserClient::GetVpnServiceProxy( std::unique_ptr<VpnServiceProxy> ContentBrowserClient::GetVpnServiceProxy(
BrowserContext* browser_context) { BrowserContext* browser_context) {
DCHECK(browser_context);
return nullptr; return nullptr;
} }
...@@ -527,17 +550,22 @@ TracingDelegate* ContentBrowserClient::GetTracingDelegate() { ...@@ -527,17 +550,22 @@ TracingDelegate* ContentBrowserClient::GetTracingDelegate() {
bool ContentBrowserClient::IsPluginAllowedToCallRequestOSFileHandle( bool ContentBrowserClient::IsPluginAllowedToCallRequestOSFileHandle(
BrowserContext* browser_context, BrowserContext* browser_context,
const GURL& url) { const GURL& url) {
DCHECK(browser_context);
return false; return false;
} }
bool ContentBrowserClient::IsPluginAllowedToUseDevChannelAPIs( bool ContentBrowserClient::IsPluginAllowedToUseDevChannelAPIs(
BrowserContext* browser_context, BrowserContext* browser_context,
const GURL& url) { const GURL& url) {
// |browser_context| may be null (e.g. when called from
// PpapiPluginProcessHost::PpapiPluginProcessHost).
return false; return false;
} }
std::string ContentBrowserClient::GetServiceUserIdForBrowserContext( std::string ContentBrowserClient::GetServiceUserIdForBrowserContext(
BrowserContext* browser_context) { BrowserContext* browser_context) {
DCHECK(browser_context);
return base::GenerateGUID(); return base::GenerateGUID();
} }
...@@ -564,6 +592,7 @@ void ContentBrowserClient::OpenURL( ...@@ -564,6 +592,7 @@ void ContentBrowserClient::OpenURL(
content::BrowserContext* browser_context, content::BrowserContext* browser_context,
const content::OpenURLParams& params, const content::OpenURLParams& params,
const base::Callback<void(content::WebContents*)>& callback) { const base::Callback<void(content::WebContents*)>& callback) {
DCHECK(browser_context);
callback.Run(nullptr); callback.Run(nullptr);
} }
...@@ -676,6 +705,7 @@ bool ContentBrowserClient::WillCreateURLLoaderFactory( ...@@ -676,6 +705,7 @@ bool ContentBrowserClient::WillCreateURLLoaderFactory(
const url::Origin& request_initiator, const url::Origin& request_initiator,
network::mojom::URLLoaderFactoryRequest* factory_request, network::mojom::URLLoaderFactoryRequest* factory_request,
bool* bypass_redirect_checks) { bool* bypass_redirect_checks) {
DCHECK(browser_context);
return false; return false;
} }
...@@ -698,6 +728,7 @@ network::mojom::NetworkContextPtr ContentBrowserClient::CreateNetworkContext( ...@@ -698,6 +728,7 @@ network::mojom::NetworkContextPtr ContentBrowserClient::CreateNetworkContext(
BrowserContext* context, BrowserContext* context,
bool in_memory, bool in_memory,
const base::FilePath& relative_partition_path) { const base::FilePath& relative_partition_path) {
DCHECK(context);
if (!base::FeatureList::IsEnabled(network::features::kNetworkService)) if (!base::FeatureList::IsEnabled(network::features::kNetworkService))
return nullptr; return nullptr;
...@@ -746,6 +777,7 @@ bool ContentBrowserClient::ShowPaymentHandlerWindow( ...@@ -746,6 +777,7 @@ bool ContentBrowserClient::ShowPaymentHandlerWindow(
content::BrowserContext* browser_context, content::BrowserContext* browser_context,
const GURL& url, const GURL& url,
base::OnceCallback<void(bool, int, int)> callback) { base::OnceCallback<void(bool, int, int)> callback) {
DCHECK(browser_context);
return false; return false;
} }
...@@ -806,7 +838,9 @@ bool ContentBrowserClient::IsSafeRedirectTarget(const GURL& url, ...@@ -806,7 +838,9 @@ bool ContentBrowserClient::IsSafeRedirectTarget(const GURL& url,
void ContentBrowserClient::RegisterRendererPreferenceWatcherForWorkers( void ContentBrowserClient::RegisterRendererPreferenceWatcherForWorkers(
BrowserContext* browser_context, BrowserContext* browser_context,
mojom::RendererPreferenceWatcherPtr watcher) {} mojom::RendererPreferenceWatcherPtr watcher) {
// |browser_context| may be null (e.g. during shutdown of a service worker).
}
base::Optional<std::string> ContentBrowserClient::GetOriginPolicyErrorPage( base::Optional<std::string> ContentBrowserClient::GetOriginPolicyErrorPage(
OriginPolicyErrorReason error_reason, OriginPolicyErrorReason error_reason,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment