// 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 #include "base/memory/scoped_refptr.h" namespace metrics { class MetricsServiceClient; class MetricsStateManager; } namespace network { class SharedURLLoaderFactory; } namespace variations { class VariationsService; } 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. virtual std::unique_ptr CreateVariationsService() = 0; virtual std::unique_ptr CreateMetricsServiceClient() = 0; // Gets the MetricsStateManager, creating it if it has not already been // created. virtual metrics::MetricsStateManager* GetMetricsStateManager() = 0; // Returns the URL loader factory which the metrics services should use. virtual scoped_refptr GetURLLoaderFactory() = 0; // 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 OffTheRecord browsers/tabs open. virtual bool IsOffTheRecordSessionActive() = 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) {} }; } // namespace metrics_services_manager #endif // COMPONENTS_METRICS_SERVICES_MANAGER_METRICS_SERVICES_MANAGER_CLIENT_H_