summaryrefslogtreecommitdiffstats
path: root/chromium/net
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/net')
-rw-r--r--chromium/net/cookies/site_for_cookies.cc17
-rw-r--r--chromium/net/cookies/site_for_cookies.h5
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