1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
   85
   86
   87
   88
   89
   90
   91
   92
   93
   94
   95
   96
   97
   98
   99
  100
  101
  102
  103
  104

content / browser / attribution_reporting / attribution_reporting.proto [blame]

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

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

package content.proto;

message AttributionAggregationKey {
  optional uint64 high_bits = 1;
  optional uint64 low_bits = 2;
}

message AttributionAggregatableSource {
  map<string, AttributionAggregationKey> keys = 1;
}

message AttributionFilterValues {
  repeated string values = 1;
}

// Proto equivalent of `blink::mojom::AttributionData`.
message AttributionFilterData {
  map<string, AttributionFilterValues> filter_values = 1;
}

message TriggerData {
  repeated uint32 trigger_data = 1;
}

// Eventually will migrate other non indexed source fields into this proto.
message AttributionReadOnlySourceData {
  // Must be non-negative.
  optional int32 max_event_level_reports = 1;
  // Stored as microseconds offset from the source's registration time.
  optional int64 event_level_report_window_start_time = 2;
  // Stored as microseconds offset from the source's registration time.
  repeated int64 event_level_report_window_end_times = 3;
  // Value can only be between 0 and 1.
  optional double randomized_response_rate = 4;

  enum TriggerDataMatching {
    MODULUS = 0;
    EXACT = 1;
  };

  optional TriggerDataMatching trigger_data_matching = 5;

  optional bool cookie_based_debug_allowed = 6;

  optional double event_level_epsilon = 7;

  // If absent, will be deserialized using the defaults for the source type.
  optional TriggerData trigger_data = 8;

  optional AttributionAggregationKey aggregatable_debug_key_piece = 9;
}

message AttributionEventLevelMetadata {
  optional uint32 trigger_data = 1;
  optional int64 priority = 2;
}

message AttributionCommonAggregatableMetadata {
  enum SourceRegistrationTimeConfig {
    INCLUDE = 0;
    EXCLUDE = 1;
  }

  optional SourceRegistrationTimeConfig source_registration_time_config = 3;
  optional string coordinator_origin = 4;
  optional string trigger_context_id = 5;
  optional uint32 filtering_id_max_bytes = 6;

  reserved 1, 2;
  reserved "coordinator";
}

message AttributionAggregatableMetadata {
  optional AttributionCommonAggregatableMetadata common_data = 1;

  message Contribution {
    optional AttributionAggregationKey key = 1;
    optional uint32 value = 2;
    optional uint64 filtering_id = 3;
  }
  repeated Contribution contributions = 2;
}

message AttributionNullAggregatableMetadata {
  optional AttributionCommonAggregatableMetadata common_data = 1;
  // Stored as microseconds since the Windows epoch (1601-01-01 00:00:00 UTC).
  optional int64 fake_source_time = 2;
}

message AttributionScopesData {
  repeated string scopes = 1;
  // Must be positive.
  optional uint32 scope_limit = 2;
  // Must be positive.
  optional uint32 max_event_states = 3;
}