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

Side by Side Diff: content/browser/site_instance_impl.cc

Issue 13533007: Test extension reloading behavior. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/site_instance_impl.h" 5 #include "content/browser/site_instance_impl.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "content/browser/browsing_instance.h" 8 #include "content/browser/browsing_instance.h"
9 #include "content/browser/child_process_security_policy_impl.h" 9 #include "content/browser/child_process_security_policy_impl.h"
10 #include "content/browser/renderer_host/render_process_host_impl.h" 10 #include "content/browser/renderer_host/render_process_host_impl.h"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 NotificationService::AllBrowserContextsAndSources()); 49 NotificationService::AllBrowserContextsAndSources());
50 } 50 }
51 51
52 SiteInstanceImpl::~SiteInstanceImpl() { 52 SiteInstanceImpl::~SiteInstanceImpl() {
53 GetContentClient()->browser()->SiteInstanceDeleting(this); 53 GetContentClient()->browser()->SiteInstanceDeleting(this);
54 54
55 // Now that no one is referencing us, we can safely remove ourselves from 55 // Now that no one is referencing us, we can safely remove ourselves from
56 // the BrowsingInstance. Any future visits to a page from this site 56 // the BrowsingInstance. Any future visits to a page from this site
57 // (within the same BrowsingInstance) can safely create a new SiteInstance. 57 // (within the same BrowsingInstance) can safely create a new SiteInstance.
58 if (has_site_) 58 if (has_site_)
59 browsing_instance_->UnregisterSiteInstance( 59 browsing_instance_->UnregisterSiteInstance(this);
60 static_cast<SiteInstance*>(this));
61 } 60 }
62 61
63 int32 SiteInstanceImpl::GetId() { 62 int32 SiteInstanceImpl::GetId() {
64 return id_; 63 return id_;
65 } 64 }
66 65
67 bool SiteInstanceImpl::HasProcess() const { 66 bool SiteInstanceImpl::HasProcess() const {
68 if (process_ != NULL) 67 if (process_ != NULL)
69 return true; 68 return true;
70 69
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 183
185 bool SiteInstanceImpl::HasSite() const { 184 bool SiteInstanceImpl::HasSite() const {
186 return has_site_; 185 return has_site_;
187 } 186 }
188 187
189 bool SiteInstanceImpl::HasRelatedSiteInstance(const GURL& url) { 188 bool SiteInstanceImpl::HasRelatedSiteInstance(const GURL& url) {
190 return browsing_instance_->HasSiteInstance(url); 189 return browsing_instance_->HasSiteInstance(url);
191 } 190 }
192 191
193 SiteInstance* SiteInstanceImpl::GetRelatedSiteInstance(const GURL& url) { 192 SiteInstance* SiteInstanceImpl::GetRelatedSiteInstance(const GURL& url) {
194 return browsing_instance_->GetSiteInstanceForURL(url); 193 SiteInstanceImpl* result = browsing_instance_->GetSiteInstanceForURL(url);
194 if (render_process_host_factory_)
195 result->set_render_process_host_factory(render_process_host_factory_);
196 return result;
195 } 197 }
196 198
197 bool SiteInstanceImpl::IsRelatedSiteInstance(const SiteInstance* instance) { 199 bool SiteInstanceImpl::IsRelatedSiteInstance(const SiteInstance* instance) {
198 return browsing_instance_ == 200 return browsing_instance_ ==
199 static_cast<const SiteInstanceImpl*>(instance)->browsing_instance_; 201 static_cast<const SiteInstanceImpl*>(instance)->browsing_instance_;
200 } 202 }
201 203
202 bool SiteInstanceImpl::HasWrongProcessForURL(const GURL& url) { 204 bool SiteInstanceImpl::HasWrongProcessForURL(const GURL& url) {
203 // Having no process isn't a problem, since we'll assign it correctly. 205 // Having no process isn't a problem, since we'll assign it correctly.
204 // Note that HasProcess() may return true if process_ is null, in 206 // Note that HasProcess() may return true if process_ is null, in
(...skipping 12 matching lines...) Expand all
217 // process is not (or vice versa), make sure we notice and fix it. 219 // process is not (or vice versa), make sure we notice and fix it.
218 GURL site_url = GetSiteForURL(browsing_instance_->browser_context(), url); 220 GURL site_url = GetSiteForURL(browsing_instance_->browser_context(), url);
219 return !RenderProcessHostImpl::IsSuitableHost( 221 return !RenderProcessHostImpl::IsSuitableHost(
220 GetProcess(), browsing_instance_->browser_context(), site_url); 222 GetProcess(), browsing_instance_->browser_context(), site_url);
221 } 223 }
222 224
223 BrowserContext* SiteInstanceImpl::GetBrowserContext() const { 225 BrowserContext* SiteInstanceImpl::GetBrowserContext() const {
224 return browsing_instance_->browser_context(); 226 return browsing_instance_->browser_context();
225 } 227 }
226 228
229 void SiteInstanceImpl::set_render_process_host_factory(
230 const RenderProcessHostFactory* rph_factory) {
231 render_process_host_factory_ = rph_factory;
232 }
233
227 /*static*/ 234 /*static*/
228 SiteInstance* SiteInstance::Create(BrowserContext* browser_context) { 235 SiteInstance* SiteInstance::Create(BrowserContext* browser_context) {
229 return new SiteInstanceImpl(new BrowsingInstance(browser_context)); 236 return new SiteInstanceImpl(new BrowsingInstance(browser_context));
230 } 237 }
231 238
232 /*static*/ 239 /*static*/
233 SiteInstance* SiteInstance::CreateForURL(BrowserContext* browser_context, 240 SiteInstance* SiteInstance::CreateForURL(BrowserContext* browser_context,
234 const GURL& url) { 241 const GURL& url) {
235 // This BrowsingInstance may be deleted if it returns an existing 242 // This BrowsingInstance may be deleted if it returns an existing
236 // SiteInstance. 243 // SiteInstance.
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 337 const CommandLine& command_line = *CommandLine::ForCurrentProcess();
331 if (command_line.HasSwitch(switches::kEnableStrictSiteIsolation) || 338 if (command_line.HasSwitch(switches::kEnableStrictSiteIsolation) ||
332 command_line.HasSwitch(switches::kSitePerProcess)) { 339 command_line.HasSwitch(switches::kSitePerProcess)) {
333 ChildProcessSecurityPolicyImpl* policy = 340 ChildProcessSecurityPolicyImpl* policy =
334 ChildProcessSecurityPolicyImpl::GetInstance(); 341 ChildProcessSecurityPolicyImpl::GetInstance();
335 policy->LockToOrigin(process_->GetID(), site_); 342 policy->LockToOrigin(process_->GetID(), site_);
336 } 343 }
337 } 344 }
338 345
339 } // namespace content 346 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698