blob: fedd5903b025662faba438053e23e7091b287fcb [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_PAGE_BROWSING_CONTEXT_GROUP_INFO_H_
#define THIRD_PARTY_BLINK_PUBLIC_COMMON_PAGE_BROWSING_CONTEXT_GROUP_INFO_H_
#include "base/unguessable_token.h"
#include "third_party/blink/public/common/common_export.h"
#include "mojo/public/cpp/bindings/default_construct_tag.h"
namespace blink {
// Represents the information necessary to put a given Page in a specific
// browsing context group.
struct BLINK_COMMON_EXPORT BrowsingContextGroupInfo {
public:
// Create a BrowsingContextGroupInfo referencing a new, completely independent
// browsing context group, in a new CoopRelatedGroup. This can be used in
// tests or other places where the BrowsingContextGroupInfo is irrelevant,
// and will not trigger COOP: restrict-properties Window restrictions, because
// it does not affect cross-CoopRelatedGroup accesses.
static BrowsingContextGroupInfo CreateUnique();
// Create a BrowsingContextGroupInfo based on the passed in tokens.
BrowsingContextGroupInfo(
const base::UnguessableToken& browsing_context_group_token,
const base::UnguessableToken& coop_related_group_token);
// Mojo serialization constructor.
explicit BrowsingContextGroupInfo(mojo::DefaultConstruct::Tag);
// The token uniquely identifying the browsing context group of the page.
base::UnguessableToken browsing_context_group_token;
// The token uniquely identifying the CoopRelatedGroup of the page.
base::UnguessableToken coop_related_group_token;
};
bool BLINK_COMMON_EXPORT operator==(const BrowsingContextGroupInfo& lhs,
const BrowsingContextGroupInfo& rhs);
bool BLINK_COMMON_EXPORT operator!=(const BrowsingContextGroupInfo& lhs,
const BrowsingContextGroupInfo& rhs);
} // namespace blink
#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_PAGE_BROWSING_CONTEXT_GROUP_INFO_H_