chromium/chrome/browser/performance_manager/public/chrome_browser_main_extra_parts_performance_manager.h

// Copyright 2017 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_PERFORMANCE_MANAGER_PUBLIC_CHROME_BROWSER_MAIN_EXTRA_PARTS_PERFORMANCE_MANAGER_H_
#define CHROME_BROWSER_PERFORMANCE_MANAGER_PUBLIC_CHROME_BROWSER_MAIN_EXTRA_PARTS_PERFORMANCE_MANAGER_H_

#include <memory>

#include "base/scoped_multi_source_observation.h"
#include "build/build_config.h"
#include "chrome/browser/chrome_browser_main_extra_parts.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager_observer.h"
#include "chrome/browser/profiles/profile_observer.h"
#include "extensions/buildflags/buildflags.h"

class Profile;

#if !BUILDFLAG(IS_ANDROID)
namespace base {
class BatteryStateSampler;
}
#endif

namespace content {
class FeatureObserverClient;
}

namespace performance_manager {
class Graph;
class PageLiveStateDecoratorHelper;
class PageLoadMetricsObserver;
class PageLoadTrackerDecoratorHelper;
class PerformanceManagerFeatureObserverClient;
class PerformanceManagerLifetime;

#if BUILDFLAG(ENABLE_EXTENSIONS)
class ExtensionWatcher;
#endif

namespace user_tuning {
class BatterySaverModeManager;
class PerformanceDetectionManager;
class ProfileDiscardOptOutListHelper;
class UserPerformanceTuningManager;
}  // namespace user_tuning

}  // namespace performance_manager

// Handles the initialization of the performance manager and a few dependent
// classes that create/manage graph nodes.
class ChromeBrowserMainExtraPartsPerformanceManager
    : public ChromeBrowserMainExtraParts,
      public ProfileManagerObserver,
      public ProfileObserver {};

#endif  // CHROME_BROWSER_PERFORMANCE_MANAGER_PUBLIC_CHROME_BROWSER_MAIN_EXTRA_PARTS_PERFORMANCE_MANAGER_H_