1 // Copyright 2022 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "net/first_party_sets/first_party_set_metadata.h"
6
7 #include <tuple>
8
9 #include "base/types/optional_util.h"
10 #include "net/first_party_sets/first_party_set_entry.h"
11
12 namespace net {
13
14 FirstPartySetMetadata::FirstPartySetMetadata() = default;
FirstPartySetMetadata(const SamePartyContext & context,const FirstPartySetEntry * frame_entry,const FirstPartySetEntry * top_frame_entry)15 FirstPartySetMetadata::FirstPartySetMetadata(
16 const SamePartyContext& context,
17 const FirstPartySetEntry* frame_entry,
18 const FirstPartySetEntry* top_frame_entry)
19 : context_(context),
20 frame_entry_(base::OptionalFromPtr(frame_entry)),
21 top_frame_entry_(base::OptionalFromPtr(top_frame_entry)) {}
22
23 FirstPartySetMetadata::FirstPartySetMetadata(FirstPartySetMetadata&&) = default;
24 FirstPartySetMetadata& FirstPartySetMetadata::operator=(
25 FirstPartySetMetadata&&) = default;
26
27 FirstPartySetMetadata::~FirstPartySetMetadata() = default;
28
operator ==(const FirstPartySetMetadata & other) const29 bool FirstPartySetMetadata::operator==(
30 const FirstPartySetMetadata& other) const {
31 return std::tie(context_, frame_entry_, top_frame_entry_) ==
32 std::tie(other.context_, other.frame_entry_, other.top_frame_entry_);
33 }
34
operator !=(const FirstPartySetMetadata & other) const35 bool FirstPartySetMetadata::operator!=(
36 const FirstPartySetMetadata& other) const {
37 return !(*this == other);
38 }
39
operator <<(std::ostream & os,const FirstPartySetMetadata & metadata)40 std::ostream& operator<<(std::ostream& os,
41 const FirstPartySetMetadata& metadata) {
42 os << "{" << metadata.context() << ", "
43 << base::OptionalToPtr(metadata.frame_entry()) << ", "
44 << base::OptionalToPtr(metadata.top_frame_entry()) << "}";
45 return os;
46 }
47
AreSitesInSameFirstPartySet() const48 bool FirstPartySetMetadata::AreSitesInSameFirstPartySet() const {
49 if (!frame_entry_ || !top_frame_entry_)
50 return false;
51 return frame_entry_->primary() == top_frame_entry_->primary();
52 }
53
54 } // namespace net
55