123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- // Copyright 2021 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef UI_LINUX_LINUX_UI_DELEGATE_H_
- #define UI_LINUX_LINUX_UI_DELEGATE_H_
- #include <cstdint>
- #include <string>
- #include "base/callback_forward.h"
- #include "base/component_export.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;
- // Only implemented on Wayland.
- virtual bool ExportWindowHandle(
- uint32_t parent_widget,
- base::OnceCallback<void(const std::string&)> callback);
- // Only implemented on X11.
- virtual void SetTransientWindowForParent(gfx::AcceleratedWidget parent,
- gfx::AcceleratedWidget transient);
- // Exports a prefixed, platform-dependent (X11 or Wayland) window handle for
- // an Aura window id, then calls the given callback with the handle. Returns
- // true on success. |callback| may be run synchronously or asynchronously.
- virtual bool ExportWindowHandle(
- gfx::AcceleratedWidget window_id,
- base::OnceCallback<void(std::string)> callback) = 0;
- private:
- static LinuxUiDelegate* instance_;
- };
- } // namespace ui
- #endif // UI_LINUX_LINUX_UI_DELEGATE_H_
|