xref: /aosp_15_r20/external/cronet/net/cookies/cookie_access_result.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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