Index: ui/views/corewm/tooltip_controller_unittest.cc |
=================================================================== |
--- ui/views/corewm/tooltip_controller_unittest.cc (revision 224198) |
+++ ui/views/corewm/tooltip_controller_unittest.cc (working copy) |
@@ -499,6 +499,47 @@ |
EXPECT_TRUE(tooltip_reparented); |
widget2->Close(); |
} |
+ |
+// This test validates whether the tooltip after becoming visible stays at the |
+// top of the ZOrder in its root window after activation changes. |
+TEST_F(TooltipControllerTest, TooltipAtTopOfZOrderAfterActivation) { |
+ view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text")); |
+ EXPECT_EQ(string16(), helper_->GetTooltipText()); |
+ EXPECT_EQ(NULL, helper_->GetTooltipWindow()); |
+ generator_->MoveMouseToCenterOf(GetWindow()); |
+ |
+ EXPECT_EQ(GetWindow(), GetRootWindow()->GetEventHandlerForPoint( |
+ generator_->current_location())); |
+ string16 expected_tooltip = ASCIIToUTF16("Tooltip Text"); |
+ EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(GetWindow())); |
+ EXPECT_EQ(string16(), helper_->GetTooltipText()); |
+ EXPECT_EQ(GetWindow(), helper_->GetTooltipWindow()); |
+ |
+ // Fire tooltip timer so tooltip becomes visible. |
+ helper_->FireTooltipTimer(); |
+ |
+ EXPECT_TRUE(helper_->IsTooltipVisible()); |
+ generator_->MoveMouseBy(1, 0); |
+ |
+ EXPECT_TRUE(helper_->IsTooltipVisible()); |
+ EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(GetWindow())); |
+ EXPECT_EQ(expected_tooltip, helper_->GetTooltipText()); |
+ EXPECT_EQ(GetWindow(), helper_->GetTooltipWindow()); |
+ |
+ // Fake activation loss and gain in the native widget. This should cause a |
+ // ZOrder change which should not affect the position of the tooltip. |
+ DesktopNativeWidgetAura* native_widget = |
+ static_cast<DesktopNativeWidgetAura*>(widget_->native_widget()); |
+ EXPECT_TRUE(native_widget != NULL); |
+ |
+ native_widget->HandleActivationChanged(false); |
+ native_widget->HandleActivationChanged(true); |
+ |
+ EXPECT_EQ( |
+ widget_->GetNativeWindow()->GetRootWindow()->children().back()->type(), |
+ aura::client::WINDOW_TYPE_TOOLTIP); |
+} |
+ |
#endif |
} // namespace test |