| // Copyright 2020 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef NET_COOKIES_COOKIE_ACCESS_RESULT_H_ |
| #define NET_COOKIES_COOKIE_ACCESS_RESULT_H_ |
| |
| #include <ostream> |
| |
| #include "net/base/net_export.h" |
| #include "net/cookies/cookie_constants.h" |
| #include "net/cookies/cookie_inclusion_status.h" |
| |
| namespace net { |
| |
| struct NET_EXPORT CookieAccessResult { |
| // Creating a CookieAccessResult with out any parameters will create a |
| // CookieInclusionStatus that has no exclusion reasons, therefore |
| // indicates inclusion. |
| CookieAccessResult(); |
| CookieAccessResult(CookieEffectiveSameSite effective_same_site, |
| CookieInclusionStatus status, |
| CookieAccessSemantics access_semantics, |
| bool is_allowed_to_access_secure_cookie); |
| |
| explicit CookieAccessResult(CookieInclusionStatus status); |
| |
| CookieAccessResult(const CookieAccessResult& cookie_access_result); |
| |
| CookieAccessResult& operator=(const CookieAccessResult& cookie_access_result); |
| |
| CookieAccessResult(CookieAccessResult&& cookie_access_result); |
| |
| ~CookieAccessResult(); |
| |
| bool operator==(const CookieAccessResult& other) const { |
| return status == other.status && |
| effective_same_site == other.effective_same_site && |
| access_semantics == other.access_semantics && |
| is_allowed_to_access_secure_cookies == |
| other.is_allowed_to_access_secure_cookies; |
| } |
| |
| bool operator<(const CookieAccessResult& other) const { |
| return std::tie(status, effective_same_site, access_semantics, |
| is_allowed_to_access_secure_cookies) < |
| std::tie(other.status, other.effective_same_site, |
| other.access_semantics, |
| other.is_allowed_to_access_secure_cookies); |
| } |
| |
| CookieInclusionStatus status; |
| CookieEffectiveSameSite effective_same_site = |
| CookieEffectiveSameSite::UNDEFINED; |
| CookieAccessSemantics access_semantics = CookieAccessSemantics::UNKNOWN; |
| // Whether access to Secure cookies should be allowed. This is expected to be |
| // set based on the scheme of the source URL. |
| bool is_allowed_to_access_secure_cookies = false; |
| }; |
| |
| // Provided to allow gtest to create more helpful error messages, instead of |
| // printing hex. |
| inline void PrintTo(const CookieAccessResult& car, std::ostream* os) { |
| *os << "{ { "; |
| PrintTo(car.status, os); |
| *os << " }, " << static_cast<int>(car.effective_same_site) << ", " |
| << static_cast<int>(car.access_semantics) << ", " |
| << car.is_allowed_to_access_secure_cookies << " }"; |
| } |
| |
| } // namespace net |
| |
| #endif // NET_COOKIES_COOKIE_ACCESS_RESULT_H_ |