diff options
author | Tamas Zakor <ztamas@inf.u-szeged.hu> | 2021-02-09 07:32:37 +0100 |
---|---|---|
committer | Peter Varga <pvarga@inf.u-szeged.hu> | 2021-04-15 10:54:50 +0000 |
commit | 6764c29f7c5aaf9ecbe6532f9e2b845604c926a5 (patch) | |
tree | f389bd71703e74ad70eb1c15704bf31775270e86 /chromium/net/cookies/site_for_cookies.cc | |
parent | 94be4331d0b76b7204eed46e3e6bcf44f8078352 (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.cc | 17 |
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 |