123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- // Copyright 2018 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_PLATFORM_WINDOW_PLATFORM_WINDOW_INIT_PROPERTIES_H_
- #define UI_PLATFORM_WINDOW_PLATFORM_WINDOW_INIT_PROPERTIES_H_
- #include <string>
- #include "base/component_export.h"
- #include "base/memory/raw_ptr.h"
- #include "build/build_config.h"
- #include "third_party/abseil-cpp/absl/types/optional.h"
- #include "third_party/skia/include/core/SkColor.h"
- #include "ui/base/ui_base_types.h"
- #include "ui/gfx/geometry/rect.h"
- #include "ui/gfx/native_widget_types.h"
- #if BUILDFLAG(IS_FUCHSIA)
- #include <fuchsia/element/cpp/fidl.h>
- #include <fuchsia/ui/composition/cpp/fidl.h>
- #include <fuchsia/ui/views/cpp/fidl.h>
- #include <lib/ui/scenic/cpp/view_ref_pair.h>
- #endif
- namespace gfx {
- class ImageSkia;
- }
- namespace ui {
- enum class PlatformWindowType {
- kWindow,
- kPopup,
- kMenu,
- kTooltip,
- kDrag,
- kBubble,
- };
- enum class PlatformWindowOpacity {
- kInferOpacity,
- kOpaqueWindow,
- kTranslucentWindow,
- };
- enum class PlatformWindowShadowType {
- kDefault,
- kNone,
- kDrop,
- };
- class WorkspaceExtensionDelegate;
- #if BUILDFLAG(IS_FUCHSIA)
- class ScenicWindowDelegate;
- #endif
- #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
- class X11ExtensionDelegate;
- #endif
- // Initial properties which are passed to PlatformWindow to be initialized
- // with a desired set of properties.
- struct COMPONENT_EXPORT(PLATFORM_WINDOW) PlatformWindowInitProperties {
- PlatformWindowInitProperties();
- // Initializes properties with the specified |bounds|.
- explicit PlatformWindowInitProperties(const gfx::Rect& bounds);
- PlatformWindowInitProperties(PlatformWindowInitProperties&& props);
- ~PlatformWindowInitProperties();
- // Tells desired PlatformWindow type. It can be popup, menu or anything else.
- PlatformWindowType type = PlatformWindowType::kWindow;
- // Sets the desired initial bounds. Can be empty.
- gfx::Rect bounds;
- // Tells PlatformWindow which native widget its parent holds. It is usually
- // used to find a parent from internal list of PlatformWindows.
- gfx::AcceleratedWidget parent_widget = gfx::kNullAcceleratedWidget;
- // Tells the opacity type of a window. Check the comment in the
- // Widget::InitProperties::WindowOpacity.
- PlatformWindowOpacity opacity = PlatformWindowOpacity::kOpaqueWindow;
- #if BUILDFLAG(IS_FUCHSIA)
- // Scenic 3D API uses `view_token` for links, whereas Flatland
- // API uses `view_creation_token`. Therefore, at most one of these fields must
- // be set. If `allow_null_view_token_for_test` is true, they may both be
- // false.
- fuchsia::ui::views::ViewToken view_token;
- fuchsia::ui::views::ViewCreationToken view_creation_token;
- scenic::ViewRefPair view_ref_pair;
- // Used to coordinate window closure requests with the shell.
- fuchsia::element::ViewControllerPtr view_controller;
- // Specifies whether handling of keypress events from the system is enabled.
- bool enable_keyboard = false;
- // Specifies whether system virtual keyboard support is enabled.
- bool enable_virtual_keyboard = false;
- ScenicWindowDelegate* scenic_window_delegate = nullptr;
- #endif
- bool activatable = true;
- bool force_show_in_taskbar;
- bool keep_on_top = false;
- bool is_security_surface = false;
- bool visible_on_all_workspaces = false;
- bool remove_standard_frame = false;
- std::string workspace;
- ZOrderLevel z_order = ZOrderLevel::kNormal;
- raw_ptr<WorkspaceExtensionDelegate> workspace_extension_delegate = nullptr;
- PlatformWindowShadowType shadow_type = PlatformWindowShadowType::kDefault;
- #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
- bool prefer_dark_theme = false;
- raw_ptr<gfx::ImageSkia> icon = nullptr;
- absl::optional<SkColor> background_color;
- // Specifies the res_name and res_class fields,
- // respectively, of the WM_CLASS window property. Controls window grouping
- // and desktop file matching in Linux window managers.
- std::string wm_role_name;
- std::string wm_class_name;
- std::string wm_class_class;
- raw_ptr<X11ExtensionDelegate> x11_extension_delegate = nullptr;
- // Wayland specific. Holds the application ID that is used by the window
- // manager to match the desktop entry and group windows.
- std::string wayland_app_id;
- // Specifies the unique session id and the restore window id.
- int32_t restore_session_id;
- absl::optional<int32_t> restore_window_id;
- // Specifies the source to get `restore_window_id` from.
- absl::optional<std::string> restore_window_id_source;
- #endif
- #if defined(USE_OZONE)
- // Specifies whether the current window requests key-events that matches
- // system shortcuts.
- bool inhibit_keyboard_shortcuts = false;
- #endif
- bool enable_compositing_based_throttling = false;
- size_t compositor_memory_limit_mb = 0;
- };
- } // namespace ui
- #endif // UI_PLATFORM_WINDOW_PLATFORM_WINDOW_INIT_PROPERTIES_H_
|