Commit 389f4a18 authored by Alexander Dunaev's avatar Alexander Dunaev Committed by Commit Bot

[ozone/x11] Enabled visuals initialisation in views unit tests.

This CL moves some test code to X11 utils and makes Ozone using it.

Bug: 1121952
Change-Id: I4fdd95838f200960db0c232adfb56c6f25b6511a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2524534
Auto-Submit: Alexander Dunaev <adunaev@igalia.com>
Reviewed-by: default avatarScott Violet <sky@chromium.org>
Commit-Queue: Alexander Dunaev <adunaev@igalia.com>
Cr-Commit-Position: refs/heads/master@{#825646}
parent 075e7a9e
......@@ -1155,6 +1155,22 @@ bool IsVulkanSurfaceSupported() {
return false;
}
bool DoesVisualHaveAlphaForTest() {
// testing/xvfb.py runs xvfb and xcompmgr.
std::unique_ptr<base::Environment> env(base::Environment::Create());
uint8_t depth = 0;
bool visual_has_alpha = false;
ui::XVisualManager::GetInstance()->ChooseVisualForWindow(
env->HasVar("_CHROMIUM_INSIDE_XVFB"), nullptr, &depth, nullptr,
&visual_has_alpha);
if (visual_has_alpha)
DCHECK_EQ(32, depth);
return visual_has_alpha;
}
// static
XVisualManager* XVisualManager::GetInstance() {
return base::Singleton<XVisualManager>::get();
......
......@@ -550,6 +550,10 @@ x11::Future<void> SendClientMessage(
// Return true if VulkanSurface is supported.
COMPONENT_EXPORT(UI_BASE_X) bool IsVulkanSurfaceSupported();
// Returns whether the visual supports alpha.
// The function examines the _CHROMIUM_INSIDE_XVFB environment variable.
COMPONENT_EXPORT(UI_BASE_X) bool DoesVisualHaveAlphaForTest();
// --------------------------------------------------------------------------
// Selects a visual with a preference for alpha support on compositing window
// managers.
......
......@@ -5,6 +5,7 @@
#include "ui/ozone/platform/x11/gl_egl_utility_x11.h"
#include "ui/base/x/x11_gl_egl_utility.h"
#include "ui/base/x/x11_util.h"
#include "ui/gl/gl_utils.h"
namespace ui {
......@@ -33,4 +34,8 @@ void GLEGLUtilityX11::CollectGpuExtraInfo(
gl::CollectX11GpuExtraInfo(enable_native_gpu_memory_buffers, gpu_extra_info);
}
bool GLEGLUtilityX11::X11DoesVisualHaveAlphaForTest() const {
return ui::DoesVisualHaveAlphaForTest();
}
} // namespace ui
......@@ -26,6 +26,7 @@ class GLEGLUtilityX11 : public PlatformGLEGLUtility {
bool IsTransparentBackgroundSupported() const override;
void CollectGpuExtraInfo(bool enable_native_gpu_memory_buffers,
gfx::GpuExtraInfo& gpu_extra_info) const override;
bool X11DoesVisualHaveAlphaForTest() const override;
};
} // namespace ui
......
......@@ -37,6 +37,10 @@ class COMPONENT_EXPORT(OZONE_BASE) PlatformGLEGLUtility {
// |enable_native_gpu_memory_buffers| should be taken from GpuPreferences.
virtual void CollectGpuExtraInfo(bool enable_native_gpu_memory_buffers,
gfx::GpuExtraInfo& gpu_extra_info) const = 0;
// X11 specific; returns whether the test configuration supports alpha for
// window visuals.
virtual bool X11DoesVisualHaveAlphaForTest() const = 0;
};
} // namespace ui
......
......@@ -1025,8 +1025,8 @@ source_set("test_support") {
"//ui/gfx/x",
]
}
if (ozone_platform_x11) {
deps += [ "//ui/base/x" ]
if (use_ozone) {
deps += [ "//ui/ozone" ]
}
if (use_ozone && is_linux && enable_desktop_aura) {
......
......@@ -14,7 +14,6 @@
#include "mojo/core/embedder/embedder.h"
#include "ui/base/clipboard/clipboard.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/base/ui_base_features.h"
#include "ui/base/ui_base_paths.h"
#include "ui/gl/test/gl_surface_test_support.h"
#include "ui/views/buildflags.h"
......@@ -33,31 +32,26 @@
#include "ui/base/x/x11_util.h"
#endif
#if defined(USE_OZONE)
#include "ui/base/ui_base_features.h"
#include "ui/ozone/public/ozone_platform.h"
#include "ui/ozone/public/platform_gl_egl_utility.h"
#endif
namespace views {
namespace {
bool InitializeVisuals() {
bool DoesVisualHaveAlphaForTest() {
#if defined(USE_OZONE)
if (features::IsUsingOzonePlatform()) {
const auto* const egl_utility =
ui::OzonePlatform::GetInstance()->GetPlatformGLEGLUtility();
return egl_utility ? egl_utility->X11DoesVisualHaveAlphaForTest() : false;
}
#endif
#if defined(USE_X11)
if (features::IsUsingOzonePlatform())
return false;
bool has_compositing_manager = false;
uint8_t depth = 0;
bool using_argb_visual;
if (depth > 0)
return has_compositing_manager;
// testing/xvfb.py runs xvfb and xcompmgr.
std::unique_ptr<base::Environment> env(base::Environment::Create());
has_compositing_manager = env->HasVar("_CHROMIUM_INSIDE_XVFB");
ui::XVisualManager::GetInstance()->ChooseVisualForWindow(
has_compositing_manager, nullptr, &depth, nullptr, &using_argb_visual);
if (using_argb_visual)
EXPECT_EQ(32, depth);
return using_argb_visual;
return ui::DoesVisualHaveAlphaForTest();
#else
return false;
#endif
......@@ -81,7 +75,7 @@ ViewsTestBase::~ViewsTestBase() {
}
void ViewsTestBase::SetUp() {
has_compositing_manager_ = InitializeVisuals();
has_compositing_manager_ = DoesVisualHaveAlphaForTest();
testing::Test::SetUp();
setup_called_ = true;
......
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