Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ash/shell.h" | 5 #include "ash/shell.h" |
| 6 #include "ash/test/ash_test_base.h" | 6 #include "ash/test/ash_test_base.h" |
| 7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
| 8 #include "ui/aura/env.h" | 8 #include "ui/aura/env.h" |
| 9 #include "ui/aura/window.h" | 9 #include "ui/aura/window.h" |
| 10 #include "ui/aura/window_event_dispatcher.h" | 10 #include "ui/aura/window_event_dispatcher.h" |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 102 AddViewToWidgetAndResize(widget.get(), view); | 102 AddViewToWidgetAndResize(widget.get(), view); |
| 103 view->set_tooltip_text(base::ASCIIToUTF16("Tooltip Text")); | 103 view->set_tooltip_text(base::ASCIIToUTF16("Tooltip Text")); |
| 104 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); | 104 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); |
| 105 EXPECT_EQ(NULL, helper_->GetTooltipWindow()); | 105 EXPECT_EQ(NULL, helper_->GetTooltipWindow()); |
| 106 | 106 |
| 107 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); | 107 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); |
| 108 generator.MoveMouseRelativeTo(widget->GetNativeView(), | 108 generator.MoveMouseRelativeTo(widget->GetNativeView(), |
| 109 view->bounds().CenterPoint()); | 109 view->bounds().CenterPoint()); |
| 110 base::string16 expected_tooltip = base::ASCIIToUTF16("Tooltip Text"); | 110 base::string16 expected_tooltip = base::ASCIIToUTF16("Tooltip Text"); |
| 111 | 111 |
| 112 // Fire tooltip timer so tooltip becomes visible. | 112 // Fire tooltip timer so tooltip becomes visible. |
|
brucedawson
2017/01/06 20:45:23
Comment is no longer accurate.
chengx
2017/01/06 20:58:19
Sure, I will update in the next patch.
chengx
2017/01/06 23:08:31
Comment updated.
| |
| 113 helper_->FireTooltipTimer(); | 113 helper_->UpdateIfRequired(); |
| 114 EXPECT_TRUE(helper_->IsTooltipVisible()); | 114 EXPECT_TRUE(helper_->IsTooltipVisible()); |
| 115 | 115 |
| 116 // Hide the cursor and check again. | 116 // Hide the cursor and check again. |
| 117 ash::Shell::GetInstance()->cursor_manager()->DisableMouseEvents(); | 117 ash::Shell::GetInstance()->cursor_manager()->DisableMouseEvents(); |
| 118 helper_->FireTooltipTimer(); | 118 helper_->UpdateIfRequired(); |
| 119 EXPECT_FALSE(helper_->IsTooltipVisible()); | 119 EXPECT_FALSE(helper_->IsTooltipVisible()); |
| 120 | 120 |
| 121 // Show the cursor and re-check. | 121 // Show the cursor and re-check. |
| 122 RunAllPendingInMessageLoop(); | 122 RunAllPendingInMessageLoop(); |
| 123 ash::Shell::GetInstance()->cursor_manager()->EnableMouseEvents(); | 123 ash::Shell::GetInstance()->cursor_manager()->EnableMouseEvents(); |
| 124 RunAllPendingInMessageLoop(); | 124 RunAllPendingInMessageLoop(); |
| 125 helper_->FireTooltipTimer(); | 125 helper_->UpdateIfRequired(); |
| 126 EXPECT_TRUE(helper_->IsTooltipVisible()); | 126 EXPECT_TRUE(helper_->IsTooltipVisible()); |
| 127 } | 127 } |
| 128 | 128 |
| 129 TEST_F(TooltipControllerTest, TooltipsOnMultiDisplayShouldNotCrash) { | 129 TEST_F(TooltipControllerTest, TooltipsOnMultiDisplayShouldNotCrash) { |
| 130 if (!SupportsMultipleDisplays()) | 130 if (!SupportsMultipleDisplays()) |
| 131 return; | 131 return; |
| 132 | 132 |
| 133 UpdateDisplay("1000x600,600x400"); | 133 UpdateDisplay("1000x600,600x400"); |
| 134 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 134 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
| 135 std::unique_ptr<views::Widget> widget1( | 135 std::unique_ptr<views::Widget> widget1( |
| 136 CreateNewWidgetWithBoundsOn(0, gfx::Rect(10, 10, 100, 100))); | 136 CreateNewWidgetWithBoundsOn(0, gfx::Rect(10, 10, 100, 100))); |
| 137 TooltipTestView* view1 = new TooltipTestView; | 137 TooltipTestView* view1 = new TooltipTestView; |
| 138 AddViewToWidgetAndResize(widget1.get(), view1); | 138 AddViewToWidgetAndResize(widget1.get(), view1); |
| 139 view1->set_tooltip_text(base::ASCIIToUTF16("Tooltip Text for view 1")); | 139 view1->set_tooltip_text(base::ASCIIToUTF16("Tooltip Text for view 1")); |
| 140 EXPECT_EQ(widget1->GetNativeView()->GetRootWindow(), root_windows[0]); | 140 EXPECT_EQ(widget1->GetNativeView()->GetRootWindow(), root_windows[0]); |
| 141 | 141 |
| 142 std::unique_ptr<views::Widget> widget2( | 142 std::unique_ptr<views::Widget> widget2( |
| 143 CreateNewWidgetWithBoundsOn(1, gfx::Rect(1200, 10, 100, 100))); | 143 CreateNewWidgetWithBoundsOn(1, gfx::Rect(1200, 10, 100, 100))); |
| 144 TooltipTestView* view2 = new TooltipTestView; | 144 TooltipTestView* view2 = new TooltipTestView; |
| 145 AddViewToWidgetAndResize(widget2.get(), view2); | 145 AddViewToWidgetAndResize(widget2.get(), view2); |
| 146 view2->set_tooltip_text(base::ASCIIToUTF16("Tooltip Text for view 2")); | 146 view2->set_tooltip_text(base::ASCIIToUTF16("Tooltip Text for view 2")); |
| 147 EXPECT_EQ(widget2->GetNativeView()->GetRootWindow(), root_windows[1]); | 147 EXPECT_EQ(widget2->GetNativeView()->GetRootWindow(), root_windows[1]); |
| 148 | 148 |
| 149 // Show tooltip on second display. | 149 // Show tooltip on second display. |
| 150 ui::test::EventGenerator generator(root_windows[1]); | 150 ui::test::EventGenerator generator(root_windows[1]); |
| 151 generator.MoveMouseRelativeTo(widget2->GetNativeView(), | 151 generator.MoveMouseRelativeTo(widget2->GetNativeView(), |
| 152 view2->bounds().CenterPoint()); | 152 view2->bounds().CenterPoint()); |
| 153 helper_->FireTooltipTimer(); | 153 helper_->UpdateIfRequired(); |
| 154 EXPECT_TRUE(helper_->IsTooltipVisible()); | 154 EXPECT_TRUE(helper_->IsTooltipVisible()); |
| 155 | 155 |
| 156 // Get rid of secondary display. This destroy's the tooltip's aura window. If | 156 // Get rid of secondary display. This destroy's the tooltip's aura window. If |
| 157 // we have handled this case, we will not crash in the following statement. | 157 // we have handled this case, we will not crash in the following statement. |
| 158 UpdateDisplay("1000x600"); | 158 UpdateDisplay("1000x600"); |
| 159 #if !defined(OS_WIN) | 159 #if !defined(OS_WIN) |
| 160 // TODO(cpu): Detangle the window destruction notification. Currently | 160 // TODO(cpu): Detangle the window destruction notification. Currently |
| 161 // the TooltipController::OnWindowDestroyed is not being called then the | 161 // the TooltipController::OnWindowDestroyed is not being called then the |
| 162 // display is torn down so the tooltip is is still there. | 162 // display is torn down so the tooltip is is still there. |
| 163 EXPECT_FALSE(helper_->IsTooltipVisible()); | 163 EXPECT_FALSE(helper_->IsTooltipVisible()); |
| 164 #endif | 164 #endif |
| 165 EXPECT_EQ(widget2->GetNativeView()->GetRootWindow(), root_windows[0]); | 165 EXPECT_EQ(widget2->GetNativeView()->GetRootWindow(), root_windows[0]); |
| 166 | 166 |
| 167 // The tooltip should create a new aura window for itself, so we should still | 167 // The tooltip should create a new aura window for itself, so we should still |
| 168 // be able to show tooltips on the primary display. | 168 // be able to show tooltips on the primary display. |
| 169 ui::test::EventGenerator generator1(root_windows[0]); | 169 ui::test::EventGenerator generator1(root_windows[0]); |
| 170 generator1.MoveMouseRelativeTo(widget1->GetNativeView(), | 170 generator1.MoveMouseRelativeTo(widget1->GetNativeView(), |
| 171 view1->bounds().CenterPoint()); | 171 view1->bounds().CenterPoint()); |
| 172 helper_->FireTooltipTimer(); | 172 helper_->UpdateIfRequired(); |
| 173 EXPECT_TRUE(helper_->IsTooltipVisible()); | 173 EXPECT_TRUE(helper_->IsTooltipVisible()); |
| 174 } | 174 } |
| 175 | 175 |
| 176 } // namespace test | 176 } // namespace test |
| 177 } // namespace ash | 177 } // namespace ash |
| OLD | NEW |