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

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

Issue 1911573002: Teach SiteInstance::GetSiteForURL() about blob and filesystem URLs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Revert to patch set #4 Created 4 years, 7 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
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 "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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698