1*6777b538SAndroid Build Coastguard Worker // Copyright 2020 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #ifndef COMPONENTS_METRICS_ENTROPY_STATE_PROVIDER_H_ 6*6777b538SAndroid Build Coastguard Worker #define COMPONENTS_METRICS_ENTROPY_STATE_PROVIDER_H_ 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #include "components/metrics/entropy_state.h" 9*6777b538SAndroid Build Coastguard Worker #include "components/metrics/metrics_provider.h" 10*6777b538SAndroid Build Coastguard Worker 11*6777b538SAndroid Build Coastguard Worker class PrefService; 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Worker namespace metrics { 14*6777b538SAndroid Build Coastguard Worker 15*6777b538SAndroid Build Coastguard Worker // EntropyStateProvider adds information about low entropy sources in the system 16*6777b538SAndroid Build Coastguard Worker // profile. This includes |low_entropy_source|, |old_low_entropy_source| and 17*6777b538SAndroid Build Coastguard Worker // |pseudo_low_entropy_source|. 18*6777b538SAndroid Build Coastguard Worker class EntropyStateProvider : public MetricsProvider { 19*6777b538SAndroid Build Coastguard Worker public: 20*6777b538SAndroid Build Coastguard Worker explicit EntropyStateProvider(PrefService* local_state); 21*6777b538SAndroid Build Coastguard Worker ~EntropyStateProvider() override; 22*6777b538SAndroid Build Coastguard Worker 23*6777b538SAndroid Build Coastguard Worker EntropyStateProvider(const EntropyStateProvider&) = delete; 24*6777b538SAndroid Build Coastguard Worker EntropyStateProvider& operator=(const EntropyStateProvider&) = delete; 25*6777b538SAndroid Build Coastguard Worker 26*6777b538SAndroid Build Coastguard Worker // Provides low entropy sources values to system profile in the client's 27*6777b538SAndroid Build Coastguard Worker // report. This function always provides the same low entropy source values 28*6777b538SAndroid Build Coastguard Worker // that are used for randomizing field trials throughout the session. 29*6777b538SAndroid Build Coastguard Worker void ProvideSystemProfileMetrics( 30*6777b538SAndroid Build Coastguard Worker SystemProfileProto* system_profile_proto) override; 31*6777b538SAndroid Build Coastguard Worker 32*6777b538SAndroid Build Coastguard Worker private: 33*6777b538SAndroid Build Coastguard Worker EntropyState entropy_state_; 34*6777b538SAndroid Build Coastguard Worker }; 35*6777b538SAndroid Build Coastguard Worker 36*6777b538SAndroid Build Coastguard Worker } // namespace metrics 37*6777b538SAndroid Build Coastguard Worker 38*6777b538SAndroid Build Coastguard Worker #endif // COMPONENTS_METRICS_ENTROPY_STATE_PROVIDER_H_ 39