Commit 716f3f80 authored by cfredric's avatar cfredric Committed by Chromium LUCI CQ

Expose set-querying functions via the CookieAccessDelegate.

These functions will eventually be used to compute SameParty-ness by the
SameParty cookie implementation.

Bug: 1143756
Change-Id: Ib9ac724c4a3d6053c0ed6886e8dc0acdefc050f8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2586148
Commit-Queue: Chris Fredrickson <cfredric@chromium.org>
Auto-Submit: Chris Fredrickson <cfredric@chromium.org>
Reviewed-by: default avatarLily Chen <chlily@chromium.org>
Reviewed-by: default avatarMaksim Orlovich <morlovich@chromium.org>
Cr-Commit-Position: refs/heads/master@{#836805}
parent d8b071f6
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
namespace net { namespace net {
class SchemefulSite;
class SiteForCookies; class SiteForCookies;
class NET_EXPORT CookieAccessDelegate { class NET_EXPORT CookieAccessDelegate {
...@@ -36,6 +37,17 @@ class NET_EXPORT CookieAccessDelegate { ...@@ -36,6 +37,17 @@ class NET_EXPORT CookieAccessDelegate {
const GURL& url, const GURL& url,
const SiteForCookies& site_for_cookies) const = 0; const SiteForCookies& site_for_cookies) const = 0;
// Returns whether `site` is same-party with `party_context` and
// `top_frame_site`.
virtual bool IsContextSamePartyWithSite(
const net::SchemefulSite& site,
const net::SchemefulSite& top_frame_site,
const std::set<net::SchemefulSite>& party_context) const = 0;
// Returns whether `site` belongs to a non-singleton First-Party Set.
virtual bool IsInNontrivialFirstPartySet(
const net::SchemefulSite& site) const = 0;
private: private:
DISALLOW_COPY_AND_ASSIGN(CookieAccessDelegate); DISALLOW_COPY_AND_ASSIGN(CookieAccessDelegate);
}; };
......
...@@ -32,6 +32,18 @@ bool TestCookieAccessDelegate::ShouldIgnoreSameSiteRestrictions( ...@@ -32,6 +32,18 @@ bool TestCookieAccessDelegate::ShouldIgnoreSameSiteRestrictions(
return true; return true;
} }
bool TestCookieAccessDelegate::IsContextSamePartyWithSite(
const net::SchemefulSite& site,
const net::SchemefulSite& top_frame_site,
const std::set<net::SchemefulSite>& party_context) const {
return false;
}
bool TestCookieAccessDelegate::IsInNontrivialFirstPartySet(
const net::SchemefulSite& site) const {
return false;
}
void TestCookieAccessDelegate::SetExpectationForCookieDomain( void TestCookieAccessDelegate::SetExpectationForCookieDomain(
const std::string& cookie_domain, const std::string& cookie_domain,
CookieAccessSemantics access_semantics) { CookieAccessSemantics access_semantics) {
......
...@@ -26,6 +26,12 @@ class TestCookieAccessDelegate : public CookieAccessDelegate { ...@@ -26,6 +26,12 @@ class TestCookieAccessDelegate : public CookieAccessDelegate {
bool ShouldIgnoreSameSiteRestrictions( bool ShouldIgnoreSameSiteRestrictions(
const GURL& url, const GURL& url,
const SiteForCookies& site_for_cookies) const override; const SiteForCookies& site_for_cookies) const override;
bool IsContextSamePartyWithSite(
const net::SchemefulSite& site,
const net::SchemefulSite& top_frame_site,
const std::set<net::SchemefulSite>& party_context) const override;
bool IsInNontrivialFirstPartySet(
const net::SchemefulSite& site) const override;
// Sets the expected return value for any cookie whose Domain // Sets the expected return value for any cookie whose Domain
// matches |cookie_domain|. Pass the value of |cookie.Domain()| and any // matches |cookie_domain|. Pass the value of |cookie.Domain()| and any
......
...@@ -14,8 +14,9 @@ CookieAccessDelegateImpl::CookieAccessDelegateImpl( ...@@ -14,8 +14,9 @@ CookieAccessDelegateImpl::CookieAccessDelegateImpl(
mojom::CookieAccessDelegateType type, mojom::CookieAccessDelegateType type,
const FirstPartySets* first_party_sets, const FirstPartySets* first_party_sets,
const CookieSettings* cookie_settings) const CookieSettings* cookie_settings)
: type_(type), cookie_settings_(cookie_settings) { : type_(type),
// TODO(crbug.com/1143756): Save and use the FirstPartySets. cookie_settings_(cookie_settings),
first_party_sets_(first_party_sets) {
if (type == mojom::CookieAccessDelegateType::USE_CONTENT_SETTINGS) { if (type == mojom::CookieAccessDelegateType::USE_CONTENT_SETTINGS) {
DCHECK(cookie_settings); DCHECK(cookie_settings);
} }
...@@ -51,4 +52,18 @@ bool CookieAccessDelegateImpl::ShouldIgnoreSameSiteRestrictions( ...@@ -51,4 +52,18 @@ bool CookieAccessDelegateImpl::ShouldIgnoreSameSiteRestrictions(
return false; return false;
} }
bool CookieAccessDelegateImpl::IsContextSamePartyWithSite(
const net::SchemefulSite& site,
const net::SchemefulSite& top_frame_site,
const std::set<net::SchemefulSite>& party_context) const {
return first_party_sets_ && first_party_sets_->IsContextSamePartyWithSite(
site, top_frame_site, party_context);
}
bool CookieAccessDelegateImpl::IsInNontrivialFirstPartySet(
const net::SchemefulSite& site) const {
return first_party_sets_ &&
first_party_sets_->IsInNontrivialFirstPartySet(site);
}
} // namespace network } // namespace network
...@@ -11,6 +11,11 @@ ...@@ -11,6 +11,11 @@
#include "services/network/public/mojom/cookie_manager.mojom.h" #include "services/network/public/mojom/cookie_manager.mojom.h"
#include "url/gurl.h" #include "url/gurl.h"
namespace net {
class CanonicalCookie;
class SchemefulSite;
} // namespace net
namespace network { namespace network {
class FirstPartySets; class FirstPartySets;
...@@ -40,10 +45,17 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) CookieAccessDelegateImpl ...@@ -40,10 +45,17 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) CookieAccessDelegateImpl
bool ShouldIgnoreSameSiteRestrictions( bool ShouldIgnoreSameSiteRestrictions(
const GURL& url, const GURL& url,
const net::SiteForCookies& site_for_cookies) const override; const net::SiteForCookies& site_for_cookies) const override;
bool IsContextSamePartyWithSite(
const net::SchemefulSite& site,
const net::SchemefulSite& top_frame_site,
const std::set<net::SchemefulSite>& party_context) const override;
bool IsInNontrivialFirstPartySet(
const net::SchemefulSite& site) const override;
private: private:
const mojom::CookieAccessDelegateType type_; const mojom::CookieAccessDelegateType type_;
const CookieSettings* const cookie_settings_; const CookieSettings* const cookie_settings_;
const FirstPartySets* const first_party_sets_;
}; };
} // namespace network } // namespace network
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment