Chromium Code Reviews| Index: content/browser/site_instance_impl.cc |
| diff --git a/content/browser/site_instance_impl.cc b/content/browser/site_instance_impl.cc |
| index 0e47c20885ad4e5e8b7396062cf192290c32b3fb..8ed1a7d28e8d64d523d28cfd880a6fdb2e4f2824 100644 |
| --- a/content/browser/site_instance_impl.cc |
| +++ b/content/browser/site_instance_impl.cc |
| @@ -211,6 +211,10 @@ bool SiteInstanceImpl::HasWrongProcessForURL(const GURL& url) { |
| if (IsRendererDebugURL(url)) |
| return false; |
| + // Any process can host an about:blank URL. |
| + if (url == url::kAboutBlankURL) |
|
alexmos
2017/06/12 17:35:07
Several tests (like DumpAccessibilityTreeTest.Acce
Charlie Reis
2017/06/12 23:08:17
This makes me a bit nervous. In other places, we'
alexmos
2017/06/14 22:39:05
This is a bit tricky. Just to clarify, my intent
Charlie Reis
2017/06/17 23:13:53
Interesting points. I think you're right that we
alexmos
2017/06/19 20:03:58
Comment added - please let me know if it's helpful
Charlie Reis
2017/06/28 00:08:37
Thanks-- that works!
|
| + return false; |
| + |
| // If the site URL is an extension (e.g., for hosted apps or WebUI) but the |
| // process is not (or vice versa), make sure we notice and fix it. |
| GURL site_url = GetSiteForURL(browsing_instance_->browser_context(), url); |
| @@ -454,6 +458,18 @@ void SiteInstanceImpl::LockToOrigin() { |
| ChildProcessSecurityPolicyImpl::GetInstance(); |
| policy->LockToOrigin(process_->GetID(), site_); |
| } |
| + |
| + // From now on, this process should be considered "tainted" for future |
| + // process reuse decisions: |
| + // (1) If |site_| required a dedicated process, this SiteInstance's process |
| + // can only host URLs for the same site. |
| + // (2) Even if |site_| does not require a dedicated process, this |
| + // SiteInstance's process still cannot be reused to host other sites |
| + // requiring dedicated sites in the future. |
| + // We can get here either when we commit a URL into a SiteInstance that does |
| + // not yet have a site, or when we create a process for a SiteInstance with a |
| + // predetermined site. |
| + process_->UnsetCanBecomeDedicatedProcess(); |
|
Charlie Reis
2017/06/12 23:08:17
I found it confusing that this was inside "LockToO
alexmos
2017/06/14 22:39:05
Great questions, and I agree with your concerns.
alexmos
2017/06/15 16:40:54
Hmm, the trybots show that this wasn't as straight
alexmos
2017/06/15 17:27:58
I've just uploaded the fix (PS8), which is essenti
|
| } |
| } // namespace content |