#ifndef UI_WM_CORE_WINDOW_UTIL_H_
#define UI_WM_CORE_WINDOW_UTIL_H_
#include <memory>
#include <utility>
#include <vector>
#include "base/component_export.h"
#include "base/functional/callback_forward.h"
#include "base/memory/raw_ptr.h"
#include "ui/base/mojom/window_show_state.mojom-forward.h"
#include "ui/display/types/display_constants.h"
namespace aura {
class Window;
}
namespace ui {
class Layer;
class LayerOwner;
class LayerTreeOwner;
}
namespace wm {
COMPONENT_EXPORT(UI_WM) void ActivateWindow(aura::Window* window);
COMPONENT_EXPORT(UI_WM) void DeactivateWindow(aura::Window* window);
COMPONENT_EXPORT(UI_WM) bool IsActiveWindow(const aura::Window* window);
COMPONENT_EXPORT(UI_WM) bool CanActivateWindow(const aura::Window* window);
COMPONENT_EXPORT(UI_WM)
void SetWindowFullscreen(
aura::Window* window,
bool fullscreen,
int64_t target_display_id = display::kInvalidDisplayId);
COMPONENT_EXPORT(UI_WM)
bool WindowStateIs(const aura::Window* window,
ui::mojom::WindowShowState state);
COMPONENT_EXPORT(UI_WM)
ui::mojom::WindowShowState GetWindowState(const aura::Window* window);
COMPONENT_EXPORT(UI_WM)
void SetWindowState(aura::Window* window, ui::mojom::WindowShowState state);
COMPONENT_EXPORT(UI_WM) void Restore(aura::Window* window);
COMPONENT_EXPORT(UI_WM) void Unminimize(aura::Window* window);
COMPONENT_EXPORT(UI_WM)
aura::Window* GetActivatableWindow(aura::Window* window);
COMPONENT_EXPORT(UI_WM) aura::Window* GetToplevelWindow(aura::Window* window);
COMPONENT_EXPORT(UI_WM)
const aura::Window* GetToplevelWindow(const aura::Window* window);
COMPONENT_EXPORT(UI_WM)
std::unique_ptr<ui::LayerTreeOwner> RecreateLayers(ui::LayerOwner* root);
using MapLayerFunc =
base::RepeatingCallback<std::unique_ptr<ui::Layer>(ui::LayerOwner*)>;
COMPONENT_EXPORT(UI_WM)
std::unique_ptr<ui::LayerTreeOwner> RecreateLayersWithClosure(
ui::LayerOwner* root,
const MapLayerFunc& map_func);
COMPONENT_EXPORT(UI_WM)
std::unique_ptr<ui::LayerTreeOwner> MirrorLayers(ui::LayerOwner* root,
bool sync_bounds);
COMPONENT_EXPORT(UI_WM) aura::Window* GetTransientParent(aura::Window* window);
COMPONENT_EXPORT(UI_WM)
const aura::Window* GetTransientParent(const aura::Window* window);
COMPONENT_EXPORT(UI_WM)
const std::vector<raw_ptr<aura::Window, VectorExperimental>>&
GetTransientChildren(const aura::Window* window);
COMPONENT_EXPORT(UI_WM)
void AddTransientChild(aura::Window* parent, aura::Window* child);
COMPONENT_EXPORT(UI_WM)
void RemoveTransientChild(aura::Window* parent, aura::Window* child);
COMPONENT_EXPORT(UI_WM) aura::Window* GetTransientRoot(aura::Window* window);
COMPONENT_EXPORT(UI_WM)
bool HasTransientAncestor(const aura::Window* window,
const aura::Window* ancestor);
COMPONENT_EXPORT(UI_WM) void SnapWindowToPixelBoundary(aura::Window* window);
}
#endif