chromium/third_party/blink/public/mojom/permissions_policy/permissions_policy.mojom

// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

module blink.mojom;

import "third_party/blink/public/mojom/permissions_policy/permissions_policy_feature.mojom";
import "url/mojom/origin.mojom";

// This struct mirrors network.mojom.CSPSource, but excludes members not used
// in permissions policies like `path`.
struct OriginWithPossibleWildcards {
  string scheme;
  string host;
  int32 port = -1;
  bool is_host_wildcard = false;
  bool is_port_wildcard = false;
};

// This struct holds permissions policy allowlist data that needs to be replicated
// between a RenderFrame and any of its associated RenderFrameProxies. A list of
// these form a ParsedPermissionsPolicy.
// NOTE: These types are used for replication frame state between processes.
struct ParsedPermissionsPolicyDeclaration {
  PermissionsPolicyFeature feature;
  array<OriginWithPossibleWildcards> allowed_origins;
  url.mojom.Origin? self_if_matches;
  bool matches_all_origins;
  bool matches_opaque_src;
  string? reporting_endpoint;
};