chromium/chrome/browser/ash/borealis/borealis_service_impl.h

// Copyright 2020 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_BOREALIS_BOREALIS_SERVICE_IMPL_H_
#define CHROME_BROWSER_ASH_BOREALIS_BOREALIS_SERVICE_IMPL_H_

#include "base/memory/raw_ptr.h"
#include "chrome/browser/ash/borealis/borealis_app_launcher_impl.h"
#include "chrome/browser/ash/borealis/borealis_app_uninstaller.h"
#include "chrome/browser/ash/borealis/borealis_context_manager_impl.h"
#include "chrome/browser/ash/borealis/borealis_features.h"
#include "chrome/browser/ash/borealis/borealis_install_url_handler.h"
#include "chrome/browser/ash/borealis/borealis_installer_impl.h"
#include "chrome/browser/ash/borealis/borealis_launch_options.h"
#include "chrome/browser/ash/borealis/borealis_service.h"
#include "chrome/browser/ash/borealis/borealis_shutdown_monitor.h"
#include "chrome/browser/ash/borealis/borealis_survey_handler.h"
#include "chrome/browser/ash/borealis/borealis_window_manager.h"

namespace borealis {

class BorealisServiceImpl : public BorealisService {
 public:
  explicit BorealisServiceImpl(Profile* profile);

  ~BorealisServiceImpl() override;

 private:
  // BorealisService overrides.
  BorealisAppLauncher& AppLauncher() override;
  BorealisAppUninstaller& AppUninstaller() override;
  BorealisContextManager& ContextManager() override;
  BorealisFeatures& Features() override;
  BorealisInstaller& Installer() override;
  BorealisInstallUrlHandler& InstallUrlHandler() override;
  BorealisLaunchOptions& LaunchOptions() override;
  BorealisShutdownMonitor& ShutdownMonitor() override;
  BorealisWindowManager& WindowManager() override;
  BorealisSurveyHandler& SurveyHandler() override;

  const raw_ptr<Profile> profile_;

  BorealisAppLauncherImpl app_launcher_;
  BorealisAppUninstaller app_uninstaller_;
  BorealisContextManagerImpl context_manager_;
  BorealisFeatures features_;
  BorealisInstallerImpl installer_;
  BorealisInstallUrlHandler install_url_handler_;
  BorealisLaunchOptions launch_options_;
  BorealisShutdownMonitor shutdown_monitor_;
  BorealisWindowManager window_manager_;
  BorealisSurveyHandler survey_handler_;
};

}  // namespace borealis

#endif  // CHROME_BROWSER_ASH_BOREALIS_BOREALIS_SERVICE_IMPL_H_