Chromium Code Reviews| Index: components/metrics/metrics_reporting_service.h |
| diff --git a/components/metrics/metrics_reporting_service.h b/components/metrics/metrics_reporting_service.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..a98f6648ae6cd21c36e15a77c262897dfe2884db |
| --- /dev/null |
| +++ b/components/metrics/metrics_reporting_service.h |
| @@ -0,0 +1,65 @@ |
| +// 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|, and |
| + // |max_retransmit_size|. Does not take ownership of the parameters; instead |
|
Alexei Svitkine (slow)
2017/03/06 22:15:21
Nit: Update comment since max_retransmit_size isn'
Steven Holte
2017/03/06 22:31:40
Done.
|
| + // 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; |
| + std::string GetUploadUrl() 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 LogResponseCode(int response_code) 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_ |