// Copyright 2017 The Chromium Authors. All rights reserved.
// 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 ukm;

import "ukm/aggregate.proto";
import "ukm/entry.proto";
import "ukm/source.proto";
import "system_profile.proto";

// This is the message type sent from Chrome to the UKM collector.
// Next tag: 11
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 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 continously 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;

  // 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 due to lack of events.
    optional int32 deferred_sources = 5;
  }
  optional SourceCounts source_counts = 10;

  // List of Entries containing the main UKM data.
  repeated Entry entries = 4;

  // List of Entries containing aggregated UKM data.
  repeated Aggregate aggregates = 7;
}
