1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- // Copyright 2019 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "services/network/cookie_access_delegate_impl.h"
- #include <set>
- #include "base/callback_forward.h"
- #include "base/containers/flat_map.h"
- #include "base/containers/flat_set.h"
- #include "net/base/schemeful_site.h"
- #include "net/cookies/cookie_constants.h"
- #include "net/cookies/cookie_util.h"
- #include "net/cookies/first_party_set_metadata.h"
- #include "services/network/public/cpp/is_potentially_trustworthy.h"
- #include "third_party/abseil-cpp/absl/types/optional.h"
- namespace network {
- CookieAccessDelegateImpl::CookieAccessDelegateImpl(
- mojom::CookieAccessDelegateType type,
- FirstPartySetsAccessDelegate* const first_party_sets_access_delegate,
- const CookieSettings* cookie_settings)
- : type_(type),
- cookie_settings_(cookie_settings),
- first_party_sets_access_delegate_(first_party_sets_access_delegate) {
- if (type == mojom::CookieAccessDelegateType::USE_CONTENT_SETTINGS) {
- DCHECK(cookie_settings);
- }
- }
- CookieAccessDelegateImpl::~CookieAccessDelegateImpl() = default;
- bool CookieAccessDelegateImpl::ShouldTreatUrlAsTrustworthy(
- const GURL& url) const {
- return IsUrlPotentiallyTrustworthy(url);
- }
- net::CookieAccessSemantics CookieAccessDelegateImpl::GetAccessSemantics(
- const net::CanonicalCookie& cookie) const {
- switch (type_) {
- case mojom::CookieAccessDelegateType::ALWAYS_LEGACY:
- return net::CookieAccessSemantics::LEGACY;
- case mojom::CookieAccessDelegateType::ALWAYS_NONLEGACY:
- return net::CookieAccessSemantics::NONLEGACY;
- case mojom::CookieAccessDelegateType::USE_CONTENT_SETTINGS:
- return cookie_settings_->GetCookieAccessSemanticsForDomain(
- cookie.Domain());
- }
- }
- bool CookieAccessDelegateImpl::ShouldIgnoreSameSiteRestrictions(
- const GURL& url,
- const net::SiteForCookies& site_for_cookies) const {
- if (cookie_settings_) {
- return cookie_settings_->ShouldIgnoreSameSiteRestrictions(url,
- site_for_cookies);
- }
- return false;
- }
- absl::optional<net::FirstPartySetMetadata>
- CookieAccessDelegateImpl::ComputeFirstPartySetMetadataMaybeAsync(
- const net::SchemefulSite& site,
- const net::SchemefulSite* top_frame_site,
- const std::set<net::SchemefulSite>& party_context,
- base::OnceCallback<void(net::FirstPartySetMetadata)> callback) const {
- if (!first_party_sets_access_delegate_)
- return {net::FirstPartySetMetadata()};
- return first_party_sets_access_delegate_->ComputeMetadata(
- site, top_frame_site, party_context, std::move(callback));
- }
- absl::optional<FirstPartySetsAccessDelegate::OwnersResult>
- CookieAccessDelegateImpl::FindFirstPartySetOwners(
- const base::flat_set<net::SchemefulSite>& sites,
- base::OnceCallback<void(FirstPartySetsAccessDelegate::OwnersResult)>
- callback) const {
- if (!first_party_sets_access_delegate_)
- return {{}};
- return first_party_sets_access_delegate_->FindOwners(sites,
- std::move(callback));
- }
- } // namespace network
|