| Index: content/browser/child_process_security_policy_impl.cc
 | 
| diff --git a/content/browser/child_process_security_policy_impl.cc b/content/browser/child_process_security_policy_impl.cc
 | 
| index e86ccaede0d8cf29f508d71c6a58dbe80844c1c2..21ccb5f2c6a90ef14ab5b9d18e6748bf15a16983 100644
 | 
| --- a/content/browser/child_process_security_policy_impl.cc
 | 
| +++ b/content/browser/child_process_security_policy_impl.cc
 | 
| @@ -167,6 +167,17 @@ class ChildProcessSecurityPolicyImpl::SecurityState {
 | 
|      return false;
 | 
|    }
 | 
|  
 | 
| +  bool CanLoadPage(const GURL& gurl) {
 | 
| +    if (origin_lock_.is_empty())
 | 
| +      return true;
 | 
| +
 | 
| +    // TODO(creis): We must pass the valid browser_context to convert hosted
 | 
| +    // apps URLs.  Currently, hosted apps cannot be loaded in this mode.
 | 
| +    // See http://crbug.com/160576.
 | 
| +    GURL site_gurl = SiteInstanceImpl::GetSiteForURL(NULL, gurl);
 | 
| +    return origin_lock_ == site_gurl;
 | 
| +  }
 | 
| +
 | 
|    bool CanAccessCookiesForOrigin(const GURL& gurl) {
 | 
|      if (origin_lock_.is_empty())
 | 
|        return true;
 | 
| @@ -487,6 +498,27 @@ void ChildProcessSecurityPolicyImpl::RevokeReadRawCookies(int child_id) {
 | 
|    state->second->RevokeReadRawCookies();
 | 
|  }
 | 
|  
 | 
| +bool ChildProcessSecurityPolicyImpl::CanLoadPage(
 | 
| +    int child_id,
 | 
| +    const GURL& url,
 | 
| +    ResourceType::Type resource_type) {
 | 
| +  // If --site-per-process flag is passed, we should enforce
 | 
| +  // stronger security restrictions on page navigation.
 | 
| +  if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kSitePerProcess) &&
 | 
| +      ResourceType::IsFrame(resource_type)) {
 | 
| +    // TODO(irobert): This currently breaks some WebUI page such as
 | 
| +    // "chrome://extensions/" (belongs to site chrome://chrome/) which
 | 
| +    // will load an iframe for the page "chrome://uber-frame/"
 | 
| +    // (belongs to site chrome://uber-frame/).
 | 
| +    base::AutoLock lock(lock_);
 | 
| +    SecurityStateMap::iterator state = security_state_.find(child_id);
 | 
| +    if (state == security_state_.end())
 | 
| +      return false;
 | 
| +    return state->second->CanLoadPage(url);
 | 
| +  }
 | 
| +  return true;
 | 
| +}
 | 
| +
 | 
|  bool ChildProcessSecurityPolicyImpl::CanRequestURL(
 | 
|      int child_id, const GURL& url) {
 | 
|    if (!url.is_valid())
 | 
| 
 |