// 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. // This file defines a service that sends ukm logs to a server. #ifndef COMPONENTS_UKM_UKM_REPORTING_SERVICE_H_ #define COMPONENTS_UKM_UKM_REPORTING_SERVICE_H_ #include #include #include "base/macros.h" #include "components/metrics/persisted_logs.h" #include "components/metrics/reporting_service.h" class PrefService; class PrefRegistrySimple; namespace metrics { class MetricsServiceClient; } namespace ukm { // A service that uploads logs to the UKM server. class UkmReportingService : public metrics::ReportingService { public: // Creates the UkmReportingService with the given |client|, and // |local_state|. Does not take ownership of the paramaters; instead stores // a weak pointer to each. Caller should ensure that the parameters are valid // for the lifetime of this class. UkmReportingService(metrics::MetricsServiceClient* client, PrefService* local_state); ~UkmReportingService() override; // At startup, prefs needs to be called with a list of all the pref names and // types we'll be using. static void RegisterPrefs(PrefRegistrySimple* registry); metrics::PersistedLogs* ukm_log_store() { return &persisted_logs_; } const metrics::PersistedLogs* ukm_log_store() const { return &persisted_logs_; } private: // metrics:ReportingService: metrics::LogStore* log_store() override; std::string GetUploadUrl() const override; // Returns an empty string since retrying over HTTP is not enabled for UKM std::string GetInsecureUploadUrl() const override; base::StringPiece upload_mime_type() const override; metrics::MetricsLogUploader::MetricServiceType service_type() const override; void LogCellularConstraint(bool upload_canceled) override; void LogResponseOrErrorCode(int response_code, int error_code, bool was_https) override; void LogSuccess(size_t log_size) override; void LogLargeRejection(size_t log_size) override; metrics::PersistedLogs persisted_logs_; DISALLOW_COPY_AND_ASSIGN(UkmReportingService); }; } // namespace ukm #endif // COMPONENTS_UKM_UKM_REPORTING_SERVICE_H_