// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module network.mojom;
import "mojo/public/mojom/base/unguessable_token.mojom";
import "services/network/public/mojom/schemeful_site.mojom";
// An enumerated value representing whether any frame in the PartitionKey's
// ancestor chain (including the top-level document's site) is cross-site with
// the current frame. These values are persisted to disk. Entries should not
// be renumbered and numeric values should never be reused.
enum AncestorChainBit {
// All frames in the ancestor chain are pairwise same-site.
kSameSite = 0,
// At least one frame in the ancestor chain is cross-site with
// the current frame.
kCrossSite = 1,
};
struct CookiePartitionKey {
SchemefulSite site;
// Indicates the CookiePartitionKey is a placeholder indicating that the
// cookie should be partitioned, but it was created in the renderer so we
// don't know what its partition key is yet.
bool from_script = false;
mojo_base.mojom.UnguessableToken? nonce;
AncestorChainBit ancestor_chain_bit = AncestorChainBit.kCrossSite;
};
struct CookiePartitionKeyCollection {
bool contains_all_partitions = false;
array<CookiePartitionKey> keys;
};