blob: 97bd0dfcb4b57e0c5e22ee6bd7569f81f18a5693 [file] [log] [blame]
// Copyright 2015 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 IOS_CHROME_BROWSER_METRICS_IOS_CHROME_METRICS_SERVICES_MANAGER_CLIENT_H_
#define IOS_CHROME_BROWSER_METRICS_IOS_CHROME_METRICS_SERVICES_MANAGER_CLIENT_H_
#include <memory>
#include "base/macros.h"
#include "base/metrics/field_trial.h"
#include "base/threading/thread_checker.h"
#include "components/metrics_services_manager/metrics_services_manager_client.h"
class PrefService;
namespace metrics {
class EnabledStateProvider;
class MetricsStateManager;
}
// Provides an //ios/chrome-specific implementation of
// MetricsServicesManagerClient.
class IOSChromeMetricsServicesManagerClient
: public metrics_services_manager::MetricsServicesManagerClient {
public:
explicit IOSChromeMetricsServicesManagerClient(PrefService* local_state);
~IOSChromeMetricsServicesManagerClient() override;
private:
// This is defined as a member class to get access to
// IOSChromeMetricsServiceAccessor through
// IOSChromeMetricsServicesManagerClient's friendship.
class IOSChromeEnabledStateProvider;
// metrics_services_manager::MetricsServicesManagerClient:
std::unique_ptr<rappor::RapporServiceImpl> CreateRapporServiceImpl() override;
std::unique_ptr<variations::VariationsService> CreateVariationsService()
override;
std::unique_ptr<metrics::MetricsServiceClient> CreateMetricsServiceClient()
override;
std::unique_ptr<const base::FieldTrial::EntropyProvider>
CreateEntropyProvider() override;
scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override;
bool IsMetricsReportingEnabled() override;
bool IsMetricsConsentGiven() override;
bool IsIncognitoSessionActive() override;
bool IsMetricsReportingForceEnabled() override;
// Gets the MetricsStateManager, creating it if it has not already been
// created.
metrics::MetricsStateManager* GetMetricsStateManager();
// MetricsStateManager which is passed as a parameter to service constructors.
std::unique_ptr<metrics::MetricsStateManager> metrics_state_manager_;
// EnabledStateProvider to communicate if the client has consented to metrics
// reporting, and if it's enabled.
std::unique_ptr<metrics::EnabledStateProvider> enabled_state_provider_;
// Ensures that all functions are called from the same thread.
base::ThreadChecker thread_checker_;
// Weak pointer to the local state prefs store.
PrefService* local_state_;
DISALLOW_COPY_AND_ASSIGN(IOSChromeMetricsServicesManagerClient);
};
#endif // IOS_CHROME_BROWSER_METRICS_IOS_CHROME_METRICS_SERVICES_MANAGER_CLIENT_H_