chromium/third_party/blink/public/mojom/aggregation_service/aggregatable_report.mojom

// 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.

module blink.mojom;

import "mojo/public/mojom/base/int128.mojom";

// These types are used in/for constructing AggregatableReports, see
// //content/browser/aggregation_service/aggregatable_report.h.

// Corresponds to the 'alternative aggregation mode' optional setting, but
// also includes the default option (if no alternative is set).
enum AggregationServiceMode {
  // Uses a server-side Trusted Execution Environment (TEE) to process the
  // encrypted payloads, see
  // https://github.com/WICG/attribution-reporting-api/blob/main/AGGREGATION_SERVICE_TEE.md.
  kTeeBased,

  // Implements a protocol similar to poplar VDAF in the PPM Framework, see
  // https://github.com/WICG/attribution-reporting-api/blob/main/AGGREGATE.md#choosing-among-aggregation-services.
  kExperimentalPoplar,

  kDefault = kTeeBased,
};

struct AggregatableReportHistogramContribution {
  mojo_base.mojom.Uint128 bucket;
  int32 value;

  // Null if no filtering ID was explicitly set.
  uint64? filtering_id;
};