diff options
Diffstat (limited to 'chromium/net')
-rw-r--r-- | chromium/net/cookies/site_for_cookies.cc | 17 | ||||
-rw-r--r-- | chromium/net/cookies/site_for_cookies.h | 5 |
2 files changed, 21 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 diff --git a/chromium/net/cookies/site_for_cookies.h b/chromium/net/cookies/site_for_cookies.h index 0de33fabeba..be8a29f0523 100644 --- a/chromium/net/cookies/site_for_cookies.h +++ b/chromium/net/cookies/site_for_cookies.h @@ -52,6 +52,7 @@ class NET_EXPORT SiteForCookies { static bool FromWire(const std::string& scheme, const std::string& registrable_domain, bool schemefully_same, + GURL first_party_url, SiteForCookies* out); // If the origin is opaque, returns SiteForCookies that matches nothing. @@ -112,6 +113,8 @@ class NET_EXPORT SiteForCookies { const std::string& registrable_domain() const { return registrable_domain_; } + GURL first_party_url() const; + // Used for serialization/deserialization. This value is irrelevant if // IsNull() is true. bool schemefully_same() const { return schemefully_same_; } @@ -162,6 +165,8 @@ class NET_EXPORT SiteForCookies { // irrelevant (For tests this value can also be modified by // SetSchemefullySameForTesting()). bool schemefully_same_; + + GURL first_party_url_; }; } // namespace net |