// Copyright 2014 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;

option java_outer_classname = "HistogramEventProtos";
option java_package = "org.chromium.components.metrics";

package metrics;

// Histogram-collected metrics.
// Next tag: 4
message HistogramEventProto {
  // The name of the histogram, hashed.
  optional fixed64 name_hash = 1;

  // The sum of all the sample values.
  // Together with the total count of the sample values, this allows us to
  // compute the average value.  The count of all sample values is just the sum
  // of the counts of all the buckets.  As of M51, when the value of this field
  // would be 0, the field will be omitted instead.
  optional int64 sum = 2;

  // The per-bucket data.
  message Bucket {
    // Each bucket's range is bounded by min <= x < max.
    // It is valid to omit one of these two fields in a bucket, but not both.
    // If the min field is omitted, its value is assumed to be equal to max - 1.
    // If the max field is omitted, its value is assumed to be equal to the next
    // bucket's min value (possibly computed per above).  The last bucket in a
    // histogram should always include the max field.
    optional int64 min = 1;
    optional int64 max = 2;

    // The bucket's index in the list of buckets, sorted in ascending order.
    // This field was intended to provide extra redundancy to detect corrupted
    // records, but was never used.  As of M31, it is no longer sent by Chrome
    // clients to reduce the UMA upload size.
    optional int32 bucket_index = 3 [deprecated = true];

    // The number of entries in this bucket.  As of M51, when the value of this
    // field would be 1, the field will be omitted instead.
    optional int64 count = 4 [default = 1];
  }
  repeated Bucket bucket = 3;
}
