| // 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 metrics logs to a server. | 
 |  | 
 | #ifndef COMPONENTS_METRICS_METRICS_REPORTING_SERVICE_H_ | 
 | #define COMPONENTS_METRICS_METRICS_REPORTING_SERVICE_H_ | 
 |  | 
 | #include <stdint.h> | 
 |  | 
 | #include <string> | 
 |  | 
 | #include "base/macros.h" | 
 | #include "components/metrics/metrics_log_store.h" | 
 | #include "components/metrics/reporting_service.h" | 
 |  | 
 | class PrefService; | 
 | class PrefRegistrySimple; | 
 |  | 
 | namespace metrics { | 
 |  | 
 | class MetricsServiceClient; | 
 |  | 
 | // MetricsReportingService is concrete implementation of ReportingService for | 
 | // UMA logs. It uses a MetricsLogStore as its LogStore, reports to the UMA | 
 | // endpoint, and logs some histograms with the UMA prefix. | 
 | class MetricsReportingService : public ReportingService { | 
 |  public: | 
 |   // Creates a ReportingService with the given |client|, |local_state|. | 
 |   // Does not take ownership of the parameters; instead it stores a weak | 
 |   // pointer to each. Caller should ensure that the parameters are valid for | 
 |   // the lifetime of this class. | 
 |   MetricsReportingService(MetricsServiceClient* client, | 
 |                           PrefService* local_state); | 
 |   ~MetricsReportingService() override; | 
 |  | 
 |   MetricsLogStore* metrics_log_store() { return &metrics_log_store_; } | 
 |   const MetricsLogStore* metrics_log_store() const { | 
 |     return &metrics_log_store_; | 
 |   } | 
 |  | 
 |   // Registers local state prefs used by this class. | 
 |   static void RegisterPrefs(PrefRegistrySimple* registry); | 
 |  | 
 |  private: | 
 |   // ReportingService: | 
 |   LogStore* log_store() override; | 
 |   GURL GetUploadUrl() const override; | 
 |   GURL GetInsecureUploadUrl() const override; | 
 |   base::StringPiece upload_mime_type() const override; | 
 |   MetricsLogUploader::MetricServiceType service_type() const override; | 
 |   void LogActualUploadInterval(base::TimeDelta interval) 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; | 
 |  | 
 |   MetricsLogStore metrics_log_store_; | 
 |  | 
 |   DISALLOW_COPY_AND_ASSIGN(MetricsReportingService); | 
 | }; | 
 |  | 
 | }  // namespace metrics | 
 |  | 
 | #endif  // COMPONENTS_METRICS_METRICS_REPORTING_SERVICE_H_ |