#ifndef UI_AURA_CLIENT_TRANSIENT_WINDOW_CLIENT_H_
#define UI_AURA_CLIENT_TRANSIENT_WINDOW_CLIENT_H_
#include <vector>
#include "base/memory/raw_ptr.h"
#include "ui/aura/aura_export.h"
namespace aura {
class Window;
namespace client {
class TransientWindowClientObserver;
class AURA_EXPORT TransientWindowClient {
public:
virtual void AddTransientChild(Window* parent, Window* child) = 0;
virtual void RemoveTransientChild(Window* parent, Window* child) = 0;
virtual Window* GetTransientParent(Window* window) = 0;
virtual const Window* GetTransientParent(const Window* window) = 0;
virtual std::vector<raw_ptr<Window, VectorExperimental>> GetTransientChildren(
const Window* parent) = 0;
virtual void AddObserver(TransientWindowClientObserver* observer) = 0;
virtual void RemoveObserver(TransientWindowClientObserver* observer) = 0;
protected:
virtual ~TransientWindowClient() {}
};
AURA_EXPORT void SetTransientWindowClient(TransientWindowClient* client);
AURA_EXPORT TransientWindowClient* GetTransientWindowClient();
}
}
#endif