chromium/chrome/browser/ash/game_mode/testing/game_mode_controller_test_base.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_GAME_MODE_TESTING_GAME_MODE_CONTROLLER_TEST_BASE_H_
#define CHROME_BROWSER_ASH_GAME_MODE_TESTING_GAME_MODE_CONTROLLER_TEST_BASE_H_

#include <memory>

#include "base/memory/raw_ptr.h"
#include "base/test/metrics/histogram_tester.h"
#include "chrome/test/base/chrome_ash_test_base.h"
#include "chrome/test/base/testing_profile.h"
#include "chromeos/ash/components/dbus/resourced/fake_resourced_client.h"
#include "chromeos/ash/components/game_mode/game_mode_controller.h"
#include "content/public/test/browser_task_environment.h"

namespace game_mode {

// Test base for all game mode types (e.g. Borealis, ARC).
class GameModeControllerTestBase : public ChromeAshTestBase {
 public:
  GameModeControllerTestBase()
      : ChromeAshTestBase(std::unique_ptr<base::test::TaskEnvironment>(
            std::make_unique<content::BrowserTaskEnvironment>(
                base::test::TaskEnvironment::TimeSource::MOCK_TIME))) {}

 protected:
  void SetUp() override;
  void TearDown() override;

  std::unique_ptr<TestingProfile> profile_;
  std::unique_ptr<GameModeController> game_mode_controller_;
  raw_ptr<ash::FakeResourcedClient, DanglingUntriaged> fake_resourced_client_;
  std::unique_ptr<base::HistogramTester> histogram_tester_;
};

}  // namespace game_mode

#endif  // CHROME_BROWSER_ASH_GAME_MODE_TESTING_GAME_MODE_CONTROLLER_TEST_BASE_H_