blob: 50dd8363e48360e0e3b889d8e4864c67e6eaffcb [file] [log] [blame]
// Copyright 2024 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_UI_ASH_GRADUATION_GRADUATION_MANAGER_H_
#define CHROME_BROWSER_UI_ASH_GRADUATION_GRADUATION_MANAGER_H_
#include "base/memory/weak_ptr.h"
#include "base/scoped_observation.h"
#include "components/prefs/pref_change_registrar.h"
#include "components/session_manager/core/session_manager.h"
#include "components/session_manager/core/session_manager_observer.h"
class Profile;
namespace ash::graduation {
// Manages the state of the Graduation app depending on the status of the
// Graduation enablement policy. The GraduationManager is a singleton that
// should be created once per user session.
class GraduationManager : public session_manager::SessionManagerObserver {
public:
GraduationManager();
GraduationManager(const GraduationManager&) = delete;
GraduationManager& operator=(const GraduationManager&) = delete;
~GraduationManager() override;
static GraduationManager* Get();
// session_manager::SessionManagerObserver:
void OnUserSessionStarted(bool is_primary) override;
private:
void OnAppsSynchronized();
void OnWebAppProviderReady();
void UpdateAppPinnedState();
PrefChangeRegistrar pref_change_registrar_;
// Profile object will be nullptr until the user session begins.
raw_ptr<Profile> profile_ = nullptr;
base::ScopedObservation<session_manager::SessionManager,
session_manager::SessionManagerObserver>
session_manager_observation_{this};
base::WeakPtrFactory<GraduationManager> weak_ptr_factory_{this};
};
} // namespace ash::graduation
#endif // CHROME_BROWSER_UI_ASH_GRADUATION_GRADUATION_MANAGER_H_