/*
 * Copyright (C) 2015 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
//
// Histogram-collected metrics.

syntax = "proto2";

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

package 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.
  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.
    optional int64 count = 4;
  }
  repeated Bucket bucket = 3;
}