#ifndef ASH_PUBLIC_CPP_OVERVIEW_TEST_API_H_
#define ASH_PUBLIC_CPP_OVERVIEW_TEST_API_H_
#include <cstdint>
#include "ash/ash_export.h"
#include "base/containers/flat_map.h"
#include "base/functional/callback_forward.h"
#include "base/memory/raw_ptr.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
#include "ui/gfx/geometry/rect.h"
namespace aura {
class Window;
}
namespace ash {
enum class OverviewAnimationState : int32_t {
kEnterAnimationComplete,
kExitAnimationComplete,
};
struct OverviewItemInfo {
raw_ptr<aura::Window, ExperimentalAsh> window = nullptr;
gfx::Rect bounds_in_screen;
bool is_dragged = false;
};
using OverviewInfo = base::flat_map<aura::Window*, OverviewItemInfo>;
class ASH_EXPORT OverviewTestApi {
public:
OverviewTestApi();
OverviewTestApi(const OverviewTestApi&) = delete;
OverviewTestApi& operator=(const OverviewTestApi&) = delete;
~OverviewTestApi();
using DoneCallback = base::OnceCallback<void(bool animation_succeeded)>;
void SetOverviewMode(bool start, DoneCallback done_callback);
void WaitForOverviewState(OverviewAnimationState expected_state,
DoneCallback callback);
absl::optional<OverviewInfo> GetOverviewInfo() const;
};
}
#endif