blob: cba7d5ae464df7d89a1eb861c503b54474231121 [file] [log] [blame]
// Copyright 2016 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.
#ifndef BLIMP_ENGINE_APP_BLIMP_METRICS_SERVICE_CLIENT_H_
#define BLIMP_ENGINE_APP_BLIMP_METRICS_SERVICE_CLIENT_H_
#include <stdint.h>
#include <string>
#include "base/macros.h"
#include "base/memory/ref_counted.h"
#include "components/metrics/enabled_state_provider.h"
#include "components/metrics/metrics_service_client.h"
class PrefService;
namespace metrics {
class MetricsService;
class MetricsStateManager;
class SystemProfileProto;
}
namespace net {
class URLRequestContextGetter;
} // namespace net
namespace blimp {
namespace engine {
// BlimpMetricsServiceClient provides an implementation of MetricsServiceClient
// tailored for the Blimp engine to support the upload of metrics information
// from the engine.
// Metrics are always turned on.
class BlimpMetricsServiceClient : public metrics::MetricsServiceClient,
public metrics::EnabledStateProvider {
public:
// PrefService ownership is retained by the caller.
// The request_context_getter is a system request context.
// Both must remain valid for client lifetime.
BlimpMetricsServiceClient(
PrefService* pref_service,
scoped_refptr<net::URLRequestContextGetter> request_context_getter);
~BlimpMetricsServiceClient() override;
// metrics::MetricsServiceClient implementation.
metrics::MetricsService* GetMetricsService() override;
void SetMetricsClientId(const std::string& client_id) override;
int32_t GetProduct() override;
std::string GetApplicationLocale() override;
bool GetBrand(std::string* brand_code) override;
metrics::SystemProfileProto::Channel GetChannel() override;
std::string GetVersionString() override;
void OnLogUploadComplete() override;
void InitializeSystemProfileMetrics(
const base::Closure& done_callback) override;
void CollectFinalMetricsForLog(const base::Closure& done_callback) override;
std::unique_ptr<metrics::MetricsLogUploader> CreateUploader(
const base::Callback<void(int)>& on_upload_complete) override;
base::TimeDelta GetStandardUploadInterval() override;
metrics::EnableMetricsDefault GetMetricsReportingDefaultState() override;
// metrics::EnabledStateProvider implementation.
// Returns if consent is given for the MetricsService to record metrics
// information for the client. Always true.
bool IsConsentGiven() override;
private:
// Used by NetMetricsLogUploader to create log-upload requests.
scoped_refptr<net::URLRequestContextGetter> request_context_getter_;
std::unique_ptr<metrics::MetricsStateManager> metrics_state_manager_;
std::unique_ptr<metrics::MetricsService> metrics_service_;
DISALLOW_COPY_AND_ASSIGN(BlimpMetricsServiceClient);
};
} // namespace engine
} // namespace blimp
#endif // BLIMP_ENGINE_APP_BLIMP_METRICS_SERVICE_CLIENT_H_