summaryrefslogtreecommitdiffstats
path: root/chromium/net/cookies/site_for_cookies.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/net/cookies/site_for_cookies.cc')
-rw-r--r--chromium/net/cookies/site_for_cookies.cc17
1 files changed, 16 insertions, 1 deletions
diff --git a/chromium/net/cookies/site_for_cookies.cc b/chromium/net/cookies/site_for_cookies.cc
index 759b4e7a372..2dae84f7038 100644
--- a/chromium/net/cookies/site_for_cookies.cc
+++ b/chromium/net/cookies/site_for_cookies.cc
@@ -37,6 +37,7 @@ SiteForCookies& SiteForCookies::operator=(SiteForCookies&& site_for_cookies) =
bool SiteForCookies::FromWire(const std::string& scheme,
const std::string& registrable_domain,
bool schemefully_same,
+ GURL first_party_url,
SiteForCookies* out) {
// Make sure scheme meets precondition of methods like
// GURL::SchemeIsCryptographic.
@@ -45,6 +46,8 @@ bool SiteForCookies::FromWire(const std::string& scheme,
// registrable_domain_ should also be canonicalized.
SiteForCookies candidate(scheme, registrable_domain);
+ candidate.first_party_url_ = first_party_url;
+
if (registrable_domain != candidate.registrable_domain_)
return false;
@@ -60,7 +63,12 @@ SiteForCookies SiteForCookies::FromOrigin(const url::Origin& origin) {
if (origin.opaque())
return SiteForCookies();
- return SiteForCookies(origin.scheme(), origin.host());
+ SiteForCookies site_for_cookies = SiteForCookies(origin.scheme(), origin.host());
+ if (!origin.GetFullURL().is_empty())
+ site_for_cookies.first_party_url_ = origin.GetFullURL();
+ else
+ site_for_cookies.first_party_url_ = origin.GetURL();
+ return site_for_cookies;
}
// static
@@ -191,4 +199,11 @@ bool SiteForCookies::IsSchemelesslyFirstParty(const GURL& url) const {
return registrable_domain_ == other_registrable_domain;
}
+GURL SiteForCookies::first_party_url() const {
+ if (first_party_url_.is_empty())
+ return RepresentativeUrl();
+
+ return first_party_url_;
+}
+
} // namespace net