#ifndef ASH_WALLPAPER_WALLPAPER_WINDOW_STATE_MANAGER_H_
#define ASH_WALLPAPER_WALLPAPER_WINDOW_STATE_MANAGER_H_
#include <map>
#include <set>
#include <string>
#include "ash/ash_export.h"
#include "base/memory/raw_ptr.h"
#include "ui/aura/window_observer.h"
namespace aura {
class Window;
}
namespace ash {
class ASH_EXPORT WallpaperWindowStateManager : public aura::WindowObserver {
public:
typedef std::map<std::string,
std::set<raw_ptr<aura::Window, SetExperimental>>>
UserIDHashWindowListMap;
WallpaperWindowStateManager();
WallpaperWindowStateManager(const WallpaperWindowStateManager&) = delete;
WallpaperWindowStateManager& operator=(const WallpaperWindowStateManager&) =
delete;
~WallpaperWindowStateManager() override;
void MinimizeInactiveWindows(const std::string& user_id_hash);
void RestoreMinimizedWindows(const std::string& user_id_hash);
private:
void RemoveObserverIfUnreferenced(aura::Window* window);
void OnWindowDestroyed(aura::Window* window) override;
void OnWindowStackingChanged(aura::Window* window) override;
UserIDHashWindowListMap user_id_hash_window_list_map_;
};
}
#endif