| Index: ui/views/widget/widget_unittest.cc
|
| diff --git a/ui/views/widget/widget_unittest.cc b/ui/views/widget/widget_unittest.cc
|
| index 3dfd3572eb13c4c8a35543682d3651ba3ac60d6f..af6a7e518754288d91ad07d487920a802d19e1f5 100644
|
| --- a/ui/views/widget/widget_unittest.cc
|
| +++ b/ui/views/widget/widget_unittest.cc
|
| @@ -7,6 +7,7 @@
|
| #include <set>
|
|
|
| #include "base/bind.h"
|
| +#include "base/command_line.h"
|
| #include "base/macros.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/run_loop.h"
|
| @@ -47,6 +48,11 @@
|
| #include "base/mac/mac_util.h"
|
| #endif
|
|
|
| +#if defined(USE_X11) && !defined(OS_CHROMEOS)
|
| +#include "ui/base/x/x11_util_internal.h" // nogncheck
|
| +#include "ui/gfx/x/x11_switches.h" // nogncheck
|
| +#endif
|
| +
|
| namespace views {
|
| namespace test {
|
|
|
| @@ -3716,5 +3722,68 @@ TEST_F(WidgetTest, WindowModalOwnerDestroyedEnabledTest) {
|
|
|
| #endif // defined(OS_WIN)
|
|
|
| +#if !defined(OS_CHROMEOS)
|
| +namespace {
|
| +
|
| +// An observer that registers the transparent flag of a widget on creation.
|
| +class WidgetTransparencyObserver : public WidgetObserver {
|
| + public:
|
| + WidgetTransparencyObserver() : transparent_(false) {}
|
| + ~WidgetTransparencyObserver() override {}
|
| +
|
| + bool transparent() { return transparent_; }
|
| +
|
| + // WidgetObserver:
|
| + void OnWidgetCreated(Widget* widget) override {
|
| + EXPECT_TRUE(widget->GetNativeWindow());
|
| + transparent_ =
|
| + WidgetTest::IsNativeWindowTransparent(widget->GetNativeWindow());
|
| + }
|
| +
|
| + private:
|
| + bool transparent_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(WidgetTransparencyObserver);
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| +// Test to ensure that the aura Window remains transparent after its creation
|
| +// has finished if transparent visuals are enabled.
|
| +TEST_F(WidgetTest, Transparency_DesktopWidget) {
|
| +#if defined(USE_X11)
|
| + // On Linux, transparent visuals is currently not activated by default.
|
| + base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
|
| + command_line->AppendSwitch(switches::kEnableTransparentVisuals);
|
| +
|
| + int depth = 0;
|
| + ui::ChooseVisualForWindow(NULL, &depth);
|
| + EXPECT_EQ(depth, 32);
|
| +#endif
|
| +
|
| + Widget::InitParams init_params =
|
| + CreateParams(Widget::InitParams::TYPE_WINDOW);
|
| + init_params.show_state = ui::SHOW_STATE_NORMAL;
|
| + init_params.bounds = gfx::Rect(0, 0, 500, 500);
|
| + init_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
|
| + Widget widget;
|
| + WidgetTransparencyObserver widget_observer;
|
| + init_params.native_widget =
|
| + CreatePlatformDesktopNativeWidgetImpl(init_params, &widget, nullptr);
|
| + widget.AddObserver(&widget_observer);
|
| + widget.Init(init_params);
|
| + widget.Show();
|
| +
|
| + EXPECT_EQ(widget_observer.transparent(),
|
| + IsNativeWindowTransparent(widget.GetNativeWindow()));
|
| + EXPECT_EQ(widget_observer.transparent(),
|
| + widget.ShouldWindowContentsBeTransparent());
|
| +
|
| +#if defined(USE_X11)
|
| + EXPECT_TRUE(widget_observer.transparent());
|
| +#endif
|
| +}
|
| +#endif // !defined(OS_CHROMEOS)
|
| +
|
| } // namespace test
|
| } // namespace views
|
|
|