#ifndef ASH_WM_OVERVIEW_SCOPED_OVERVIEW_HIDE_WINDOWS_H_
#define ASH_WM_OVERVIEW_SCOPED_OVERVIEW_HIDE_WINDOWS_H_
#include <map>
#include "base/memory/raw_ptr.h"
#include "ui/aura/window_observer.h"
namespace aura {
class Window;
}
namespace ash {
class ScopedOverviewHideWindows : public aura::WindowObserver {
public:
ScopedOverviewHideWindows(
const std::vector<raw_ptr<aura::Window, VectorExperimental>>& windows,
bool force_hidden);
ScopedOverviewHideWindows(const ScopedOverviewHideWindows&) = delete;
ScopedOverviewHideWindows& operator=(const ScopedOverviewHideWindows&) =
delete;
~ScopedOverviewHideWindows() override;
bool HasWindow(aura::Window* window) const;
void AddWindow(aura::Window* window);
void RemoveWindow(aura::Window* window, bool show_window);
void RemoveAllWindows();
void OnWindowDestroying(aura::Window* window) override;
void OnWindowVisibilityChanged(aura::Window* window, bool visible) override;
private:
std::map<aura::Window*, bool> window_visibility_;
const bool force_hidden_;
};
}
#endif