unplugged-system/external/cronet/net/first_party_sets/same_party_context.h

52 lines
1.7 KiB
C++

// Copyright 2021 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_FIRST_PARTY_SETS_SAME_PARTY_CONTEXT_H_
#define NET_FIRST_PARTY_SETS_SAME_PARTY_CONTEXT_H_
#include <ostream>
#include "net/base/net_export.h"
namespace net {
// This struct bundles together a few different notions of same-party-ness.
// `context_type()` gives the notion of same-party-ness that Chromium should use
// in all cases except metrics; other accessors are just for metrics purposes,
// to explore the impact of different definitions of "same-party".
class NET_EXPORT SamePartyContext {
public:
// Computed for every cookie access attempt but is only relevant for SameParty
// cookies.
enum class Type {
// The opposite to kSameParty. Should be the default value.
kCrossParty = 0,
// If the request URL is in the same First-Party Sets as the top-frame site
// and each member of the isolation_info.party_context.
kSameParty = 1,
};
SamePartyContext() = default;
explicit SamePartyContext(Type context_type);
bool operator==(const SamePartyContext& other) const;
// How trusted is the current browser environment when it comes to accessing
// SameParty cookies. Default is not trusted, e.g. kCrossParty.
Type context_type() const { return context_type_; }
// Creates a SamePartyContext that is as permissive as possible.
static SamePartyContext MakeInclusive();
private:
Type context_type_ = Type::kCrossParty;
};
NET_EXPORT std::ostream& operator<<(std::ostream& os,
const SamePartyContext& spc);
} // namespace net
#endif // NET_FIRST_PARTY_SETS_SAME_PARTY_CONTEXT_H_