// Copyright 2020 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. #ifndef NET_COOKIES_COOKIE_ACCESS_RESULT_H_ #define NET_COOKIES_COOKIE_ACCESS_RESULT_H_ #include #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; } 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(car.effective_same_site) << ", " << static_cast(car.access_semantics) << ", " << car.is_allowed_to_access_secure_cookies << " }"; } } // namespace net #endif // NET_COOKIES_COOKIE_ACCESS_RESULT_H_