blob: 74a13a6f7bcc36d1a54bc68e826cbfb19411a05e [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_METRICS_METRICS_DATA_VALIDATION_H_
#define COMPONENTS_METRICS_METRICS_DATA_VALIDATION_H_
#include "base/feature_list.h"
#include "base/time/time.h"
// Features and functions in this file are necessary to set up artificial A / B
// experiments that help us better assess the accuracy and power of our field
// trial data. All code in this file should not have any impact on client's
// experience.
namespace metrics {
// Only used for testing.
namespace internal {
BASE_DECLARE_FEATURE(kPseudoMetricsEffectFeature);
} // namespace internal
// In order to assess if we're able to accurately detect a statistically
// significant difference in our field trial data, we set up pseudo metrics for
// some of our key metrics. Values of these pseudo metrics are the linear
// transformation (ax + b) of real values (x). The multiplicative factor (a) and
// additive factor (b) are controlled by field trial experiments.
//
// Returns the sample value for a pseudo metric given the |sample| from the real
// metric and the assigned field trial group. The input type is double because
// we don't want to lose precision before applying transformation.
double GetPseudoMetricsSample(double sample);
// Returns the TimeDelta for a pseudo metric given the |sample| from the real
// metric and the assigned field trial group. The unit of the additive factor
// (b) is milliseconds.
base::TimeDelta GetPseudoMetricsSample(base::TimeDelta sample);
} // namespace metrics
#endif // COMPONENTS_METRICS_METRICS_DATA_VALIDATION_H_