// Copyright 2019 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_DEMOGRAPHICS_DEMOGRAPHIC_METRICS_TEST_UTILS_H_ #define COMPONENTS_METRICS_DEMOGRAPHICS_DEMOGRAPHIC_METRICS_TEST_UTILS_H_ #include <memory> #include "base/memory/weak_ptr.h" #include "base/time/time.h" #include "components/metrics/metrics_log_store.h" #include "components/metrics/metrics_service.h" #include "components/network_time/network_time_tracker.h" #include "components/prefs/pref_service.h" #include "components/sync/test/fake_server.h" #include "third_party/metrics_proto/chrome_user_metrics_extension.pb.h" #include "third_party/metrics_proto/user_demographics.pb.h" // Helpers to support testing the reporting of user demographic metrics in // browser tests. namespace metrics { namespace test { // Parameters for the parameterized tests. struct DemographicsTestParams { … }; // Adds the User Demographic priority pref to the sync |fake_server|, which // contains the synced test user's raw, i.e. un-noised, |birth_year| and // |gender|. void AddUserBirthYearAndGenderToSyncServer( base::WeakPtr<fake_server::FakeServer> fake_server, int birth_year, UserDemographicsProto::Gender gender); // Updates the network time to approximately |now|. void UpdateNetworkTime(const base::Time& now, network_time::NetworkTimeTracker* time_tracker); // Returns the maximum eligible birth year for the given time. The returned year // is inclusive; i.e. years <= the returned year are eligible. In order to // compute the synced test user's age, the network time should have already been // set to |now|. int GetMaximumEligibleBirthYear(const base::Time& now); // Gets the noised birth year of the user, where the |raw_birth_year| // is the true birth year, pre-noise, and |local_state| is the service with the // user's noise pref. This function should be run only after a // DemographicMetricsProvider has provided user demographics to a report. int GetNoisedBirthYear(const PrefService* local_state, int raw_birth_year); // If data are available, creates an UMA log and stores it in the // MetricsService's MetricsLogStore. void BuildAndStoreLog(MetricsService* metrics_service); // Returns true if |metrics_service|'s log store has logs to send. bool HasUnsentLogs(MetricsService* metrics_service); // Returns an UMA log if the MetricsService has a staged log. std::unique_ptr<ChromeUserMetricsExtension> GetLastUmaLog( MetricsService* metrics_service); } // namespace test } // namespace metrics #endif // COMPONENTS_METRICS_DEMOGRAPHICS_DEMOGRAPHIC_METRICS_TEST_UTILS_H_