Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(127)

Unified Diff: ui/views/widget/widget_unittest.cc

Issue 2280433004: Fix missing shadows for tooltip and menu (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/widget/widget_unittest.cc
diff --git a/ui/views/widget/widget_unittest.cc b/ui/views/widget/widget_unittest.cc
index 95fc77e0acd3fda26940cc855991f4f6d59d608a..b85e3fc89e28f568b55446491e621f247803026b 100644
--- a/ui/views/widget/widget_unittest.cc
+++ b/ui/views/widget/widget_unittest.cc
@@ -7,7 +7,6 @@
#include <set>
#include "base/bind.h"
-#include "base/environment.h"
#include "base/macros.h"
#include "base/message_loop/message_loop.h"
#include "base/run_loop.h"
@@ -48,11 +47,6 @@
#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 {
@@ -3743,17 +3737,6 @@ void InitializeWidgetForOpacity(
Widget& widget,
Widget::InitParams init_params,
const Widget::InitParams::WindowOpacity opacity) {
-#if defined(USE_X11)
- // testing/xvfb.py runs xvfb and xcompmgr.
- std::unique_ptr<base::Environment> env(base::Environment::Create());
- bool has_compositing_manager = env->HasVar("_CHROMIUM_INSIDE_XVFB");
- int depth = 0;
- ui::ChooseVisualForWindow(has_compositing_manager, NULL, &depth);
-
- if (has_compositing_manager)
- EXPECT_EQ(depth, 32);
-#endif
-
init_params.opacity = opacity;
init_params.show_state = ui::SHOW_STATE_NORMAL;
init_params.bounds = gfx::Rect(0, 0, 500, 500);
@@ -3761,32 +3744,79 @@ void InitializeWidgetForOpacity(
init_params.native_widget =
CreatePlatformDesktopNativeWidgetImpl(init_params, &widget, nullptr);
widget.Init(init_params);
+}
+
+class CompositingWidgetTest : public views::test::WidgetTest {
+ public:
+ CompositingWidgetTest()
+ : widget_types_{Widget::InitParams::TYPE_WINDOW,
+ Widget::InitParams::TYPE_PANEL,
+ Widget::InitParams::TYPE_WINDOW_FRAMELESS,
+ Widget::InitParams::TYPE_CONTROL,
+ Widget::InitParams::TYPE_POPUP,
+ Widget::InitParams::TYPE_MENU,
+ Widget::InitParams::TYPE_TOOLTIP,
+ Widget::InitParams::TYPE_BUBBLE,
+ Widget::InitParams::TYPE_DRAG} {}
+ ~CompositingWidgetTest() override {}
+
+ void CheckAllWidgetsForOpacity(
+ const Widget::InitParams::WindowOpacity opacity) {
+ for (const auto& widget_type : widget_types_) {
+#if defined(OS_MACOSX)
+ // Tooltips are native on Mac. See BridgedNativeWidget::Init.
+ if (widget_type == Widget::InitParams::TYPE_TOOLTIP)
+ continue;
+#elif defined(OS_WIN)
+ // Other widget types would require to create a parent window and the
+ // the purpose of this test is mainly X11 in the first place.
+ if (widget_type != Widget::InitParams::TYPE_WINDOW)
+ continue;
+#endif
+ Widget widget;
+ InitializeWidgetForOpacity(widget, CreateParams(widget_type), opacity);
+
+ // Use NativeWidgetAura directly.
+ if (IsMus() &&
+ (widget_type == Widget::InitParams::TYPE_WINDOW_FRAMELESS ||
+ widget_type == Widget::InitParams::TYPE_CONTROL))
+ continue;
+
+ EXPECT_EQ(IsNativeWindowTransparent(widget.GetNativeWindow()),
+ widget.ShouldWindowContentsBeTransparent());
+
+ // When using the Mandoline UI Service, the translucency does not rely on
+ // the widget type.
+ if (IsMus())
+ continue;
#if defined(USE_X11)
- if (has_compositing_manager)
- EXPECT_TRUE(widget.IsTranslucentWindowOpacitySupported());
+ if (HasCompositingManager() &&
+ (widget_type == Widget::InitParams::TYPE_DRAG ||
+ widget_type == Widget::InitParams::TYPE_WINDOW)) {
+ EXPECT_TRUE(widget.IsTranslucentWindowOpacitySupported());
+ } else {
+ EXPECT_FALSE(widget.IsTranslucentWindowOpacitySupported());
+ }
#endif
-}
+ }
+ }
+
+ protected:
+ const std::vector<Widget::InitParams::Type> widget_types_;
+
+ DISALLOW_COPY_AND_ASSIGN(CompositingWidgetTest);
+};
} // namespace
// Test opacity when compositing is enabled.
-TEST_F(WidgetTest, Transparency_DesktopWidgetInferOpacity) {
- Widget widget;
- InitializeWidgetForOpacity(widget,
- CreateParams(Widget::InitParams::TYPE_WINDOW),
- Widget::InitParams::INFER_OPACITY);
- EXPECT_EQ(IsNativeWindowTransparent(widget.GetNativeWindow()),
- widget.ShouldWindowContentsBeTransparent());
+TEST_F(CompositingWidgetTest, Transparency_DesktopWidgetInferOpacity) {
+ CheckAllWidgetsForOpacity(Widget::InitParams::INFER_OPACITY);
}
-TEST_F(WidgetTest, Transparency_DesktopWidgetOpaque) {
- Widget widget;
- InitializeWidgetForOpacity(widget,
- CreateParams(Widget::InitParams::TYPE_WINDOW),
- Widget::InitParams::OPAQUE_WINDOW);
- EXPECT_EQ(IsNativeWindowTransparent(widget.GetNativeWindow()),
- widget.ShouldWindowContentsBeTransparent());
+TEST_F(CompositingWidgetTest, Transparency_DesktopWidgetOpaque) {
+ CheckAllWidgetsForOpacity(Widget::InitParams::OPAQUE_WINDOW);
}
// Failing on Mac. http://cbrug.com/623421
@@ -3797,13 +3827,8 @@ TEST_F(WidgetTest, Transparency_DesktopWidgetOpaque) {
#define MAYBE_Transparency_DesktopWidgetTranslucent \
Transparency_DesktopWidgetTranslucent
#endif
-TEST_F(WidgetTest, MAYBE_Transparency_DesktopWidgetTranslucent) {
- Widget widget;
- InitializeWidgetForOpacity(widget,
- CreateParams(Widget::InitParams::TYPE_WINDOW),
- Widget::InitParams::TRANSLUCENT_WINDOW);
- EXPECT_EQ(IsNativeWindowTransparent(widget.GetNativeWindow()),
- widget.ShouldWindowContentsBeTransparent());
+TEST_F(CompositingWidgetTest, MAYBE_Transparency_DesktopWidgetTranslucent) {
+ CheckAllWidgetsForOpacity(Widget::InitParams::TRANSLUCENT_WINDOW);
}
#endif // !defined(OS_CHROMEOS)
« no previous file with comments | « ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698