// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_METRICS_PERF_COLLECTION_PARAMS_H_
#define CHROME_BROWSER_METRICS_PERF_COLLECTION_PARAMS_H_
#include <stdint.h>
#include "base/time/time.h"
namespace metrics {
// Define parameters for a collection trigger.
struct TriggerParams {
// Trigger profile collection with 1/|sampling_factor| probability.
int64_t sampling_factor = 1;
// Upper bound of a random delay added before collection on a trigger event.
// The delay is uniformly chosen between 0 and this value.
base::TimeDelta max_collection_delay;
};
// Defines collection parameters for metric collectors. Each collection trigger
// has its own set of parameters.
struct CollectionParams {
CollectionParams();
// Time a profile is collected for, where it makes sense.
base::TimeDelta collection_duration;
// For PERIODIC_COLLECTION, partition time since login into successive
// intervals of this duration. In each interval, a random time is picked to
// collect a profile.
base::TimeDelta periodic_interval;
// Parameters for other collection triggers.
TriggerParams resume_from_suspend;
TriggerParams restore_session;
};
} // namespace metrics
#endif // CHROME_BROWSER_METRICS_PERF_COLLECTION_PARAMS_H_