| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 "ui/views/corewm/tooltip_controller.h" | 5 #include "ui/views/corewm/tooltip_controller.h" |
| 6 | 6 |
| 7 #include "base/macros.h" | 7 #include "base/macros.h" |
| 8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
| 9 #include "build/build_config.h" | 9 #include "build/build_config.h" |
| 10 #include "ui/aura/client/cursor_client.h" | 10 #include "ui/aura/client/cursor_client.h" |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 } // namespace | 77 } // namespace |
| 78 | 78 |
| 79 class TooltipControllerTest : public ViewsTestBase { | 79 class TooltipControllerTest : public ViewsTestBase { |
| 80 public: | 80 public: |
| 81 TooltipControllerTest() : view_(NULL) {} | 81 TooltipControllerTest() : view_(NULL) {} |
| 82 ~TooltipControllerTest() override {} | 82 ~TooltipControllerTest() override {} |
| 83 | 83 |
| 84 void SetUp() override { | 84 void SetUp() override { |
| 85 ViewsTestBase::SetUp(); | 85 ViewsTestBase::SetUp(); |
| 86 | 86 |
| 87 // TODO: these tests use GetContext(). That should go away for aura-mus |
| 88 // client. http://crbug.com/663781. |
| 89 if (IsAuraMusClient()) |
| 90 return; |
| 91 |
| 87 aura::Window* root_window = GetContext(); | 92 aura::Window* root_window = GetContext(); |
| 88 | 93 |
| 89 new wm::DefaultActivationClient(root_window); | 94 new wm::DefaultActivationClient(root_window); |
| 90 #if defined(OS_CHROMEOS) | 95 #if defined(OS_CHROMEOS) |
| 91 controller_.reset( | 96 controller_.reset( |
| 92 new TooltipController(std::unique_ptr<views::corewm::Tooltip>( | 97 new TooltipController(std::unique_ptr<views::corewm::Tooltip>( |
| 93 new views::corewm::TooltipAura))); | 98 new views::corewm::TooltipAura))); |
| 94 root_window->AddPreTargetHandler(controller_.get()); | 99 root_window->AddPreTargetHandler(controller_.get()); |
| 95 SetTooltipClient(root_window, controller_.get()); | 100 SetTooltipClient(root_window, controller_.get()); |
| 96 #endif | 101 #endif |
| 97 widget_.reset(CreateWidget(root_window)); | 102 widget_.reset(CreateWidget(root_window)); |
| 98 widget_->SetContentsView(new View); | 103 widget_->SetContentsView(new View); |
| 99 view_ = new TooltipTestView; | 104 view_ = new TooltipTestView; |
| 100 widget_->GetContentsView()->AddChildView(view_); | 105 widget_->GetContentsView()->AddChildView(view_); |
| 101 view_->SetBoundsRect(widget_->GetContentsView()->GetLocalBounds()); | 106 view_->SetBoundsRect(widget_->GetContentsView()->GetLocalBounds()); |
| 102 helper_.reset(new TooltipControllerTestHelper( | 107 helper_.reset(new TooltipControllerTestHelper( |
| 103 GetController(widget_.get()))); | 108 GetController(widget_.get()))); |
| 104 generator_.reset(new ui::test::EventGenerator(GetRootWindow())); | 109 generator_.reset(new ui::test::EventGenerator(GetRootWindow())); |
| 105 } | 110 } |
| 106 | 111 |
| 107 void TearDown() override { | 112 void TearDown() override { |
| 113 if (!IsAuraMusClient()) { |
| 108 #if defined(OS_CHROMEOS) | 114 #if defined(OS_CHROMEOS) |
| 109 aura::Window* root_window = GetContext(); | 115 aura::Window* root_window = GetContext(); |
| 110 root_window->RemovePreTargetHandler(controller_.get()); | 116 root_window->RemovePreTargetHandler(controller_.get()); |
| 111 aura::client::SetTooltipClient(root_window, NULL); | 117 aura::client::SetTooltipClient(root_window, NULL); |
| 112 controller_.reset(); | 118 controller_.reset(); |
| 113 #endif | 119 #endif |
| 114 generator_.reset(); | 120 generator_.reset(); |
| 115 helper_.reset(); | 121 helper_.reset(); |
| 116 widget_.reset(); | 122 widget_.reset(); |
| 123 } |
| 117 ViewsTestBase::TearDown(); | 124 ViewsTestBase::TearDown(); |
| 118 } | 125 } |
| 119 | 126 |
| 120 protected: | 127 protected: |
| 121 aura::Window* GetWindow() { | 128 aura::Window* GetWindow() { |
| 122 return widget_->GetNativeWindow(); | 129 return widget_->GetNativeWindow(); |
| 123 } | 130 } |
| 124 | 131 |
| 125 aura::Window* GetRootWindow() { | 132 aura::Window* GetRootWindow() { |
| 126 return GetWindow()->GetRootWindow(); | 133 return GetWindow()->GetRootWindow(); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 158 std::unique_ptr<TooltipController> controller_; | 165 std::unique_ptr<TooltipController> controller_; |
| 159 | 166 |
| 160 #if defined(OS_WIN) | 167 #if defined(OS_WIN) |
| 161 ui::ScopedOleInitializer ole_initializer_; | 168 ui::ScopedOleInitializer ole_initializer_; |
| 162 #endif | 169 #endif |
| 163 | 170 |
| 164 DISALLOW_COPY_AND_ASSIGN(TooltipControllerTest); | 171 DISALLOW_COPY_AND_ASSIGN(TooltipControllerTest); |
| 165 }; | 172 }; |
| 166 | 173 |
| 167 TEST_F(TooltipControllerTest, ViewTooltip) { | 174 TEST_F(TooltipControllerTest, ViewTooltip) { |
| 175 // TODO: these tests use GetContext(). That should go away for aura-mus |
| 176 // client. http://crbug.com/663781. |
| 177 if (IsAuraMusClient()) |
| 178 return; |
| 179 |
| 168 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text")); | 180 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text")); |
| 169 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); | 181 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); |
| 170 EXPECT_EQ(NULL, helper_->GetTooltipWindow()); | 182 EXPECT_EQ(NULL, helper_->GetTooltipWindow()); |
| 171 generator_->MoveMouseToCenterOf(GetWindow()); | 183 generator_->MoveMouseToCenterOf(GetWindow()); |
| 172 | 184 |
| 173 EXPECT_EQ(GetWindow(), GetRootWindow()->GetEventHandlerForPoint( | 185 EXPECT_EQ(GetWindow(), GetRootWindow()->GetEventHandlerForPoint( |
| 174 generator_->current_location())); | 186 generator_->current_location())); |
| 175 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text"); | 187 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text"); |
| 176 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(GetWindow())); | 188 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(GetWindow())); |
| 177 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); | 189 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); |
| 178 EXPECT_EQ(GetWindow(), helper_->GetTooltipWindow()); | 190 EXPECT_EQ(GetWindow(), helper_->GetTooltipWindow()); |
| 179 | 191 |
| 180 // Fire tooltip timer so tooltip becomes visible. | 192 // Fire tooltip timer so tooltip becomes visible. |
| 181 helper_->FireTooltipTimer(); | 193 helper_->FireTooltipTimer(); |
| 182 | 194 |
| 183 EXPECT_TRUE(helper_->IsTooltipVisible()); | 195 EXPECT_TRUE(helper_->IsTooltipVisible()); |
| 184 generator_->MoveMouseBy(1, 0); | 196 generator_->MoveMouseBy(1, 0); |
| 185 | 197 |
| 186 EXPECT_TRUE(helper_->IsTooltipVisible()); | 198 EXPECT_TRUE(helper_->IsTooltipVisible()); |
| 187 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(GetWindow())); | 199 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(GetWindow())); |
| 188 EXPECT_EQ(expected_tooltip, helper_->GetTooltipText()); | 200 EXPECT_EQ(expected_tooltip, helper_->GetTooltipText()); |
| 189 EXPECT_EQ(GetWindow(), helper_->GetTooltipWindow()); | 201 EXPECT_EQ(GetWindow(), helper_->GetTooltipWindow()); |
| 190 } | 202 } |
| 191 | 203 |
| 192 TEST_F(TooltipControllerTest, TooltipsInMultipleViews) { | 204 TEST_F(TooltipControllerTest, TooltipsInMultipleViews) { |
| 205 // TODO: these tests use GetContext(). That should go away for aura-mus |
| 206 // client. http://crbug.com/663781. |
| 207 if (IsAuraMusClient()) |
| 208 return; |
| 209 |
| 193 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text")); | 210 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text")); |
| 194 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); | 211 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); |
| 195 EXPECT_EQ(NULL, helper_->GetTooltipWindow()); | 212 EXPECT_EQ(NULL, helper_->GetTooltipWindow()); |
| 196 | 213 |
| 197 PrepareSecondView(); | 214 PrepareSecondView(); |
| 198 aura::Window* window = GetWindow(); | 215 aura::Window* window = GetWindow(); |
| 199 aura::Window* root_window = GetRootWindow(); | 216 aura::Window* root_window = GetRootWindow(); |
| 200 | 217 |
| 201 // Fire tooltip timer so tooltip becomes visible. | 218 // Fire tooltip timer so tooltip becomes visible. |
| 202 generator_->MoveMouseRelativeTo(window, view_->bounds().CenterPoint()); | 219 generator_->MoveMouseRelativeTo(window, view_->bounds().CenterPoint()); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 218 EXPECT_EQ(window, root_window->GetEventHandlerForPoint( | 235 EXPECT_EQ(window, root_window->GetEventHandlerForPoint( |
| 219 generator_->current_location())); | 236 generator_->current_location())); |
| 220 base::string16 expected_tooltip; // = "" | 237 base::string16 expected_tooltip; // = "" |
| 221 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(window)); | 238 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(window)); |
| 222 EXPECT_EQ(expected_tooltip, helper_->GetTooltipText()); | 239 EXPECT_EQ(expected_tooltip, helper_->GetTooltipText()); |
| 223 EXPECT_EQ(window, helper_->GetTooltipWindow()); | 240 EXPECT_EQ(window, helper_->GetTooltipWindow()); |
| 224 } | 241 } |
| 225 } | 242 } |
| 226 | 243 |
| 227 TEST_F(TooltipControllerTest, EnableOrDisableTooltips) { | 244 TEST_F(TooltipControllerTest, EnableOrDisableTooltips) { |
| 245 // TODO: these tests use GetContext(). That should go away for aura-mus |
| 246 // client. http://crbug.com/663781. |
| 247 if (IsAuraMusClient()) |
| 248 return; |
| 249 |
| 228 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text")); | 250 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text")); |
| 229 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); | 251 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); |
| 230 EXPECT_EQ(NULL, helper_->GetTooltipWindow()); | 252 EXPECT_EQ(NULL, helper_->GetTooltipWindow()); |
| 231 | 253 |
| 232 generator_->MoveMouseRelativeTo(GetWindow(), view_->bounds().CenterPoint()); | 254 generator_->MoveMouseRelativeTo(GetWindow(), view_->bounds().CenterPoint()); |
| 233 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text"); | 255 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text"); |
| 234 | 256 |
| 235 // Fire tooltip timer so tooltip becomes visible. | 257 // Fire tooltip timer so tooltip becomes visible. |
| 236 helper_->FireTooltipTimer(); | 258 helper_->FireTooltipTimer(); |
| 237 EXPECT_TRUE(helper_->IsTooltipVisible()); | 259 EXPECT_TRUE(helper_->IsTooltipVisible()); |
| 238 | 260 |
| 239 // Disable tooltips and check again. | 261 // Disable tooltips and check again. |
| 240 helper_->controller()->SetTooltipsEnabled(false); | 262 helper_->controller()->SetTooltipsEnabled(false); |
| 241 EXPECT_FALSE(helper_->IsTooltipVisible()); | 263 EXPECT_FALSE(helper_->IsTooltipVisible()); |
| 242 helper_->FireTooltipTimer(); | 264 helper_->FireTooltipTimer(); |
| 243 EXPECT_FALSE(helper_->IsTooltipVisible()); | 265 EXPECT_FALSE(helper_->IsTooltipVisible()); |
| 244 | 266 |
| 245 // Enable tooltips back and check again. | 267 // Enable tooltips back and check again. |
| 246 helper_->controller()->SetTooltipsEnabled(true); | 268 helper_->controller()->SetTooltipsEnabled(true); |
| 247 EXPECT_FALSE(helper_->IsTooltipVisible()); | 269 EXPECT_FALSE(helper_->IsTooltipVisible()); |
| 248 helper_->FireTooltipTimer(); | 270 helper_->FireTooltipTimer(); |
| 249 EXPECT_TRUE(helper_->IsTooltipVisible()); | 271 EXPECT_TRUE(helper_->IsTooltipVisible()); |
| 250 } | 272 } |
| 251 | 273 |
| 252 // Verifies tooltip isn't shown if tooltip text consists entirely of whitespace. | 274 // Verifies tooltip isn't shown if tooltip text consists entirely of whitespace. |
| 253 TEST_F(TooltipControllerTest, DontShowEmptyTooltips) { | 275 TEST_F(TooltipControllerTest, DontShowEmptyTooltips) { |
| 276 // TODO: these tests use GetContext(). That should go away for aura-mus |
| 277 // client. http://crbug.com/663781. |
| 278 if (IsAuraMusClient()) |
| 279 return; |
| 280 |
| 254 view_->set_tooltip_text(ASCIIToUTF16(" ")); | 281 view_->set_tooltip_text(ASCIIToUTF16(" ")); |
| 255 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); | 282 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); |
| 256 EXPECT_EQ(NULL, helper_->GetTooltipWindow()); | 283 EXPECT_EQ(NULL, helper_->GetTooltipWindow()); |
| 257 | 284 |
| 258 generator_->MoveMouseRelativeTo(GetWindow(), view_->bounds().CenterPoint()); | 285 generator_->MoveMouseRelativeTo(GetWindow(), view_->bounds().CenterPoint()); |
| 259 | 286 |
| 260 helper_->FireTooltipTimer(); | 287 helper_->FireTooltipTimer(); |
| 261 EXPECT_FALSE(helper_->IsTooltipVisible()); | 288 EXPECT_FALSE(helper_->IsTooltipVisible()); |
| 262 } | 289 } |
| 263 | 290 |
| 264 TEST_F(TooltipControllerTest, TooltipHidesOnKeyPressAndStaysHiddenUntilChange) { | 291 TEST_F(TooltipControllerTest, TooltipHidesOnKeyPressAndStaysHiddenUntilChange) { |
| 292 // TODO: these tests use GetContext(). That should go away for aura-mus |
| 293 // client. http://crbug.com/663781. |
| 294 if (IsAuraMusClient()) |
| 295 return; |
| 296 |
| 265 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text for view 1")); | 297 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text for view 1")); |
| 266 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); | 298 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); |
| 267 EXPECT_EQ(NULL, helper_->GetTooltipWindow()); | 299 EXPECT_EQ(NULL, helper_->GetTooltipWindow()); |
| 268 | 300 |
| 269 TooltipTestView* view2 = PrepareSecondView(); | 301 TooltipTestView* view2 = PrepareSecondView(); |
| 270 view2->set_tooltip_text(ASCIIToUTF16("Tooltip Text for view 2")); | 302 view2->set_tooltip_text(ASCIIToUTF16("Tooltip Text for view 2")); |
| 271 | 303 |
| 272 aura::Window* window = GetWindow(); | 304 aura::Window* window = GetWindow(); |
| 273 | 305 |
| 274 // Fire tooltip timer so tooltip becomes visible. | 306 // Fire tooltip timer so tooltip becomes visible. |
| (...skipping 29 matching lines...) Expand all Loading... |
| 304 helper_->FireTooltipTimer(); | 336 helper_->FireTooltipTimer(); |
| 305 EXPECT_TRUE(helper_->IsTooltipVisible()); | 337 EXPECT_TRUE(helper_->IsTooltipVisible()); |
| 306 EXPECT_TRUE(helper_->IsTooltipShownTimerRunning()); | 338 EXPECT_TRUE(helper_->IsTooltipShownTimerRunning()); |
| 307 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text for view 2"); | 339 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text for view 2"); |
| 308 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(window)); | 340 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(window)); |
| 309 EXPECT_EQ(expected_tooltip, helper_->GetTooltipText()); | 341 EXPECT_EQ(expected_tooltip, helper_->GetTooltipText()); |
| 310 EXPECT_EQ(window, helper_->GetTooltipWindow()); | 342 EXPECT_EQ(window, helper_->GetTooltipWindow()); |
| 311 } | 343 } |
| 312 | 344 |
| 313 TEST_F(TooltipControllerTest, TooltipHidesOnTimeoutAndStaysHiddenUntilChange) { | 345 TEST_F(TooltipControllerTest, TooltipHidesOnTimeoutAndStaysHiddenUntilChange) { |
| 346 // TODO: these tests use GetContext(). That should go away for aura-mus |
| 347 // client. http://crbug.com/663781. |
| 348 if (IsAuraMusClient()) |
| 349 return; |
| 350 |
| 314 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text for view 1")); | 351 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text for view 1")); |
| 315 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); | 352 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); |
| 316 EXPECT_EQ(NULL, helper_->GetTooltipWindow()); | 353 EXPECT_EQ(NULL, helper_->GetTooltipWindow()); |
| 317 | 354 |
| 318 TooltipTestView* view2 = PrepareSecondView(); | 355 TooltipTestView* view2 = PrepareSecondView(); |
| 319 view2->set_tooltip_text(ASCIIToUTF16("Tooltip Text for view 2")); | 356 view2->set_tooltip_text(ASCIIToUTF16("Tooltip Text for view 2")); |
| 320 | 357 |
| 321 aura::Window* window = GetWindow(); | 358 aura::Window* window = GetWindow(); |
| 322 | 359 |
| 323 // Fire tooltip timer so tooltip becomes visible. | 360 // Fire tooltip timer so tooltip becomes visible. |
| (...skipping 29 matching lines...) Expand all Loading... |
| 353 EXPECT_TRUE(helper_->IsTooltipVisible()); | 390 EXPECT_TRUE(helper_->IsTooltipVisible()); |
| 354 EXPECT_TRUE(helper_->IsTooltipShownTimerRunning()); | 391 EXPECT_TRUE(helper_->IsTooltipShownTimerRunning()); |
| 355 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text for view 2"); | 392 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text for view 2"); |
| 356 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(window)); | 393 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(window)); |
| 357 EXPECT_EQ(expected_tooltip, helper_->GetTooltipText()); | 394 EXPECT_EQ(expected_tooltip, helper_->GetTooltipText()); |
| 358 EXPECT_EQ(window, helper_->GetTooltipWindow()); | 395 EXPECT_EQ(window, helper_->GetTooltipWindow()); |
| 359 } | 396 } |
| 360 | 397 |
| 361 // Verifies a mouse exit event hides the tooltips. | 398 // Verifies a mouse exit event hides the tooltips. |
| 362 TEST_F(TooltipControllerTest, HideOnExit) { | 399 TEST_F(TooltipControllerTest, HideOnExit) { |
| 400 // TODO: these tests use GetContext(). That should go away for aura-mus |
| 401 // client. http://crbug.com/663781. |
| 402 if (IsAuraMusClient()) |
| 403 return; |
| 404 |
| 363 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text")); | 405 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text")); |
| 364 generator_->MoveMouseToCenterOf(GetWindow()); | 406 generator_->MoveMouseToCenterOf(GetWindow()); |
| 365 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text"); | 407 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text"); |
| 366 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(GetWindow())); | 408 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(GetWindow())); |
| 367 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); | 409 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); |
| 368 EXPECT_EQ(GetWindow(), helper_->GetTooltipWindow()); | 410 EXPECT_EQ(GetWindow(), helper_->GetTooltipWindow()); |
| 369 | 411 |
| 370 // Fire tooltip timer so tooltip becomes visible. | 412 // Fire tooltip timer so tooltip becomes visible. |
| 371 helper_->FireTooltipTimer(); | 413 helper_->FireTooltipTimer(); |
| 372 | 414 |
| 373 EXPECT_TRUE(helper_->IsTooltipVisible()); | 415 EXPECT_TRUE(helper_->IsTooltipVisible()); |
| 374 generator_->SendMouseExit(); | 416 generator_->SendMouseExit(); |
| 375 EXPECT_FALSE(helper_->IsTooltipVisible()); | 417 EXPECT_FALSE(helper_->IsTooltipVisible()); |
| 376 } | 418 } |
| 377 | 419 |
| 378 TEST_F(TooltipControllerTest, ReshowOnClickAfterEnterExit) { | 420 TEST_F(TooltipControllerTest, ReshowOnClickAfterEnterExit) { |
| 421 // TODO: these tests use GetContext(). That should go away for aura-mus |
| 422 // client. http://crbug.com/663781. |
| 423 if (IsAuraMusClient()) |
| 424 return; |
| 425 |
| 379 // Owned by |view_|. | 426 // Owned by |view_|. |
| 380 TooltipTestView* v1 = new TooltipTestView; | 427 TooltipTestView* v1 = new TooltipTestView; |
| 381 TooltipTestView* v2 = new TooltipTestView; | 428 TooltipTestView* v2 = new TooltipTestView; |
| 382 view_->AddChildView(v1); | 429 view_->AddChildView(v1); |
| 383 view_->AddChildView(v2); | 430 view_->AddChildView(v2); |
| 384 gfx::Rect view_bounds(view_->GetLocalBounds()); | 431 gfx::Rect view_bounds(view_->GetLocalBounds()); |
| 385 view_bounds.set_height(view_bounds.height() / 2); | 432 view_bounds.set_height(view_bounds.height() / 2); |
| 386 v1->SetBoundsRect(view_bounds); | 433 v1->SetBoundsRect(view_bounds); |
| 387 view_bounds.set_y(view_bounds.height()); | 434 view_bounds.set_y(view_bounds.height()); |
| 388 v2->SetBoundsRect(view_bounds); | 435 v2->SetBoundsRect(view_bounds); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 427 | 474 |
| 428 } // namespace | 475 } // namespace |
| 429 | 476 |
| 430 class TooltipControllerCaptureTest : public TooltipControllerTest { | 477 class TooltipControllerCaptureTest : public TooltipControllerTest { |
| 431 public: | 478 public: |
| 432 TooltipControllerCaptureTest() {} | 479 TooltipControllerCaptureTest() {} |
| 433 ~TooltipControllerCaptureTest() override {} | 480 ~TooltipControllerCaptureTest() override {} |
| 434 | 481 |
| 435 void SetUp() override { | 482 void SetUp() override { |
| 436 TooltipControllerTest::SetUp(); | 483 TooltipControllerTest::SetUp(); |
| 484 // TODO: these tests use GetContext(). That should go away for aura-mus |
| 485 // client. http://crbug.com/663781. |
| 486 if (IsAuraMusClient()) |
| 487 return; |
| 488 |
| 437 aura::client::SetScreenPositionClient(GetRootWindow(), | 489 aura::client::SetScreenPositionClient(GetRootWindow(), |
| 438 &screen_position_client_); | 490 &screen_position_client_); |
| 439 } | 491 } |
| 440 | 492 |
| 441 void TearDown() override { | 493 void TearDown() override { |
| 442 aura::client::SetScreenPositionClient(GetRootWindow(), NULL); | 494 if (!IsAuraMusClient()) |
| 495 aura::client::SetScreenPositionClient(GetRootWindow(), NULL); |
| 443 TooltipControllerTest::TearDown(); | 496 TooltipControllerTest::TearDown(); |
| 444 } | 497 } |
| 445 | 498 |
| 446 private: | 499 private: |
| 447 wm::DefaultScreenPositionClient screen_position_client_; | 500 wm::DefaultScreenPositionClient screen_position_client_; |
| 448 std::unique_ptr<display::Screen> desktop_screen_; | 501 std::unique_ptr<display::Screen> desktop_screen_; |
| 449 | 502 |
| 450 DISALLOW_COPY_AND_ASSIGN(TooltipControllerCaptureTest); | 503 DISALLOW_COPY_AND_ASSIGN(TooltipControllerCaptureTest); |
| 451 }; | 504 }; |
| 452 | 505 |
| 453 // Verifies when capture is released the TooltipController resets state. | 506 // Verifies when capture is released the TooltipController resets state. |
| 454 // Flaky on all builders. http://crbug.com/388268 | 507 // Flaky on all builders. http://crbug.com/388268 |
| 455 TEST_F(TooltipControllerCaptureTest, DISABLED_CloseOnCaptureLost) { | 508 TEST_F(TooltipControllerCaptureTest, DISABLED_CloseOnCaptureLost) { |
| 509 // TODO: these tests use GetContext(). That should go away for aura-mus |
| 510 // client. http://crbug.com/663781. |
| 511 if (IsAuraMusClient()) |
| 512 return; |
| 513 |
| 456 view_->GetWidget()->SetCapture(view_); | 514 view_->GetWidget()->SetCapture(view_); |
| 457 RunPendingMessages(); | 515 RunPendingMessages(); |
| 458 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text")); | 516 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text")); |
| 459 generator_->MoveMouseToCenterOf(GetWindow()); | 517 generator_->MoveMouseToCenterOf(GetWindow()); |
| 460 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text"); | 518 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text"); |
| 461 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(GetWindow())); | 519 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(GetWindow())); |
| 462 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); | 520 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); |
| 463 EXPECT_EQ(GetWindow(), helper_->GetTooltipWindow()); | 521 EXPECT_EQ(GetWindow(), helper_->GetTooltipWindow()); |
| 464 | 522 |
| 465 // Fire tooltip timer so tooltip becomes visible. | 523 // Fire tooltip timer so tooltip becomes visible. |
| 466 helper_->FireTooltipTimer(); | 524 helper_->FireTooltipTimer(); |
| 467 | 525 |
| 468 EXPECT_TRUE(helper_->IsTooltipVisible()); | 526 EXPECT_TRUE(helper_->IsTooltipVisible()); |
| 469 view_->GetWidget()->ReleaseCapture(); | 527 view_->GetWidget()->ReleaseCapture(); |
| 470 EXPECT_FALSE(helper_->IsTooltipVisible()); | 528 EXPECT_FALSE(helper_->IsTooltipVisible()); |
| 471 EXPECT_TRUE(helper_->GetTooltipWindow() == NULL); | 529 EXPECT_TRUE(helper_->GetTooltipWindow() == NULL); |
| 472 } | 530 } |
| 473 | 531 |
| 474 // Disabled on linux as DesktopScreenX11::GetWindowAtScreenPoint() doesn't | 532 // Disabled on linux as DesktopScreenX11::GetWindowAtScreenPoint() doesn't |
| 475 // consider z-order. | 533 // consider z-order. |
| 476 // Disabled on Windows due to failing bots. http://crbug.com/604479 | 534 // Disabled on Windows due to failing bots. http://crbug.com/604479 |
| 477 #if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_WIN) | 535 #if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_WIN) |
| 478 #define MAYBE_Capture DISABLED_Capture | 536 #define MAYBE_Capture DISABLED_Capture |
| 479 #else | 537 #else |
| 480 #define MAYBE_Capture Capture | 538 #define MAYBE_Capture Capture |
| 481 #endif | 539 #endif |
| 482 // Verifies the correct window is found for tooltips when there is a capture. | 540 // Verifies the correct window is found for tooltips when there is a capture. |
| 483 TEST_F(TooltipControllerCaptureTest, MAYBE_Capture) { | 541 TEST_F(TooltipControllerCaptureTest, MAYBE_Capture) { |
| 484 // Currently, capture in one test affects capture in other tests. | 542 // Currently, capture in one test affects capture in other tests. |
| 485 if (IsMus()) | 543 // TODO: these tests use GetContext(). That should go away for aura-mus |
| 544 // client. http://crbug.com/663781. |
| 545 if (IsMus() || IsAuraMusClient()) |
| 486 return; | 546 return; |
| 487 | 547 |
| 488 const base::string16 tooltip_text(ASCIIToUTF16("1")); | 548 const base::string16 tooltip_text(ASCIIToUTF16("1")); |
| 489 const base::string16 tooltip_text2(ASCIIToUTF16("2")); | 549 const base::string16 tooltip_text2(ASCIIToUTF16("2")); |
| 490 | 550 |
| 491 widget_->SetBounds(gfx::Rect(0, 0, 200, 200)); | 551 widget_->SetBounds(gfx::Rect(0, 0, 200, 200)); |
| 492 view_->set_tooltip_text(tooltip_text); | 552 view_->set_tooltip_text(tooltip_text); |
| 493 | 553 |
| 494 std::unique_ptr<views::Widget> widget2(CreateWidget(GetContext())); | 554 std::unique_ptr<views::Widget> widget2(CreateWidget(GetContext())); |
| 495 widget2->SetContentsView(new View); | 555 widget2->SetContentsView(new View); |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 639 | 699 |
| 640 // Use for tests that need both views and a TestTooltip. | 700 // Use for tests that need both views and a TestTooltip. |
| 641 class TooltipControllerTest3 : public ViewsTestBase { | 701 class TooltipControllerTest3 : public ViewsTestBase { |
| 642 public: | 702 public: |
| 643 TooltipControllerTest3() : test_tooltip_(new TestTooltip) {} | 703 TooltipControllerTest3() : test_tooltip_(new TestTooltip) {} |
| 644 ~TooltipControllerTest3() override {} | 704 ~TooltipControllerTest3() override {} |
| 645 | 705 |
| 646 void SetUp() override { | 706 void SetUp() override { |
| 647 ViewsTestBase::SetUp(); | 707 ViewsTestBase::SetUp(); |
| 648 | 708 |
| 709 // TODO: these tests use GetContext(). That should go away for aura-mus |
| 710 // client. http://crbug.com/663781. |
| 711 if (IsAuraMusClient()) |
| 712 return; |
| 713 |
| 649 aura::Window* root_window = GetContext(); | 714 aura::Window* root_window = GetContext(); |
| 650 new wm::DefaultActivationClient(root_window); | 715 new wm::DefaultActivationClient(root_window); |
| 651 | 716 |
| 652 widget_.reset(CreateWidget(root_window)); | 717 widget_.reset(CreateWidget(root_window)); |
| 653 widget_->SetContentsView(new View); | 718 widget_->SetContentsView(new View); |
| 654 view_ = new TooltipTestView; | 719 view_ = new TooltipTestView; |
| 655 widget_->GetContentsView()->AddChildView(view_); | 720 widget_->GetContentsView()->AddChildView(view_); |
| 656 view_->SetBoundsRect(widget_->GetContentsView()->GetLocalBounds()); | 721 view_->SetBoundsRect(widget_->GetContentsView()->GetLocalBounds()); |
| 657 | 722 |
| 658 generator_.reset(new ui::test::EventGenerator(GetRootWindow())); | 723 generator_.reset(new ui::test::EventGenerator(GetRootWindow())); |
| 659 controller_.reset(new TooltipController( | 724 controller_.reset(new TooltipController( |
| 660 std::unique_ptr<views::corewm::Tooltip>(test_tooltip_))); | 725 std::unique_ptr<views::corewm::Tooltip>(test_tooltip_))); |
| 661 GetRootWindow()->RemovePreTargetHandler( | 726 GetRootWindow()->RemovePreTargetHandler( |
| 662 static_cast<TooltipController*>(aura::client::GetTooltipClient( | 727 static_cast<TooltipController*>(aura::client::GetTooltipClient( |
| 663 widget_->GetNativeWindow()->GetRootWindow()))); | 728 widget_->GetNativeWindow()->GetRootWindow()))); |
| 664 GetRootWindow()->AddPreTargetHandler(controller_.get()); | 729 GetRootWindow()->AddPreTargetHandler(controller_.get()); |
| 665 helper_.reset(new TooltipControllerTestHelper(controller_.get())); | 730 helper_.reset(new TooltipControllerTestHelper(controller_.get())); |
| 666 SetTooltipClient(GetRootWindow(), controller_.get()); | 731 SetTooltipClient(GetRootWindow(), controller_.get()); |
| 667 } | 732 } |
| 668 | 733 |
| 669 void TearDown() override { | 734 void TearDown() override { |
| 670 GetRootWindow()->RemovePreTargetHandler(controller_.get()); | 735 if (!IsAuraMusClient()) { |
| 671 aura::client::SetTooltipClient(GetRootWindow(), NULL); | 736 GetRootWindow()->RemovePreTargetHandler(controller_.get()); |
| 737 aura::client::SetTooltipClient(GetRootWindow(), NULL); |
| 672 | 738 |
| 673 controller_.reset(); | 739 controller_.reset(); |
| 674 generator_.reset(); | 740 generator_.reset(); |
| 675 helper_.reset(); | 741 helper_.reset(); |
| 676 widget_.reset(); | 742 widget_.reset(); |
| 743 } |
| 677 ViewsTestBase::TearDown(); | 744 ViewsTestBase::TearDown(); |
| 678 } | 745 } |
| 679 | 746 |
| 680 aura::Window* GetWindow() { return widget_->GetNativeWindow(); } | 747 aura::Window* GetWindow() { return widget_->GetNativeWindow(); } |
| 681 | 748 |
| 682 protected: | 749 protected: |
| 683 // Owned by |controller_|. | 750 // Owned by |controller_|. |
| 684 TestTooltip* test_tooltip_; | 751 TestTooltip* test_tooltip_; |
| 685 std::unique_ptr<TooltipControllerTestHelper> helper_; | 752 std::unique_ptr<TooltipControllerTestHelper> helper_; |
| 686 std::unique_ptr<ui::test::EventGenerator> generator_; | 753 std::unique_ptr<ui::test::EventGenerator> generator_; |
| 687 std::unique_ptr<views::Widget> widget_; | 754 std::unique_ptr<views::Widget> widget_; |
| 688 TooltipTestView* view_; | 755 TooltipTestView* view_; |
| 689 | 756 |
| 690 private: | 757 private: |
| 691 std::unique_ptr<TooltipController> controller_; | 758 std::unique_ptr<TooltipController> controller_; |
| 692 | 759 |
| 693 #if defined(OS_WIN) | 760 #if defined(OS_WIN) |
| 694 ui::ScopedOleInitializer ole_initializer_; | 761 ui::ScopedOleInitializer ole_initializer_; |
| 695 #endif | 762 #endif |
| 696 | 763 |
| 697 aura::Window* GetRootWindow() { return GetWindow()->GetRootWindow(); } | 764 aura::Window* GetRootWindow() { return GetWindow()->GetRootWindow(); } |
| 698 | 765 |
| 699 DISALLOW_COPY_AND_ASSIGN(TooltipControllerTest3); | 766 DISALLOW_COPY_AND_ASSIGN(TooltipControllerTest3); |
| 700 }; | 767 }; |
| 701 | 768 |
| 702 TEST_F(TooltipControllerTest3, TooltipPositionChangesOnTwoViewsWithSameLabel) { | 769 TEST_F(TooltipControllerTest3, TooltipPositionChangesOnTwoViewsWithSameLabel) { |
| 770 // TODO: these tests use GetContext(). That should go away for aura-mus |
| 771 // client. http://crbug.com/663781. |
| 772 if (IsAuraMusClient()) |
| 773 return; |
| 774 |
| 703 // Owned by |view_|. | 775 // Owned by |view_|. |
| 704 // These two views have the same tooltip text | 776 // These two views have the same tooltip text |
| 705 TooltipTestView* v1 = new TooltipTestView; | 777 TooltipTestView* v1 = new TooltipTestView; |
| 706 TooltipTestView* v2 = new TooltipTestView; | 778 TooltipTestView* v2 = new TooltipTestView; |
| 707 // v1_1 is a view inside v1 that has an identical tooltip text to that of v1 | 779 // v1_1 is a view inside v1 that has an identical tooltip text to that of v1 |
| 708 // and v2 | 780 // and v2 |
| 709 TooltipTestView* v1_1 = new TooltipTestView; | 781 TooltipTestView* v1_1 = new TooltipTestView; |
| 710 // v2_1 is a view inside v2 that has an identical tooltip text to that of v1 | 782 // v2_1 is a view inside v2 that has an identical tooltip text to that of v1 |
| 711 // and v2 | 783 // and v2 |
| 712 TooltipTestView* v2_1 = new TooltipTestView; | 784 TooltipTestView* v2_1 = new TooltipTestView; |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 800 helper_->FireTooltipTimer(); | 872 helper_->FireTooltipTimer(); |
| 801 tooltip_bounds1 = test_tooltip_->location(); | 873 tooltip_bounds1 = test_tooltip_->location(); |
| 802 | 874 |
| 803 EXPECT_NE(tooltip_bounds1_1, tooltip_bounds1); | 875 EXPECT_NE(tooltip_bounds1_1, tooltip_bounds1); |
| 804 EXPECT_EQ(reference_string, helper_->GetTooltipText()); | 876 EXPECT_EQ(reference_string, helper_->GetTooltipText()); |
| 805 } | 877 } |
| 806 | 878 |
| 807 } // namespace test | 879 } // namespace test |
| 808 } // namespace corewm | 880 } // namespace corewm |
| 809 } // namespace views | 881 } // namespace views |
| OLD | NEW |