#ifndef ASH_CURTAIN_SESSION_H_
#define ASH_CURTAIN_SESSION_H_
#include <memory>
#include "ash/curtain/security_curtain_controller.h"
#include "base/memory/raw_ref.h"
namespace ash {
class Shell;
}
namespace aura {
class Window;
}
namespace ash::curtain {
class Session {
public:
Session(Shell* shell, SecurityCurtainController::InitParams params);
Session(const Session&) = delete;
Session& operator=(const Session&) = delete;
~Session();
void Init();
private:
void CurtainOffAllRootWindows();
void CurtainOffRootWindow(aura::Window* root_window);
void RemoveCurtainOfAllRootWindows();
void RemoveCurtainOfRootWindow(const aura::Window* root_window);
class RootWindowsObserver;
class ScopedAudioMuter;
raw_ref<Shell> shell_;
SecurityCurtainController::InitParams init_params_;
std::unique_ptr<RootWindowsObserver> root_windows_observer_;
std::unique_ptr<ScopedAudioMuter> scoped_audio_muter_;
};
}
#endif