chromium/services/network/public/mojom/network_anonymization_key.mojom

// 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";

// Used to represent an empty `net::NetworkAnonymizationKey`.
struct EmptyNetworkAnonymizationKey {
};

struct NonEmptyNetworkAnonymizationKey {
  SchemefulSite top_frame_site;
  bool is_cross_site;

  mojo_base.mojom.UnguessableToken? nonce;
};

// Mapped to `net::NetworkAnonymizationKey`.
union NetworkAnonymizationKey {
  EmptyNetworkAnonymizationKey empty;
  NonEmptyNetworkAnonymizationKey non_empty;
};