#ifndef UI_LINUX_LINUX_UI_DELEGATE_H_
#define UI_LINUX_LINUX_UI_DELEGATE_H_
#include <cstdint>
#include <string>
#include "base/component_export.h"
#include "base/functional/callback_forward.h"
namespace gfx {
using AcceleratedWidget = uint32_t;
}
namespace ui {
enum class LinuxUiBackend {
kStub,
kX11,
kWayland,
};
class COMPONENT_EXPORT(LINUX_UI) LinuxUiDelegate {
public:
static LinuxUiDelegate* GetInstance();
LinuxUiDelegate();
virtual ~LinuxUiDelegate();
virtual LinuxUiBackend GetBackend() const = 0;
virtual void SetTransientWindowForParent(gfx::AcceleratedWidget parent,
gfx::AcceleratedWidget transient);
virtual void ExportWindowHandle(
gfx::AcceleratedWidget window_id,
base::OnceCallback<void(std::string)> callback) = 0;
private:
static LinuxUiDelegate* instance_;
};
}
#endif