Chromium Code Reviews| Index: ui/views/widget/native_widget_mac_unittest.mm |
| diff --git a/ui/views/widget/native_widget_mac_unittest.mm b/ui/views/widget/native_widget_mac_unittest.mm |
| index c8124a9dec482194166e6a57ab2f116dadb543f5..0386462ee32cee9fe7034eb86a90f15c7055bf13 100644 |
| --- a/ui/views/widget/native_widget_mac_unittest.mm |
| +++ b/ui/views/widget/native_widget_mac_unittest.mm |
| @@ -260,6 +260,27 @@ class SimpleBubbleView : public BubbleDialogDelegateView { |
| DISALLOW_COPY_AND_ASSIGN(SimpleBubbleView); |
| }; |
| +class CustomTooltipView : public View { |
| + public: |
| + CustomTooltipView(const base::string16& tooltip, views::View* tooltip_handler) |
|
tapted
2016/07/15 06:23:44
nit: remove `views::`
kirr
2016/07/15 07:36:09
Done.
|
| + : tooltip_(tooltip), tooltip_handler_(tooltip_handler) {} |
| + |
| + // Overridden from View: |
|
tapted
2016/07/15 06:23:44
nit: just,
// View:
kirr
2016/07/15 07:36:08
Done.
|
| + bool GetTooltipText(const gfx::Point& p, |
| + base::string16* tooltip) const override { |
| + *tooltip = tooltip_; |
| + return true; |
| + } |
| + |
| + View* GetTooltipHandlerForPoint(const gfx::Point& point) override { |
| + return tooltip_handler_ ? tooltip_handler_ : this; |
| + } |
| + |
| + private: |
| + base::string16 tooltip_; |
| + View* tooltip_handler_; // weak |
|
tapted
2016/07/15 06:23:44
nit: // Weak.
kirr
2016/07/15 07:36:09
Done.
|
| +}; |
|
tapted
2016/07/15 06:23:44
nit: DISALLOW_COPY_AND_ASSIGN(CustomTooltipView);
kirr
2016/07/15 07:36:09
Done.
|
| + |
| // Test visibility states triggered externally. |
| TEST_F(NativeWidgetMacTest, HideAndShowExternally) { |
| Widget* widget = CreateTopLevelPlatformWidget(); |
| @@ -809,6 +830,43 @@ TEST_F(NativeWidgetMacTest, Tooltips) { |
| widget->CloseNow(); |
| } |
| +// Tests case when mouse events handles in one widget, |
|
tapted
2016/07/15 06:23:44
nit: handles->are handled, widget->Widget
(also t
kirr
2016/07/15 07:36:08
Done.
|
| +// but tooltip belongs to another. |
| +// It happens in menu widgets, when submenu is shown above parent |
|
tapted
2016/07/15 06:23:44
nit: It happens in menus when a submenu is shown a
kirr
2016/07/15 07:36:09
Done.
|
| +// and parent get MouseExit event. |
| +TEST_F(NativeWidgetMacTest, TwoWidgetTooltips) { |
| + // Init two widgets, one above another. |
| + Widget* widget_below = CreateTopLevelPlatformWidget(); |
| + widget_below->SetBounds(gfx::Rect(50, 50, 200, 200)); |
| + |
| + Widget* widget_above = |
| + CreateChildPlatformWidget(widget_below->GetNativeView()); |
| + widget_above->SetBounds(gfx::Rect(100, 0, 100, 200)); |
| + |
| + const base::string16 tooltip_above = base::ASCIIToUTF16("Front"); |
| + CustomTooltipView* view_above = new CustomTooltipView(tooltip_above, nullptr); |
| + view_above->SetBoundsRect(widget_above->GetContentsView()->bounds()); |
| + widget_above->GetContentsView()->AddChildView(view_above); |
| + |
| + CustomTooltipView* view_below = |
| + new CustomTooltipView(base::ASCIIToUTF16("Back"), view_above); |
| + view_below->SetBoundsRect(widget_below->GetContentsView()->bounds()); |
| + widget_below->GetContentsView()->AddChildView(view_below); |
| + |
| + widget_below->Show(); |
| + widget_above->Show(); |
| + |
| + // Move mouse above second widget and check that it returns tooltip |
| + // for second. Despite that event was handled in the first one. |
| + ui::test::EventGenerator event_generator(GetContext(), |
| + widget_below->GetNativeWindow()); |
| + event_generator.MoveMouseTo(gfx::Point(120, 60)); |
| + EXPECT_EQ(tooltip_above, TooltipTextForWidget(widget_below)); |
| + |
| + widget_above->CloseNow(); |
| + widget_below->CloseNow(); |
| +} |
| + |
| namespace { |
| // Delegate to make Widgets of a provided ui::ModalType. |