chromium/services/network/public/mojom/first_party_sets_access_delegate.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 "services/network/public/mojom/first_party_sets.mojom";
import "services/network/public/mojom/schemeful_site.mojom";

// Lives in the network service and controlled by the browser process to
// access First-Party Sets for each network context.
interface FirstPartySetsAccessDelegate {
  // Signals to the receiver that the given network context has completed
  // its initialization related to First-Party Sets, and the delegate
  // should begin answering queries.
  //
  // This method is expected to be called at least once upon the completion of
  // First-Party Sets initialization, and is expected to be called after each
  // time `SetEnabled` is used to enable the delegate.
  NotifyReady(FirstPartySetsReadyEvent ready_event);

  // Signals to the receiver that the browser_context that this network context
  // is associated with has changed the state of the First-Party Sets enabled
  // setting (either by user action or enterprise update).
  //
  // There is no limit on when or how often this method is called.
  SetEnabled(bool enabled);
};

struct FirstPartySetsAccessDelegateParams {
  // Whether First-Party Sets is enabled for this network context.
  bool enabled;
};

struct FirstPartySetsReadyEvent {
  // The config to override the public First-Party Sets owned
  // by the network service for the network context.
  //
  FirstPartySetsContextConfig config;

  // The config to filter cache access for the purpose of "clearing cache".
  FirstPartySetsCacheFilter cache_filter;
};