chromium/chrome/browser/ash/crosapi/test_crosapi_dependency_registry.h

// Copyright 2022 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_ASH_CROSAPI_TEST_CROSAPI_DEPENDENCY_REGISTRY_H_
#define CHROME_BROWSER_ASH_CROSAPI_TEST_CROSAPI_DEPENDENCY_REGISTRY_H_

#include <memory>

#include "chrome/browser/ash/crosapi/crosapi_dependency_registry.h"

namespace crosapi {

class CrosapiManager;

std::unique_ptr<CrosapiManager> CreateCrosapiManagerWithTestRegistry();

// Crosapi dependency registry that should only be used in test.
class TestCrosapiDependencyRegistry : public CrosapiDependencyRegistry {
 public:
  TestCrosapiDependencyRegistry();
  TestCrosapiDependencyRegistry(const TestCrosapiDependencyRegistry&) = delete;
  TestCrosapiDependencyRegistry& operator=(
      const TestCrosapiDependencyRegistry&) = delete;
  ~TestCrosapiDependencyRegistry() override;

  // This creates a MetricsReportingAsh object that does not use the metrics
  // service. It is safe to pass in a nullptr here.
  std::unique_ptr<MetricsReportingAsh> CreateMetricsReportingAsh(
      metrics::MetricsService* /* not_used */) override;
};

}  // namespace crosapi

#endif  // CHROME_BROWSER_ASH_CROSAPI_TEST_CROSAPI_DEPENDENCY_REGISTRY_H_