12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- // 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.
- #ifndef COMPONENTS_METRICS_FIELD_TRIALS_PROVIDER_H_
- #define COMPONENTS_METRICS_FIELD_TRIALS_PROVIDER_H_
- #include "base/memory/raw_ptr.h"
- #include "base/strings/string_piece.h"
- #include "base/time/time.h"
- #include "components/metrics/metrics_provider.h"
- #include "third_party/metrics_proto/chrome_user_metrics_extension.pb.h"
- // TODO(crbug/507665): Once MetricsProvider/SystemProfileProto are moved into
- // //services/metrics, then //components/variations can depend on them, and
- // this should be moved there.
- namespace variations {
- class SyntheticTrialRegistry;
- struct ActiveGroupId;
- class FieldTrialsProvider : public metrics::MetricsProvider {
- public:
- // |registry| must outlive this metrics provider.
- FieldTrialsProvider(SyntheticTrialRegistry* registry,
- base::StringPiece suffix);
- FieldTrialsProvider(const FieldTrialsProvider&) = delete;
- FieldTrialsProvider& operator=(const FieldTrialsProvider&) = delete;
- ~FieldTrialsProvider() override;
- // metrics::MetricsProvider:
- void ProvideSystemProfileMetrics(
- metrics::SystemProfileProto* system_profile_proto) override;
- void ProvideSystemProfileMetricsWithLogCreationTime(
- base::TimeTicks log_creation_time,
- metrics::SystemProfileProto* system_profile_proto) override;
- void ProvideCurrentSessionData(
- metrics::ChromeUserMetricsExtension* uma_proto) override;
- // Sets |log_creation_time_| to |time|.
- void SetLogCreationTimeForTesting(base::TimeTicks time);
- private:
- // Populates |field_trial_ids| with currently active field trials groups. The
- // trial and group names are suffixed with |suffix_| before being hashed.
- void GetFieldTrialIds(std::vector<ActiveGroupId>* field_trial_ids) const;
- // Gets active FieldTrials and SyntheticFieldTrials and populates
- // |system_profile_proto| with them.
- void GetAndWriteFieldTrials(
- metrics::SystemProfileProto* system_profile_proto) const;
- // The most recent time passed to
- // ProvideSystemProfileMetricsWithLogCreationTime().
- base::TimeTicks log_creation_time_;
- raw_ptr<SyntheticTrialRegistry> registry_;
- // Suffix used for the field trial names before they are hashed for uploads.
- std::string suffix_;
- };
- } // namespace variations
- #endif // COMPONENTS_METRICS_FIELD_TRIALS_PROVIDER_H_
|