// Copyright 2014 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_TEST_TEST_METRICS_SERVICE_CLIENT_H_ #define COMPONENTS_METRICS_TEST_TEST_METRICS_SERVICE_CLIENT_H_ #include #include #include #include #include "base/memory/raw_ptr.h" #include "components/metrics/metrics_log_store.h" #include "components/metrics/metrics_log_uploader.h" #include "components/metrics/metrics_service_client.h" #include "components/metrics/test/test_metrics_log_uploader.h" namespace variations { class SyntheticTrialRegistry; } namespace metrics { // A simple concrete implementation of the MetricsServiceClient interface, for // use in tests. class TestMetricsServiceClient : public MetricsServiceClient { public: static const char kBrandForTesting[]; TestMetricsServiceClient(); TestMetricsServiceClient(const TestMetricsServiceClient&) = delete; TestMetricsServiceClient& operator=(const TestMetricsServiceClient&) = delete; ~TestMetricsServiceClient() override; // MetricsServiceClient: variations::SyntheticTrialRegistry* GetSyntheticTrialRegistry() override; metrics::MetricsService* GetMetricsService() override; void SetMetricsClientId(const std::string& client_id) override; bool ShouldUploadMetricsForUserId(uint64_t user_id) override; int32_t GetProduct() override; std::string GetApplicationLocale() override; const network_time::NetworkTimeTracker* GetNetworkTimeTracker() override; bool GetBrand(std::string* brand_code) override; SystemProfileProto::Channel GetChannel() override; bool IsExtendedStableChannel() override; std::string GetVersionString() override; void CollectFinalMetricsForLog(base::OnceClosure done_callback) override; std::unique_ptr CreateUploader( const GURL& server_url, const GURL& insecure_server_url, std::string_view mime_type, MetricsLogUploader::MetricServiceType service_type, const MetricsLogUploader::UploadCallback& on_upload_complete) override; base::TimeDelta GetStandardUploadInterval() override; bool IsReportingPolicyManaged() override; EnableMetricsDefault GetMetricsReportingDefaultState() override; std::string GetAppPackageNameIfLoggable() override; bool ShouldResetClientIdsOnClonedInstall() override; MetricsLogStore::StorageLimits GetStorageLimits() const override; // Adds/removes |user_id| from the set of user ids that have metrics consent // as true. void AllowMetricUploadForUserId(uint64_t user_id); void RemoveMetricUploadForUserId(uint64_t user_id); const std::string& get_client_id() const { return client_id_; } // Returns a weak ref to the last created uploader. TestMetricsLogUploader* uploader() { return uploader_.get(); } void set_version_string(const std::string& str) { version_string_ = str; } void set_product(int32_t product) { product_ = product; } void set_reporting_is_managed(bool managed) { reporting_is_managed_ = managed; } void set_is_extended_stable_channel(bool is_extended_stable_channel) { is_extended_stable_channel_ = is_extended_stable_channel; } void set_enable_default(EnableMetricsDefault enable_default) { enable_default_ = enable_default; } void set_should_reset_client_ids_on_cloned_install(bool state) { should_reset_client_ids_on_cloned_install_ = state; } void set_max_ongoing_log_size_bytes(size_t bytes) { storage_limits_.ongoing_log_queue_limits.max_log_size_bytes = bytes; } void set_min_ongoing_log_queue_count(size_t log_count) { storage_limits_.ongoing_log_queue_limits.min_log_count = log_count; } void set_min_ongoing_log_queue_size_bytes(size_t bytes) { storage_limits_.ongoing_log_queue_limits.min_queue_size_bytes = bytes; } void set_synthetic_trial_registry( variations::SyntheticTrialRegistry* registry) { synthetic_trial_registry_ = registry; } private: std::string client_id_{"0a94430b-18e5-43c8-a657-580f7e855ce1"}; std::string version_string_{"5.0.322.0-64-devel"}; int32_t product_ = ChromeUserMetricsExtension::CHROME; bool reporting_is_managed_ = false; bool is_extended_stable_channel_ = false; EnableMetricsDefault enable_default_ = EnableMetricsDefault::DEFAULT_UNKNOWN; bool should_reset_client_ids_on_cloned_install_ = false; MetricsLogStore::StorageLimits storage_limits_ = MetricsServiceClient::GetStorageLimits(); std::set allowed_user_ids_; raw_ptr synthetic_trial_registry_ = nullptr; // A weak ref to the last created TestMetricsLogUploader. base::WeakPtr uploader_ = nullptr; }; } // namespace metrics #endif // COMPONENTS_METRICS_TEST_TEST_METRICS_SERVICE_CLIENT_H_