#include "chrome/browser/ui/views/frame/browser_desktop_window_tree_host_linux.h"
#include <optional>
#include <utility>
#include "base/no_destructor.h"
#include "build/build_config.h"
#include "chrome/browser/themes/theme_service.h"
#include "chrome/browser/themes/theme_service_factory.h"
#include "chrome/browser/ui/ui_features.h"
#include "chrome/browser/ui/views/frame/browser_frame.h"
#include "chrome/browser/ui/views/frame/browser_frame_view_layout_linux.h"
#include "chrome/browser/ui/views/frame/browser_frame_view_linux.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/browser/ui/views/frame/desktop_browser_frame_aura_linux.h"
#include "chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.h"
#include "chrome/browser/ui/views/tabs/tab_drag_controller.h"
#include "chrome/browser/ui/views/tabs/tab_strip.h"
#include "third_party/skia/include/core/SkRRect.h"
#include "ui/base/dragdrop/mojom/drag_drop_types.mojom-shared.h"
#include "ui/base/ui_base_features.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/geometry/rect_conversions.h"
#include "ui/gfx/geometry/skia_conversions.h"
#include "ui/linux/linux_ui.h"
#include "ui/native_theme/native_theme.h"
#include "ui/ozone/public/ozone_platform.h"
#include "ui/platform_window/extensions/wayland_extension.h"
#include "ui/platform_window/extensions/x11_extension.h"
#include "ui/platform_window/platform_window_init_properties.h"
namespace {
#if defined(USE_DBUS_MENU)
bool CreateGlobalMenuBar() { … }
#endif
std::unordered_set<std::string>& SentStartupIds() { … }
std::optional<ui::mojom::DragEventSource> GetCurrentTabDragEventSource() { … }
bool IsShowingFrame(bool use_custom_frame,
ui::PlatformWindowState window_state) { … }
}
BrowserDesktopWindowTreeHostLinux::BrowserDesktopWindowTreeHostLinux(
views::internal::NativeWidgetDelegate* native_widget_delegate,
views::DesktopNativeWidgetAura* desktop_native_widget_aura,
BrowserView* browser_view,
BrowserFrame* browser_frame)
: … { … }
BrowserDesktopWindowTreeHostLinux::~BrowserDesktopWindowTreeHostLinux() { … }
void BrowserDesktopWindowTreeHostLinux::AddAdditionalInitProperties(
const views::Widget::InitParams& params,
ui::PlatformWindowInitProperties* properties) { … }
views::DesktopWindowTreeHost*
BrowserDesktopWindowTreeHostLinux::AsDesktopWindowTreeHost() { … }
int BrowserDesktopWindowTreeHostLinux::GetMinimizeButtonOffset() const { … }
bool BrowserDesktopWindowTreeHostLinux::UsesNativeSystemMenu() const { … }
void BrowserDesktopWindowTreeHostLinux::FrameTypeChanged() { … }
bool BrowserDesktopWindowTreeHostLinux::SupportsMouseLock() { … }
void BrowserDesktopWindowTreeHostLinux::LockMouse(aura::Window* window) { … }
void BrowserDesktopWindowTreeHostLinux::UnlockMouse(aura::Window* window) { … }
void BrowserDesktopWindowTreeHostLinux::TabDraggingKindChanged(
TabDragKind tab_drag_kind) { … }
bool BrowserDesktopWindowTreeHostLinux::SupportsClientFrameShadow() const { … }
void BrowserDesktopWindowTreeHostLinux::UpdateFrameHints() { … }
void BrowserDesktopWindowTreeHostLinux::Init(
const views::Widget::InitParams& params) { … }
void BrowserDesktopWindowTreeHostLinux::OnWidgetInitDone() { … }
void BrowserDesktopWindowTreeHostLinux::CloseNow() { … }
void BrowserDesktopWindowTreeHostLinux::Show(ui::WindowShowState show_state,
const gfx::Rect& restore_bounds) { … }
bool BrowserDesktopWindowTreeHostLinux::IsOverrideRedirect() const { … }
gfx::Insets BrowserDesktopWindowTreeHostLinux::CalculateInsetsInDIP(
ui::PlatformWindowState window_state) const { … }
void BrowserDesktopWindowTreeHostLinux::OnWindowStateChanged(
ui::PlatformWindowState old_state,
ui::PlatformWindowState new_state) { … }
void BrowserDesktopWindowTreeHostLinux::OnWindowTiledStateChanged(
ui::WindowTiledEdges new_tiled_edges) { … }
void BrowserDesktopWindowTreeHostLinux::OnNativeThemeUpdated(
ui::NativeTheme* observed_theme) { … }
void BrowserDesktopWindowTreeHostLinux::OnDeviceScaleFactorChanged() { … }
BrowserDesktopWindowTreeHost*
BrowserDesktopWindowTreeHost::CreateBrowserDesktopWindowTreeHost(
views::internal::NativeWidgetDelegate* native_widget_delegate,
views::DesktopNativeWidgetAura* desktop_native_widget_aura,
BrowserView* browser_view,
BrowserFrame* browser_frame) { … }