Commit 47d9caef authored by Maksim Sisov's avatar Maksim Sisov Committed by Commit Bot

X11 and ozone/linux: Share BrowserDesktopWindowTreeHost impl

To make ozone/linux really use the DesktopWindowTreeHostLinux,
it is also needed to share the BrowserDesktopWindowTreeHost*
impl between X11/linux and ozone/linux.

This CL renames the BrowserDesktopWindowTreeHostX11 to
BrowserDesktopWindowTreeHostLinux and adds some USE_X11 guards,
which will be removed in the future.

Bug: 990756
Change-Id: Id99d63a627257fbaca7e5de65ec4973d8396d4fc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1796547
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Reviewed-by: default avatarScott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#696715}
parent 9d24f542
...@@ -2464,8 +2464,6 @@ jumbo_split_static_library("ui") { ...@@ -2464,8 +2464,6 @@ jumbo_split_static_library("ui") {
if (use_x11) { if (use_x11) {
sources += [ sources += [
"views/frame/browser_desktop_window_tree_host_x11.cc",
"views/frame/browser_desktop_window_tree_host_x11.h",
"views/frame/global_menu_bar_registrar_x11.cc", "views/frame/global_menu_bar_registrar_x11.cc",
"views/frame/global_menu_bar_registrar_x11.h", "views/frame/global_menu_bar_registrar_x11.h",
"views/frame/global_menu_bar_x11.cc", "views/frame/global_menu_bar_x11.cc",
...@@ -2487,12 +2485,20 @@ jumbo_split_static_library("ui") { ...@@ -2487,12 +2485,20 @@ jumbo_split_static_library("ui") {
] ]
} }
if (use_ozone) { if (use_ozone) {
if (!is_desktop_linux) {
sources += [
"views/frame/browser_desktop_window_tree_host_platform.cc",
"views/frame/browser_desktop_window_tree_host_platform.h",
]
}
sources += [ "views/frame/native_browser_frame_factory_ozone.cc" ]
deps += [ "//ui/platform_window" ]
}
if (is_desktop_linux) {
sources += [ sources += [
"views/frame/browser_desktop_window_tree_host_platform.cc", "views/frame/browser_desktop_window_tree_host_linux.cc",
"views/frame/browser_desktop_window_tree_host_platform.h", "views/frame/browser_desktop_window_tree_host_linux.h",
"views/frame/native_browser_frame_factory_ozone.cc",
] ]
deps += [ "//ui/platform_window" ]
} }
if (use_gtk) { if (use_gtk) {
# This is the only component that can interact with gtk. # This is the only component that can interact with gtk.
......
// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "chrome/browser/ui/views/frame/browser_desktop_window_tree_host_x11.h" #include "chrome/browser/ui/views/frame/browser_desktop_window_tree_host_linux.h"
#include <utility> #include <utility>
...@@ -13,58 +13,63 @@ ...@@ -13,58 +13,63 @@
#include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/browser/ui/views/frame/browser_view.h"
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// BrowserDesktopWindowTreeHostX11, public: // BrowserDesktopWindowTreeHostLinux, public:
BrowserDesktopWindowTreeHostX11::BrowserDesktopWindowTreeHostX11( BrowserDesktopWindowTreeHostLinux::BrowserDesktopWindowTreeHostLinux(
views::internal::NativeWidgetDelegate* native_widget_delegate, views::internal::NativeWidgetDelegate* native_widget_delegate,
views::DesktopNativeWidgetAura* desktop_native_widget_aura, views::DesktopNativeWidgetAura* desktop_native_widget_aura,
BrowserView* browser_view, BrowserView* browser_view,
BrowserFrame* browser_frame) BrowserFrame* browser_frame)
: DesktopWindowTreeHostX11(native_widget_delegate, : DesktopWindowTreeHostLinuxImpl(native_widget_delegate,
desktop_native_widget_aura), desktop_native_widget_aura) {
browser_view_(browser_view) { #if defined(USE_X11)
browser_view_ = browser_view;
#endif
browser_frame->set_frame_type(browser_frame->UseCustomFrame() browser_frame->set_frame_type(browser_frame->UseCustomFrame()
? views::Widget::FrameType::kForceCustom ? views::Widget::FrameType::kForceCustom
: views::Widget::FrameType::kForceNative); : views::Widget::FrameType::kForceNative);
} }
BrowserDesktopWindowTreeHostX11::~BrowserDesktopWindowTreeHostX11() { BrowserDesktopWindowTreeHostLinux::~BrowserDesktopWindowTreeHostLinux() {}
}
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// BrowserDesktopWindowTreeHostX11, // BrowserDesktopWindowTreeHostLinux,
// BrowserDesktopWindowTreeHost implementation: // BrowserDesktopWindowTreeHost implementation:
views::DesktopWindowTreeHost* views::DesktopWindowTreeHost*
BrowserDesktopWindowTreeHostX11::AsDesktopWindowTreeHost() { BrowserDesktopWindowTreeHostLinux::AsDesktopWindowTreeHost() {
return this; return this;
} }
int BrowserDesktopWindowTreeHostX11::GetMinimizeButtonOffset() const { int BrowserDesktopWindowTreeHostLinux::GetMinimizeButtonOffset() const {
return 0; return 0;
} }
bool BrowserDesktopWindowTreeHostX11::UsesNativeSystemMenu() const { bool BrowserDesktopWindowTreeHostLinux::UsesNativeSystemMenu() const {
return false; return false;
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// BrowserDesktopWindowTreeHostX11, // BrowserDesktopWindowTreeHostLinux,
// views::DesktopWindowTreeHostX11 implementation: // DesktopWindowTreeHostLinuxImpl implementation:
void BrowserDesktopWindowTreeHostX11::Init( void BrowserDesktopWindowTreeHostLinux::Init(
const views::Widget::InitParams& params) { const views::Widget::InitParams& params) {
views::DesktopWindowTreeHostX11::Init(std::move(params)); DesktopWindowTreeHostLinuxImpl::Init(std::move(params));
#if defined(USE_X11)
// We have now created our backing X11 window. We now need to (possibly) // We have now created our backing X11 window. We now need to (possibly)
// alert Unity that there's a menu bar attached to it. // alert Unity that there's a menu bar attached to it.
global_menu_bar_x11_ = global_menu_bar_x11_ =
std::make_unique<GlobalMenuBarX11>(browser_view_, this); std::make_unique<GlobalMenuBarX11>(browser_view_, this);
#endif
} }
void BrowserDesktopWindowTreeHostX11::CloseNow() { void BrowserDesktopWindowTreeHostLinux::CloseNow() {
#if defined(USE_X11)
global_menu_bar_x11_.reset(); global_menu_bar_x11_.reset();
DesktopWindowTreeHostX11::CloseNow(); #endif
DesktopWindowTreeHostLinuxImpl::CloseNow();
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
...@@ -72,13 +77,12 @@ void BrowserDesktopWindowTreeHostX11::CloseNow() { ...@@ -72,13 +77,12 @@ void BrowserDesktopWindowTreeHostX11::CloseNow() {
// static // static
BrowserDesktopWindowTreeHost* BrowserDesktopWindowTreeHost*
BrowserDesktopWindowTreeHost::CreateBrowserDesktopWindowTreeHost( BrowserDesktopWindowTreeHost::CreateBrowserDesktopWindowTreeHost(
views::internal::NativeWidgetDelegate* native_widget_delegate, views::internal::NativeWidgetDelegate* native_widget_delegate,
views::DesktopNativeWidgetAura* desktop_native_widget_aura, views::DesktopNativeWidgetAura* desktop_native_widget_aura,
BrowserView* browser_view, BrowserView* browser_view,
BrowserFrame* browser_frame) { BrowserFrame* browser_frame) {
return new BrowserDesktopWindowTreeHostX11(native_widget_delegate, return new BrowserDesktopWindowTreeHostLinux(native_widget_delegate,
desktop_native_widget_aura, desktop_native_widget_aura,
browser_view, browser_view, browser_frame);
browser_frame);
} }
// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_DESKTOP_WINDOW_TREE_HOST_X11_H_ #ifndef CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_DESKTOP_WINDOW_TREE_HOST_LINUX_H_
#define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_DESKTOP_WINDOW_TREE_HOST_X11_H_ #define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_DESKTOP_WINDOW_TREE_HOST_LINUX_H_
#include "base/macros.h" #include "base/macros.h"
#include "chrome/browser/ui/views/frame/browser_desktop_window_tree_host.h" #include "chrome/browser/ui/views/frame/browser_desktop_window_tree_host.h"
#include "chrome/browser/ui/views/frame/global_menu_bar_x11.h"
#include "ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h" #if defined(USE_X11)
#include "chrome/browser/ui/views/frame/global_menu_bar_x11.h" // nogncheck
#include "ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h" // nogncheck
#else
#include "ui/views/widget/desktop_aura/desktop_window_tree_host_linux.h" // nogncheck
#endif
// TODO(https://crbug.com/990756): Make sure correct
// DesktopWindowTreeHost is used while the DWTHX11 is being refactored and
// merged into the DWTHLinux and the DWTHPlatform. Non-Ozone X11 must use
// the DWTHX11 now, but Ozone must use DWTHLinux. Remove this guard once
// DWTHX11 is finally merged into DWTHPlatform and DWTHLinux.
#if defined(USE_X11)
using DesktopWindowTreeHostLinuxImpl = views::DesktopWindowTreeHostX11;
#else
using DesktopWindowTreeHostLinuxImpl = views::DesktopWindowTreeHostLinux;
#endif
class BrowserFrame; class BrowserFrame;
class BrowserView; class BrowserView;
...@@ -17,16 +33,16 @@ namespace views { ...@@ -17,16 +33,16 @@ namespace views {
class DesktopNativeWidgetAura; class DesktopNativeWidgetAura;
} }
class BrowserDesktopWindowTreeHostX11 class BrowserDesktopWindowTreeHostLinux
: public BrowserDesktopWindowTreeHost, : public BrowserDesktopWindowTreeHost,
public views::DesktopWindowTreeHostX11 { public DesktopWindowTreeHostLinuxImpl {
public: public:
BrowserDesktopWindowTreeHostX11( BrowserDesktopWindowTreeHostLinux(
views::internal::NativeWidgetDelegate* native_widget_delegate, views::internal::NativeWidgetDelegate* native_widget_delegate,
views::DesktopNativeWidgetAura* desktop_native_widget_aura, views::DesktopNativeWidgetAura* desktop_native_widget_aura,
BrowserView* browser_view, BrowserView* browser_view,
BrowserFrame* browser_frame); BrowserFrame* browser_frame);
~BrowserDesktopWindowTreeHostX11() override; ~BrowserDesktopWindowTreeHostLinux() override;
private: private:
// Overridden from BrowserDesktopWindowTreeHost: // Overridden from BrowserDesktopWindowTreeHost:
...@@ -34,18 +50,20 @@ class BrowserDesktopWindowTreeHostX11 ...@@ -34,18 +50,20 @@ class BrowserDesktopWindowTreeHostX11
int GetMinimizeButtonOffset() const override; int GetMinimizeButtonOffset() const override;
bool UsesNativeSystemMenu() const override; bool UsesNativeSystemMenu() const override;
// Overridden from views::DesktopWindowTreeHostX11: // Overridden from views::DesktopWindowTreeHostLinuxImpl:
void Init(const views::Widget::InitParams& params) override; void Init(const views::Widget::InitParams& params) override;
void CloseNow() override; void CloseNow() override;
BrowserView* browser_view_; #if defined(USE_X11)
BrowserView* browser_view_ = nullptr;
// Each browser frame maintains its own menu bar object because the lower // Each browser frame maintains its own menu bar object because the lower
// level dbus protocol associates a xid to a menu bar; we can't map multiple // level dbus protocol associates a xid to a menu bar; we can't map multiple
// xids to the same menu bar. // xids to the same menu bar.
std::unique_ptr<GlobalMenuBarX11> global_menu_bar_x11_; std::unique_ptr<GlobalMenuBarX11> global_menu_bar_x11_;
#endif
DISALLOW_COPY_AND_ASSIGN(BrowserDesktopWindowTreeHostX11); DISALLOW_COPY_AND_ASSIGN(BrowserDesktopWindowTreeHostLinux);
}; };
#endif // CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_DESKTOP_WINDOW_TREE_HOST_X11_H_ #endif // CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_DESKTOP_WINDOW_TREE_HOST_LINUX_H_
...@@ -72,4 +72,18 @@ void DesktopWindowTreeHostLinux::AddAdditionalInitProperties( ...@@ -72,4 +72,18 @@ void DesktopWindowTreeHostLinux::AddAdditionalInitProperties(
properties->wm_role_name = params.wm_role_name; properties->wm_role_name = params.wm_role_name;
} }
// As DWTHX11 subclasses DWTHPlatform through DWTHLinux now (during transition
// period. see https://crbug.com/990756), we need to guard this factory method.
// TODO(msisov): remove this guard once DWTHX11 is finally merged into
// DWTHPlatform and .
#if !defined(USE_X11)
// static
DesktopWindowTreeHost* DesktopWindowTreeHost::Create(
internal::NativeWidgetDelegate* native_widget_delegate,
DesktopNativeWidgetAura* desktop_native_widget_aura) {
return new DesktopWindowTreeHostLinux(native_widget_delegate,
desktop_native_widget_aura);
}
#endif
} // namespace views } // namespace views
...@@ -792,11 +792,8 @@ void DesktopWindowTreeHostPlatform::AddAdditionalInitProperties( ...@@ -792,11 +792,8 @@ void DesktopWindowTreeHostPlatform::AddAdditionalInitProperties(
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// DesktopWindowTreeHost: // DesktopWindowTreeHost:
// As DWTHX11 subclasses DWTHPlatform now (during transition period. see // Linux subclasses this host and adds some Linux specific bits.
// https://crbug.com/990756), we need to guard this factory method. #if !defined(OS_LINUX)
// TODO(msisov): remove this guard once DWTHX11 is finally merged into
// DWTHPlatform.
#if !defined(USE_X11)
// static // static
DesktopWindowTreeHost* DesktopWindowTreeHost::Create( DesktopWindowTreeHost* DesktopWindowTreeHost::Create(
internal::NativeWidgetDelegate* native_widget_delegate, internal::NativeWidgetDelegate* native_widget_delegate,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment