| OLD | NEW |
| 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 "content/browser/browsing_instance.h" | 7 #include "content/browser/browsing_instance.h" |
| 8 #include "content/browser/child_process_security_policy_impl.h" | 8 #include "content/browser/child_process_security_policy_impl.h" |
| 9 #include "content/browser/frame_host/debug_urls.h" | 9 #include "content/browser/frame_host/debug_urls.h" |
| 10 #include "content/browser/frame_host/frame_tree_node.h" | 10 #include "content/browser/frame_host/frame_tree_node.h" |
| (...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 327 } | 327 } |
| 328 | 328 |
| 329 // static | 329 // static |
| 330 GURL SiteInstance::GetSiteForURL(BrowserContext* browser_context, | 330 GURL SiteInstance::GetSiteForURL(BrowserContext* browser_context, |
| 331 const GURL& real_url) { | 331 const GURL& real_url) { |
| 332 // TODO(fsamuel, creis): For some reason appID is not recognized as a host. | 332 // TODO(fsamuel, creis): For some reason appID is not recognized as a host. |
| 333 if (real_url.SchemeIs(kGuestScheme)) | 333 if (real_url.SchemeIs(kGuestScheme)) |
| 334 return real_url; | 334 return real_url; |
| 335 | 335 |
| 336 GURL url = SiteInstanceImpl::GetEffectiveURL(browser_context, real_url); | 336 GURL url = SiteInstanceImpl::GetEffectiveURL(browser_context, real_url); |
| 337 url::Origin origin(url); |
| 337 | 338 |
| 338 // If the url has a host, then determine the site. | 339 // If the url has a host, then determine the site. |
| 339 if (url.has_host()) { | 340 if (!origin.host().empty()) { |
| 340 // Only keep the scheme and registered domain as given by GetOrigin. This | 341 // Only keep the scheme and registered domain of |origin|. |
| 341 // may also include a port, which we need to drop. | 342 std::string domain = net::registry_controlled_domains::GetDomainAndRegistry( |
| 342 GURL site = url.GetOrigin(); | 343 origin.host(), |
| 343 | 344 net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES); |
| 344 // Remove port, if any. | 345 std::string site = origin.scheme(); |
| 345 if (site.has_port()) { | 346 site += url::kStandardSchemeSeparator; |
| 346 GURL::Replacements rep; | 347 site += domain.empty() ? origin.host() : domain; |
| 347 rep.ClearPort(); | 348 return GURL(site); |
| 348 site = site.ReplaceComponents(rep); | |
| 349 } | |
| 350 | |
| 351 // If this URL has a registered domain, we only want to remember that part. | |
| 352 std::string domain = | |
| 353 net::registry_controlled_domains::GetDomainAndRegistry( | |
| 354 url, | |
| 355 net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES); | |
| 356 if (!domain.empty()) { | |
| 357 GURL::Replacements rep; | |
| 358 rep.SetHostStr(domain); | |
| 359 site = site.ReplaceComponents(rep); | |
| 360 } | |
| 361 return site; | |
| 362 } | 349 } |
| 363 | 350 |
| 364 // If there is no host but there is a scheme, return the scheme. | 351 // If there is no host but there is a scheme, return the scheme. |
| 365 // This is useful for cases like file URLs. | 352 // This is useful for cases like file URLs. |
| 366 if (url.has_scheme()) | 353 if (url.has_scheme()) |
| 367 return GURL(url.scheme() + ":"); | 354 return GURL(url.scheme() + ":"); |
| 368 | 355 |
| 369 // Otherwise the URL should be invalid; return an empty site. | 356 // Otherwise the URL should be invalid; return an empty site. |
| 370 DCHECK(!url.is_valid()); | 357 DCHECK(!url.is_valid()); |
| 371 return GURL(); | 358 return GURL(); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 442 browsing_instance_->browser_context(), site_)) | 429 browsing_instance_->browser_context(), site_)) |
| 443 return; | 430 return; |
| 444 | 431 |
| 445 ChildProcessSecurityPolicyImpl* policy = | 432 ChildProcessSecurityPolicyImpl* policy = |
| 446 ChildProcessSecurityPolicyImpl::GetInstance(); | 433 ChildProcessSecurityPolicyImpl::GetInstance(); |
| 447 policy->LockToOrigin(process_->GetID(), site_); | 434 policy->LockToOrigin(process_->GetID(), site_); |
| 448 } | 435 } |
| 449 } | 436 } |
| 450 | 437 |
| 451 } // namespace content | 438 } // namespace content |
| OLD | NEW |