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 @@
namespace net {
class SchemefulSite;
class SiteForCookies;
class NET_EXPORT CookieAccessDelegate {
......@@ -36,6 +37,17 @@ class NET_EXPORT CookieAccessDelegate {
const GURL& url,
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:
DISALLOW_COPY_AND_ASSIGN(CookieAccessDelegate);
};
......
......@@ -32,6 +32,18 @@ bool TestCookieAccessDelegate::ShouldIgnoreSameSiteRestrictions(
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(
const std::string& cookie_domain,
CookieAccessSemantics access_semantics) {
......
......@@ -26,6 +26,12 @@ class TestCookieAccessDelegate : public CookieAccessDelegate {
bool ShouldIgnoreSameSiteRestrictions(
const GURL& url,
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
// matches |cookie_domain|. Pass the value of |cookie.Domain()| and any
......
......@@ -14,8 +14,9 @@ CookieAccessDelegateImpl::CookieAccessDelegateImpl(
mojom::CookieAccessDelegateType type,
const FirstPartySets* first_party_sets,
const CookieSettings* cookie_settings)
: type_(type), cookie_settings_(cookie_settings) {
// TODO(crbug.com/1143756): Save and use the FirstPartySets.
: type_(type),
cookie_settings_(cookie_settings),
first_party_sets_(first_party_sets) {
if (type == mojom::CookieAccessDelegateType::USE_CONTENT_SETTINGS) {
DCHECK(cookie_settings);
}
......@@ -51,4 +52,18 @@ bool CookieAccessDelegateImpl::ShouldIgnoreSameSiteRestrictions(
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
......@@ -11,6 +11,11 @@
#include "services/network/public/mojom/cookie_manager.mojom.h"
#include "url/gurl.h"
namespace net {
class CanonicalCookie;
class SchemefulSite;
} // namespace net
namespace network {
class FirstPartySets;
......@@ -40,10 +45,17 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) CookieAccessDelegateImpl
bool ShouldIgnoreSameSiteRestrictions(
const GURL& url,
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:
const mojom::CookieAccessDelegateType type_;
const CookieSettings* const cookie_settings_;
const FirstPartySets* const first_party_sets_;
};
} // 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