#ifndef ASH_CURTAIN_SECURITY_CURTAIN_WIDGET_CONTROLLER_H_
#define ASH_CURTAIN_SECURITY_CURTAIN_WIDGET_CONTROLLER_H_
#include <cstdint>
#include <memory>
#include "ash/ash_export.h"
#include "ash/curtain/security_curtain_controller.h"
#include "ui/aura/window_occlusion_tracker.h"
namespace aura {
class Window;
}
namespace views {
class View;
class Widget;
}
namespace ui {
class Layer;
}
namespace ash::curtain {
class ASH_EXPORT SecurityCurtainWidgetController {
public:
SecurityCurtainWidgetController(SecurityCurtainWidgetController&&);
SecurityCurtainWidgetController& operator=(SecurityCurtainWidgetController&&);
~SecurityCurtainWidgetController();
static SecurityCurtainWidgetController CreateForRootWindow(
aura::Window* curtain_container,
std::unique_ptr<views::View> curtain_view);
const views::Widget& GetWidget() const;
views::Widget& GetWidget();
private:
class WidgetMaximizer;
using Layers = std::vector<std::unique_ptr<ui::Layer>>;
SecurityCurtainWidgetController(std::unique_ptr<views::Widget> widget,
Layers layers);
Layers widget_layers_;
std::unique_ptr<views::Widget> widget_;
std::unique_ptr<aura::WindowOcclusionTracker::ScopedExclude>
occlusion_tracker_exclude_;
std::unique_ptr<WidgetMaximizer> widget_maximizer_;
};
}
#endif