• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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