diff --git a/shell/browser/native_window.cc b/shell/browser/native_window.cc index c590795d4c3..c61276fb8f1 100644 --- a/shell/browser/native_window.cc +++ b/shell/browser/native_window.cc @@ -127,17 +127,6 @@ NativeWindow::NativeWindow(const gin_helper::Dictionary& options, if (parent) options.Get("modal", &is_modal_); -#if defined(USE_OZONE) - // Ozone X11 likes to prefer custom frames, but we don't need them unless - // on Wayland. - if (base::FeatureList::IsEnabled(features::kWaylandWindowDecorations) && - !ui::OzonePlatform::GetInstance() - ->GetPlatformRuntimeProperties() - .supports_server_side_window_decorations) { - has_client_frame_ = true; - } -#endif - WindowList::AddWindow(this); } @@ -837,6 +826,22 @@ bool NativeWindow::IsTranslucent() const { return false; } +// static +bool NativeWindow::PlatformHasClientFrame() { +#if defined(USE_OZONE) + // Ozone X11 likes to prefer custom frames, + // but we don't need them unless on Wayland. + static const bool has_client_frame = + base::FeatureList::IsEnabled(features::kWaylandWindowDecorations) && + !ui::OzonePlatform::GetInstance() + ->GetPlatformRuntimeProperties() + .supports_server_side_window_decorations; + return has_client_frame; +#else + return false; +#endif +} + // static void NativeWindowRelay::CreateForWebContents( content::WebContents* web_contents, diff --git a/shell/browser/native_window.h b/shell/browser/native_window.h index 29c597fd744..53543b932c9 100644 --- a/shell/browser/native_window.h +++ b/shell/browser/native_window.h @@ -397,7 +397,8 @@ class NativeWindow : public base::SupportsUserData, bool has_frame() const { return has_frame_; } - bool has_client_frame() const { return has_client_frame_; } + [[nodiscard]] bool has_client_frame() const { return has_client_frame_; } + bool transparent() const { return transparent_; } bool enable_larger_than_screen() const { return enable_larger_than_screen_; } @@ -478,6 +479,8 @@ class NativeWindow : public base::SupportsUserData, std::list child_windows_; private: + static bool PlatformHasClientFrame(); + std::unique_ptr widget_; static inline int32_t next_id_ = 0; @@ -496,7 +499,7 @@ class NativeWindow : public base::SupportsUserData, // Whether window has standard frame, but it's drawn by Electron (the client // application) instead of the OS. Currently only has meaning on Linux for // Wayland hosts. - bool has_client_frame_ = false; + const bool has_client_frame_ = PlatformHasClientFrame(); // Whether window is transparent. bool transparent_ = false;