summaryrefslogtreecommitdiffstats
path: root/chromium/net/cookies/site_for_cookies.cc
diff options
context:
space:
mode:
authorTamas Zakor <ztamas@inf.u-szeged.hu>2021-02-09 07:32:37 +0100
committerPeter Varga <pvarga@inf.u-szeged.hu>2021-04-15 10:54:50 +0000
commit6764c29f7c5aaf9ecbe6532f9e2b845604c926a5 (patch)
treef389bd71703e74ad70eb1c15704bf31775270e86 /chromium/net/cookies/site_for_cookies.cc
parent94be4331d0b76b7204eed46e3e6bcf44f8078352 (diff)
Add first_party_url for net::SiteForCookies
This change brings back the behavior when the site for cookies was stored as an URL before Chromium 81. QtWebEngine implementation relies on that becuase it uses SiteForCookies to provide first party url in some cases. The site for cookies url was replaced by net::SiteForCookies in change https://chromium-review.googlesource.com/c/chromium/src/+/1925189 Task-number: QTBUG-90231 Change-Id: Ie1e4be21535a646699b031c3a2ebdb0a19617fc7 Reviewed-by: Florian Bruhin <qt-project.org@the-compiler.org> Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
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