blob: adb37307b23cdfb983030a038bbecd7ccbb2fa7b [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 COMPONENTS_METRICS_SERVICES_MANAGER_METRICS_SERVICES_MANAGER_CLIENT_H_
#define COMPONENTS_METRICS_SERVICES_MANAGER_METRICS_SERVICES_MANAGER_CLIENT_H_
#include <memory>
#include "base/callback_forward.h"
#include "base/metrics/field_trial.h"
namespace metrics {
class MetricsServiceClient;
}
#if !defined(STARBOARD)
namespace network {
class SharedURLLoaderFactory;
}
namespace rappor {
class RapporServiceImpl;
}
namespace variations {
class VariationsService;
}
#endif
namespace metrics_services_manager {
// MetricsServicesManagerClient is an interface that allows
// MetricsServicesManager to interact with its embedder.
class MetricsServicesManagerClient {
public:
virtual ~MetricsServicesManagerClient() {}
// Methods that create the various services in the context of the embedder.
#if !defined(STARBOARD)
virtual std::unique_ptr<rappor::RapporServiceImpl>
CreateRapporServiceImpl() = 0;
virtual std::unique_ptr<variations::VariationsService>
CreateVariationsService() = 0;
#endif
virtual std::unique_ptr<metrics::MetricsServiceClient>
CreateMetricsServiceClient() = 0;
virtual std::unique_ptr<const base::FieldTrial::EntropyProvider>
CreateEntropyProvider() = 0;
#if !defined(STARBOARD)
// Returns the URL loader factory which the metrics services should use.
virtual scoped_refptr<network::SharedURLLoaderFactory>
GetURLLoaderFactory() = 0;
#endif
// Returns whether metrics reporting is enabled.
virtual bool IsMetricsReportingEnabled() = 0;
// Returns whether metrics consent is given.
virtual bool IsMetricsConsentGiven() = 0;
// Returns whether there are any Incognito browsers/tabs open.
virtual bool IsIncognitoSessionActive() = 0;
// Update the running state of metrics services managed by the embedder, for
// example, crash reporting.
virtual void UpdateRunningServices(bool may_record, bool may_upload) {}
// If the user has forced metrics collection on via the override flag.
virtual bool IsMetricsReportingForceEnabled();
};
} // namespace metrics_services_manager
#endif // COMPONENTS_METRICS_SERVICES_MANAGER_METRICS_SERVICES_MANAGER_CLIENT_H_