chromium/chrome/browser/metrics/chrome_metrics_service_accessor.h

// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_METRICS_CHROME_METRICS_SERVICE_ACCESSOR_H_
#define CHROME_BROWSER_METRICS_CHROME_METRICS_SERVICE_ACCESSOR_H_

#include <stdint.h>

#include <string_view>

#include "base/gtest_prod_util.h"
#include "build/chromeos_buildflags.h"
#include "chrome/browser/metrics/metrics_reporting_state.h"
#include "chrome/common/metrics.mojom.h"
#include "components/metrics/metrics_service_accessor.h"
#include "components/variations/synthetic_trials.h"
#include "ppapi/buildflags/buildflags.h"

class BrowserProcessImpl;
class CampaignsManagerClientImpl;
class ChromeMetricsServiceClient;
class ChromePasswordManagerClient;
class ChromeVariationsServiceClient;
class HttpsFirstModeService;
class NavigationMetricsRecorder;
class PrefService;

namespace {
class CrashesDOMHandler;
}

#if BUILDFLAG(IS_CHROMEOS_ASH)
class ChromeCameraAppUIDelegate;

namespace app_list::federated {
class FederatedMetricsManager;
}  // namespace app_list::federated

namespace ash::input_method {
class AutocorrectManager;
}  // namespace ash::input_method
#endif  // BUILDFLAG(IS_CHROMEOS_ASH)

namespace browser_sync {
class ChromeSyncClient;
}

namespace domain_reliability {
bool ShouldCreateService();
}

namespace extensions {
class ChromeGuestViewManagerDelegate;
class ChromeMetricsPrivateDelegate;
}  // namespace extensions

namespace first_run {
class FirstRunMasterPrefsVariationsSeedTest;
}

namespace metrics {
class ChromeOSPerUserMetricsBrowserTestBase;
class UkmConsentParamBrowserTest;
}  // namespace metrics

namespace safe_browsing {
class ChromeSafeBrowsingUIManagerDelegate;
class DownloadUrlSBClient;
class IncidentReportingService;
class ServicesDelegateDesktop;

namespace internal {
class ReporterRunner;
}  // namespace internal
}  // namespace safe_browsing

namespace settings {
class MetricsReportingHandler;
}

namespace segmentation_platform {
class FieldTrialRegisterImpl;
}

namespace feed {
class FeedServiceDelegateImpl;
class WebFeedSubscriptionCoordinator;
}  // namespace feed

namespace browser_sync {
class DeviceInfoSyncClientImpl;
}  // namespace browser_sync

namespace webauthn {
namespace authenticator {
class IsMetricsAndCrashReportingEnabled;
}
}  // namespace webauthn

namespace ash {
class DemoSession;

namespace settings {
class PerSessionSettingsUserActionTracker;
}  // namespace settings
}  // namespace ash

namespace tpcd::experiment {
class ExperimentManagerImpl;
}

namespace readaloud {
class SyntheticTrial;
}

namespace tab_groups {
class TabGroupTrial;
}  // namespace tab_groups

// This class limits and documents access to metrics service helper methods.
// Since these methods are private, each user has to be explicitly declared
// as a 'friend' below.
class ChromeMetricsServiceAccessor : public metrics::MetricsServiceAccessor {};

#endif  // CHROME_BROWSER_METRICS_CHROME_METRICS_SERVICE_ACCESSOR_H_