chromium/third_party/metrics_proto/ukm/report.proto

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

syntax = "proto2";

option optimize_for = LITE_RUNTIME;
option java_package = "org.chromium.components.metrics";

package ukm;

import "ukm/aggregate.proto";
import "ukm/entry.proto";
import "ukm/source.proto";
import "ukm/web_features.proto";
import "chrome_user_metrics_extension.proto";
import "system_profile.proto";
import "user_demographics.proto";

// This is the message type sent from Chrome to the UKM collector.
// Next tag: 14
message Report {
  // A unique identifier for a Chrome install. This ID should be used only
  // in UKM reports, and not linked to any other data sources.
  optional fixed64 client_id = 1;

  // The product corresponding to this log. Note: The default value is Chrome,
  // so Chrome products will not transmit this field.
  optional metrics.ChromeUserMetricsExtension.Product product = 12
      [default = CHROME];

  // The session id for this record. This id is unique within a
  // particular Chrome session. The client keeps track of the session id
  // and sends it with each record. The session id is simply an integer
  // that is incremented each time the user relaunches Chrome.
  optional int32 session_id = 5;

  // The report id for this record.  Report ids increase sequentially from
  // one within a session.
  optional int32 report_id = 6;

  // Indicates that recording was continuously enabled for the period of time
  // captured in this report.
  optional bool is_continuous = 8;

  enum LogRotationReason {
    UNKNOWN = 0;
    SCHEDULED_ROTATION = 1;
    BACKGROUNDED = 2;
    SHUTDOWN = 3;
  }
  optional LogRotationReason log_rotation_reason = 9;

  // Information about the user's browser and system configuration.
  optional metrics.SystemProfileProto system_profile = 2;

  // The user's demographic information that consists of their noised birth year
  // and gender. This data is made available to Chrome via syncable priority
  // pref, so is only available if the user is signed-in and syncing.
  optional metrics.UserDemographicsProto user_demographics = 11;

  // A list of the top-level navigations that data was collected for.
  repeated Source sources = 3;

  // Counts of different types of sources in this interval, including sources
  // which may not be in the report due to dropping or deferral.
  message SourceCounts {
    // Number of unique sources that URLs were observed for. This counts
    // includes sources which were dropped or deferred, but not sources
    // carried over from a previous interval.
    optional int32 observed = 1;
    // Number of navigation sources that URLs were observed for, including
    // sources dropped due to limits.
    optional int32 navigation_sources = 2;
    // Number of sources discarded due to not matching a navigation URL.
    optional int32 unmatched_sources = 3;
    // Number of sources deferred from a previous interval.
    optional int32 carryover_sources = 4;
    // Number of sources deferred to the next interval. Sources corresponding to
    // opened tabs that could emit more events in the future are kept in memory
    // and deferred to the next interval for inclusion in next reports, up to a
    // max limit on number of sources.
    optional int32 deferred_sources = 5;
    // Number of sources deferred to the next interval due to lack of events.
    optional int32 entryless_sources = 6;
    // Time elapsed in seconds from the moment the newest truncated source was
    // created to the moment it was discarded from memory, if pruning happened
    // due to number of sources exceeding the max threshold.
    optional int32 pruned_sources_age_seconds = 7;
  }
  optional SourceCounts source_counts = 10;

  // List of Entries containing the main UKM data.
  repeated Entry entries = 4;
  // Web features used on pages during this reporting interval.
  repeated HighLevelWebFeatures web_features = 13;
  // List of Entries containing aggregated UKM data.
  repeated Aggregate aggregates = 7;
}