1*6777b538SAndroid Build Coastguard Worker // Copyright 2020 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker
5*6777b538SAndroid Build Coastguard Worker #ifndef NET_COOKIES_COOKIE_ACCESS_RESULT_H_
6*6777b538SAndroid Build Coastguard Worker #define NET_COOKIES_COOKIE_ACCESS_RESULT_H_
7*6777b538SAndroid Build Coastguard Worker
8*6777b538SAndroid Build Coastguard Worker #include <ostream>
9*6777b538SAndroid Build Coastguard Worker
10*6777b538SAndroid Build Coastguard Worker #include "net/base/net_export.h"
11*6777b538SAndroid Build Coastguard Worker #include "net/cookies/cookie_constants.h"
12*6777b538SAndroid Build Coastguard Worker #include "net/cookies/cookie_inclusion_status.h"
13*6777b538SAndroid Build Coastguard Worker
14*6777b538SAndroid Build Coastguard Worker namespace net {
15*6777b538SAndroid Build Coastguard Worker
16*6777b538SAndroid Build Coastguard Worker struct NET_EXPORT CookieAccessResult {
17*6777b538SAndroid Build Coastguard Worker // Creating a CookieAccessResult with out any parameters will create a
18*6777b538SAndroid Build Coastguard Worker // CookieInclusionStatus that has no exclusion reasons, therefore
19*6777b538SAndroid Build Coastguard Worker // indicates inclusion.
20*6777b538SAndroid Build Coastguard Worker CookieAccessResult();
21*6777b538SAndroid Build Coastguard Worker CookieAccessResult(CookieEffectiveSameSite effective_same_site,
22*6777b538SAndroid Build Coastguard Worker CookieInclusionStatus status,
23*6777b538SAndroid Build Coastguard Worker CookieAccessSemantics access_semantics,
24*6777b538SAndroid Build Coastguard Worker bool is_allowed_to_access_secure_cookie);
25*6777b538SAndroid Build Coastguard Worker
26*6777b538SAndroid Build Coastguard Worker explicit CookieAccessResult(CookieInclusionStatus status);
27*6777b538SAndroid Build Coastguard Worker
28*6777b538SAndroid Build Coastguard Worker CookieAccessResult(const CookieAccessResult& cookie_access_result);
29*6777b538SAndroid Build Coastguard Worker
30*6777b538SAndroid Build Coastguard Worker CookieAccessResult& operator=(const CookieAccessResult& cookie_access_result);
31*6777b538SAndroid Build Coastguard Worker
32*6777b538SAndroid Build Coastguard Worker CookieAccessResult(CookieAccessResult&& cookie_access_result);
33*6777b538SAndroid Build Coastguard Worker
34*6777b538SAndroid Build Coastguard Worker ~CookieAccessResult();
35*6777b538SAndroid Build Coastguard Worker
36*6777b538SAndroid Build Coastguard Worker bool operator==(const CookieAccessResult& other) const {
37*6777b538SAndroid Build Coastguard Worker return status == other.status &&
38*6777b538SAndroid Build Coastguard Worker effective_same_site == other.effective_same_site &&
39*6777b538SAndroid Build Coastguard Worker access_semantics == other.access_semantics &&
40*6777b538SAndroid Build Coastguard Worker is_allowed_to_access_secure_cookies ==
41*6777b538SAndroid Build Coastguard Worker other.is_allowed_to_access_secure_cookies;
42*6777b538SAndroid Build Coastguard Worker }
43*6777b538SAndroid Build Coastguard Worker
44*6777b538SAndroid Build Coastguard Worker bool operator<(const CookieAccessResult& other) const {
45*6777b538SAndroid Build Coastguard Worker return std::tie(status, effective_same_site, access_semantics,
46*6777b538SAndroid Build Coastguard Worker is_allowed_to_access_secure_cookies) <
47*6777b538SAndroid Build Coastguard Worker std::tie(other.status, other.effective_same_site,
48*6777b538SAndroid Build Coastguard Worker other.access_semantics,
49*6777b538SAndroid Build Coastguard Worker other.is_allowed_to_access_secure_cookies);
50*6777b538SAndroid Build Coastguard Worker }
51*6777b538SAndroid Build Coastguard Worker
52*6777b538SAndroid Build Coastguard Worker CookieInclusionStatus status;
53*6777b538SAndroid Build Coastguard Worker CookieEffectiveSameSite effective_same_site =
54*6777b538SAndroid Build Coastguard Worker CookieEffectiveSameSite::UNDEFINED;
55*6777b538SAndroid Build Coastguard Worker CookieAccessSemantics access_semantics = CookieAccessSemantics::UNKNOWN;
56*6777b538SAndroid Build Coastguard Worker // Whether access to Secure cookies should be allowed. This is expected to be
57*6777b538SAndroid Build Coastguard Worker // set based on the scheme of the source URL.
58*6777b538SAndroid Build Coastguard Worker bool is_allowed_to_access_secure_cookies = false;
59*6777b538SAndroid Build Coastguard Worker };
60*6777b538SAndroid Build Coastguard Worker
61*6777b538SAndroid Build Coastguard Worker // Provided to allow gtest to create more helpful error messages, instead of
62*6777b538SAndroid Build Coastguard Worker // printing hex.
PrintTo(const CookieAccessResult & car,std::ostream * os)63*6777b538SAndroid Build Coastguard Worker inline void PrintTo(const CookieAccessResult& car, std::ostream* os) {
64*6777b538SAndroid Build Coastguard Worker *os << "{ { ";
65*6777b538SAndroid Build Coastguard Worker PrintTo(car.status, os);
66*6777b538SAndroid Build Coastguard Worker *os << " }, " << static_cast<int>(car.effective_same_site) << ", "
67*6777b538SAndroid Build Coastguard Worker << static_cast<int>(car.access_semantics) << ", "
68*6777b538SAndroid Build Coastguard Worker << car.is_allowed_to_access_secure_cookies << " }";
69*6777b538SAndroid Build Coastguard Worker }
70*6777b538SAndroid Build Coastguard Worker
71*6777b538SAndroid Build Coastguard Worker } // namespace net
72*6777b538SAndroid Build Coastguard Worker
73*6777b538SAndroid Build Coastguard Worker #endif // NET_COOKIES_COOKIE_ACCESS_RESULT_H_
74