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

Side by Side Diff: ui/views/corewm/tooltip_controller_unittest.cc

Issue 2615993002: Remove unnecessary spin in ToolTipController (Closed)
Patch Set: Override OnCursorVisibilityChanged() for auto tooltip update. Created 3 years, 11 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 unified diff | Download patch
OLDNEW
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 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 180
181 TEST_F(TooltipControllerTest, ViewTooltip) { 181 TEST_F(TooltipControllerTest, ViewTooltip) {
182 // TODO: these tests use GetContext(). That should go away for aura-mus 182 // TODO: these tests use GetContext(). That should go away for aura-mus
183 // client. http://crbug.com/663781. 183 // client. http://crbug.com/663781.
184 if (IsMus()) 184 if (IsMus())
185 return; 185 return;
186 186
187 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text")); 187 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text"));
188 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); 188 EXPECT_EQ(base::string16(), helper_->GetTooltipText());
189 EXPECT_EQ(NULL, helper_->GetTooltipWindow()); 189 EXPECT_EQ(NULL, helper_->GetTooltipWindow());
190
190 generator_->MoveMouseToCenterOf(GetWindow()); 191 generator_->MoveMouseToCenterOf(GetWindow());
191 192
192 EXPECT_EQ(GetWindow(), GetRootWindow()->GetEventHandlerForPoint( 193 EXPECT_EQ(GetWindow(), GetRootWindow()->GetEventHandlerForPoint(
193 generator_->current_location())); 194 generator_->current_location()));
194 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text"); 195 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text");
195 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(GetWindow())); 196 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(GetWindow()));
196 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); 197 EXPECT_EQ(expected_tooltip, helper_->GetTooltipText());
197 EXPECT_EQ(GetWindow(), helper_->GetTooltipWindow()); 198 EXPECT_EQ(GetWindow(), helper_->GetTooltipWindow());
198 199
199 // Fire tooltip timer so tooltip becomes visible.
200 helper_->FireTooltipTimer();
201
202 EXPECT_TRUE(helper_->IsTooltipVisible()); 200 EXPECT_TRUE(helper_->IsTooltipVisible());
203 generator_->MoveMouseBy(1, 0); 201 generator_->MoveMouseBy(1, 0);
204 202
205 EXPECT_TRUE(helper_->IsTooltipVisible()); 203 EXPECT_TRUE(helper_->IsTooltipVisible());
206 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(GetWindow())); 204 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(GetWindow()));
207 EXPECT_EQ(expected_tooltip, helper_->GetTooltipText()); 205 EXPECT_EQ(expected_tooltip, helper_->GetTooltipText());
208 EXPECT_EQ(GetWindow(), helper_->GetTooltipWindow()); 206 EXPECT_EQ(GetWindow(), helper_->GetTooltipWindow());
209 } 207 }
210 208
211 #if defined(OS_CHROMEOS) 209 #if defined(OS_CHROMEOS)
212 // crbug.com/664370. 210 // crbug.com/664370.
213 TEST_F(TooltipControllerTest, MaxWidth) { 211 TEST_F(TooltipControllerTest, MaxWidth) {
214 // TODO: these tests use GetContext(). That should go away for mus client. 212 // TODO: these tests use GetContext(). That should go away for mus client.
215 // http://crbug.com/663781. 213 // http://crbug.com/663781.
216 if (IsMus()) 214 if (IsMus())
217 return; 215 return;
218 216
219 base::string16 text = base::ASCIIToUTF16( 217 base::string16 text = base::ASCIIToUTF16(
220 "Really really realy long long long long long tooltips that exceeds max " 218 "Really really realy long long long long long tooltips that exceeds max "
221 "width"); 219 "width");
222 view_->set_tooltip_text(text); 220 view_->set_tooltip_text(text);
223 gfx::Point center = GetWindow()->bounds().CenterPoint(); 221 gfx::Point center = GetWindow()->bounds().CenterPoint();
222
224 generator_->MoveMouseTo(center); 223 generator_->MoveMouseTo(center);
225 224
226 // Fire tooltip timer so tooltip becomes visible.
227 helper_->FireTooltipTimer();
228
229 EXPECT_TRUE(helper_->IsTooltipVisible()); 225 EXPECT_TRUE(helper_->IsTooltipVisible());
230 gfx::RenderText* render_text = 226 gfx::RenderText* render_text =
231 test::TooltipAuraTestApi(tooltip_aura_).GetRenderText(); 227 test::TooltipAuraTestApi(tooltip_aura_).GetRenderText();
232 228
233 int max = helper_->controller()->GetMaxWidth(center); 229 int max = helper_->controller()->GetMaxWidth(center);
234 EXPECT_EQ(max, render_text->display_rect().width()); 230 EXPECT_EQ(max, render_text->display_rect().width());
235 } 231 }
236 #endif 232 #endif
237 233
238 TEST_F(TooltipControllerTest, TooltipsInMultipleViews) { 234 TEST_F(TooltipControllerTest, TooltipsInMultipleViews) {
239 // TODO: these tests use GetContext(). That should go away for aura-mus 235 // TODO: these tests use GetContext(). That should go away for aura-mus
240 // client. http://crbug.com/663781. 236 // client. http://crbug.com/663781.
241 if (IsMus()) 237 if (IsMus())
242 return; 238 return;
243 239
244 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text")); 240 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text"));
245 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); 241 EXPECT_EQ(base::string16(), helper_->GetTooltipText());
246 EXPECT_EQ(NULL, helper_->GetTooltipWindow()); 242 EXPECT_EQ(NULL, helper_->GetTooltipWindow());
247 243
248 PrepareSecondView(); 244 PrepareSecondView();
249 aura::Window* window = GetWindow(); 245 aura::Window* window = GetWindow();
250 aura::Window* root_window = GetRootWindow(); 246 aura::Window* root_window = GetRootWindow();
251 247
252 // Fire tooltip timer so tooltip becomes visible.
253 generator_->MoveMouseRelativeTo(window, view_->bounds().CenterPoint()); 248 generator_->MoveMouseRelativeTo(window, view_->bounds().CenterPoint());
254 helper_->FireTooltipTimer();
255 EXPECT_TRUE(helper_->IsTooltipVisible()); 249 EXPECT_TRUE(helper_->IsTooltipVisible());
256 for (int i = 0; i < 49; ++i) { 250 for (int i = 0; i < 49; ++i) {
257 generator_->MoveMouseBy(1, 0); 251 generator_->MoveMouseBy(1, 0);
258 EXPECT_TRUE(helper_->IsTooltipVisible()); 252 EXPECT_TRUE(helper_->IsTooltipVisible());
259 EXPECT_EQ(window, root_window->GetEventHandlerForPoint( 253 EXPECT_EQ(window, root_window->GetEventHandlerForPoint(
260 generator_->current_location())); 254 generator_->current_location()));
261 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text"); 255 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text");
262 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(window)); 256 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(window));
263 EXPECT_EQ(expected_tooltip, helper_->GetTooltipText()); 257 EXPECT_EQ(expected_tooltip, helper_->GetTooltipText());
264 EXPECT_EQ(window, helper_->GetTooltipWindow()); 258 EXPECT_EQ(window, helper_->GetTooltipWindow());
(...skipping 14 matching lines...) Expand all
279 // TODO: these tests use GetContext(). That should go away for aura-mus 273 // TODO: these tests use GetContext(). That should go away for aura-mus
280 // client. http://crbug.com/663781. 274 // client. http://crbug.com/663781.
281 if (IsMus()) 275 if (IsMus())
282 return; 276 return;
283 277
284 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text")); 278 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text"));
285 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); 279 EXPECT_EQ(base::string16(), helper_->GetTooltipText());
286 EXPECT_EQ(NULL, helper_->GetTooltipWindow()); 280 EXPECT_EQ(NULL, helper_->GetTooltipWindow());
287 281
288 generator_->MoveMouseRelativeTo(GetWindow(), view_->bounds().CenterPoint()); 282 generator_->MoveMouseRelativeTo(GetWindow(), view_->bounds().CenterPoint());
289 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text");
290
291 // Fire tooltip timer so tooltip becomes visible.
292 helper_->FireTooltipTimer();
293 EXPECT_TRUE(helper_->IsTooltipVisible()); 283 EXPECT_TRUE(helper_->IsTooltipVisible());
294 284
295 // Disable tooltips and check again. 285 // Disable tooltips and check again.
296 helper_->controller()->SetTooltipsEnabled(false); 286 helper_->controller()->SetTooltipsEnabled(false);
297 EXPECT_FALSE(helper_->IsTooltipVisible()); 287 EXPECT_FALSE(helper_->IsTooltipVisible());
298 helper_->FireTooltipTimer(); 288 helper_->UpdateIfRequired();
299 EXPECT_FALSE(helper_->IsTooltipVisible()); 289 EXPECT_FALSE(helper_->IsTooltipVisible());
300 290
301 // Enable tooltips back and check again. 291 // Enable tooltips back and check again.
302 helper_->controller()->SetTooltipsEnabled(true); 292 helper_->controller()->SetTooltipsEnabled(true);
303 EXPECT_FALSE(helper_->IsTooltipVisible()); 293 EXPECT_FALSE(helper_->IsTooltipVisible());
304 helper_->FireTooltipTimer(); 294 helper_->UpdateIfRequired();
305 EXPECT_TRUE(helper_->IsTooltipVisible()); 295 EXPECT_TRUE(helper_->IsTooltipVisible());
306 } 296 }
307 297
308 // Verifies tooltip isn't shown if tooltip text consists entirely of whitespace. 298 // Verifies tooltip isn't shown if tooltip text consists entirely of whitespace.
309 TEST_F(TooltipControllerTest, DontShowEmptyTooltips) { 299 TEST_F(TooltipControllerTest, DontShowEmptyTooltips) {
310 // TODO: these tests use GetContext(). That should go away for aura-mus 300 // TODO: these tests use GetContext(). That should go away for aura-mus
311 // client. http://crbug.com/663781. 301 // client. http://crbug.com/663781.
312 if (IsMus()) 302 if (IsMus())
313 return; 303 return;
314 304
315 view_->set_tooltip_text(ASCIIToUTF16(" ")); 305 view_->set_tooltip_text(ASCIIToUTF16(" "));
316 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); 306 EXPECT_EQ(base::string16(), helper_->GetTooltipText());
317 EXPECT_EQ(NULL, helper_->GetTooltipWindow()); 307 EXPECT_EQ(NULL, helper_->GetTooltipWindow());
318 308
319 generator_->MoveMouseRelativeTo(GetWindow(), view_->bounds().CenterPoint()); 309 generator_->MoveMouseRelativeTo(GetWindow(), view_->bounds().CenterPoint());
320
321 helper_->FireTooltipTimer();
322 EXPECT_FALSE(helper_->IsTooltipVisible()); 310 EXPECT_FALSE(helper_->IsTooltipVisible());
323 } 311 }
324 312
325 TEST_F(TooltipControllerTest, TooltipHidesOnKeyPressAndStaysHiddenUntilChange) { 313 TEST_F(TooltipControllerTest, TooltipHidesOnKeyPressAndStaysHiddenUntilChange) {
326 // TODO: these tests use GetContext(). That should go away for aura-mus 314 // TODO: these tests use GetContext(). That should go away for aura-mus
327 // client. http://crbug.com/663781. 315 // client. http://crbug.com/663781.
328 if (IsMus()) 316 if (IsMus())
329 return; 317 return;
330 318
331 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text for view 1")); 319 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text for view 1"));
332 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); 320 EXPECT_EQ(base::string16(), helper_->GetTooltipText());
333 EXPECT_EQ(NULL, helper_->GetTooltipWindow()); 321 EXPECT_EQ(NULL, helper_->GetTooltipWindow());
334 322
335 TooltipTestView* view2 = PrepareSecondView(); 323 TooltipTestView* view2 = PrepareSecondView();
336 view2->set_tooltip_text(ASCIIToUTF16("Tooltip Text for view 2")); 324 view2->set_tooltip_text(ASCIIToUTF16("Tooltip Text for view 2"));
337 325
338 aura::Window* window = GetWindow(); 326 aura::Window* window = GetWindow();
339 327
340 // Fire tooltip timer so tooltip becomes visible.
341 generator_->MoveMouseRelativeTo(window, view_->bounds().CenterPoint()); 328 generator_->MoveMouseRelativeTo(window, view_->bounds().CenterPoint());
342 helper_->FireTooltipTimer();
343 EXPECT_TRUE(helper_->IsTooltipVisible()); 329 EXPECT_TRUE(helper_->IsTooltipVisible());
344 EXPECT_TRUE(helper_->IsTooltipShownTimerRunning()); 330 EXPECT_TRUE(helper_->IsTooltipShownTimerRunning());
345 331
346 generator_->PressKey(ui::VKEY_1, 0); 332 generator_->PressKey(ui::VKEY_1, 0);
347 EXPECT_FALSE(helper_->IsTooltipVisible()); 333 EXPECT_FALSE(helper_->IsTooltipVisible());
348 EXPECT_FALSE(helper_->IsTooltipTimerRunning());
349 EXPECT_FALSE(helper_->IsTooltipShownTimerRunning()); 334 EXPECT_FALSE(helper_->IsTooltipShownTimerRunning());
350 335
351 // Moving the mouse inside |view1| should not change the state of the tooltip 336 // Moving the mouse inside |view1| should not change the state of the tooltip
352 // or the timers. 337 // or the timers.
353 for (int i = 0; i < 49; i++) { 338 for (int i = 0; i < 49; i++) {
354 generator_->MoveMouseBy(1, 0); 339 generator_->MoveMouseBy(1, 0);
355 EXPECT_FALSE(helper_->IsTooltipVisible()); 340 EXPECT_FALSE(helper_->IsTooltipVisible());
356 EXPECT_FALSE(helper_->IsTooltipTimerRunning());
357 EXPECT_FALSE(helper_->IsTooltipShownTimerRunning()); 341 EXPECT_FALSE(helper_->IsTooltipShownTimerRunning());
358 EXPECT_EQ(window, 342 EXPECT_EQ(window,
359 GetRootWindow()->GetEventHandlerForPoint( 343 GetRootWindow()->GetEventHandlerForPoint(
360 generator_->current_location())); 344 generator_->current_location()));
361 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text for view 1"); 345 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text for view 1");
362 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(window)); 346 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(window));
363 EXPECT_EQ(expected_tooltip, helper_->GetTooltipText()); 347 EXPECT_EQ(expected_tooltip, helper_->GetTooltipText());
364 EXPECT_EQ(window, helper_->GetTooltipWindow()); 348 EXPECT_EQ(window, helper_->GetTooltipWindow());
365 } 349 }
366 350
367 // Now we move the mouse on to |view2|. It should re-start the tooltip timer. 351 // Now we move the mouse on to |view2|. It should update the tooltip.
368 generator_->MoveMouseBy(1, 0); 352 generator_->MoveMouseBy(1, 0);
369 EXPECT_TRUE(helper_->IsTooltipTimerRunning()); 353
370 helper_->FireTooltipTimer();
371 EXPECT_TRUE(helper_->IsTooltipVisible()); 354 EXPECT_TRUE(helper_->IsTooltipVisible());
372 EXPECT_TRUE(helper_->IsTooltipShownTimerRunning()); 355 EXPECT_TRUE(helper_->IsTooltipShownTimerRunning());
373 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text for view 2"); 356 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text for view 2");
374 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(window)); 357 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(window));
375 EXPECT_EQ(expected_tooltip, helper_->GetTooltipText()); 358 EXPECT_EQ(expected_tooltip, helper_->GetTooltipText());
376 EXPECT_EQ(window, helper_->GetTooltipWindow()); 359 EXPECT_EQ(window, helper_->GetTooltipWindow());
377 } 360 }
378 361
379 TEST_F(TooltipControllerTest, TooltipHidesOnTimeoutAndStaysHiddenUntilChange) { 362 TEST_F(TooltipControllerTest, TooltipHidesOnTimeoutAndStaysHiddenUntilChange) {
380 // TODO: these tests use GetContext(). That should go away for aura-mus 363 // TODO: these tests use GetContext(). That should go away for aura-mus
381 // client. http://crbug.com/663781. 364 // client. http://crbug.com/663781.
382 if (IsMus()) 365 if (IsMus())
383 return; 366 return;
384 367
385 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text for view 1")); 368 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text for view 1"));
386 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); 369 EXPECT_EQ(base::string16(), helper_->GetTooltipText());
387 EXPECT_EQ(NULL, helper_->GetTooltipWindow()); 370 EXPECT_EQ(NULL, helper_->GetTooltipWindow());
388 371
389 TooltipTestView* view2 = PrepareSecondView(); 372 TooltipTestView* view2 = PrepareSecondView();
390 view2->set_tooltip_text(ASCIIToUTF16("Tooltip Text for view 2")); 373 view2->set_tooltip_text(ASCIIToUTF16("Tooltip Text for view 2"));
391 374
392 aura::Window* window = GetWindow(); 375 aura::Window* window = GetWindow();
393 376
394 // Fire tooltip timer so tooltip becomes visible. 377 // Update tooltip so tooltip becomes visible.
395 generator_->MoveMouseRelativeTo(window, view_->bounds().CenterPoint()); 378 generator_->MoveMouseRelativeTo(window, view_->bounds().CenterPoint());
396 helper_->FireTooltipTimer();
397 EXPECT_TRUE(helper_->IsTooltipVisible()); 379 EXPECT_TRUE(helper_->IsTooltipVisible());
398 EXPECT_TRUE(helper_->IsTooltipShownTimerRunning()); 380 EXPECT_TRUE(helper_->IsTooltipShownTimerRunning());
399 381
400 helper_->FireTooltipShownTimer(); 382 helper_->FireTooltipShownTimer();
401 EXPECT_FALSE(helper_->IsTooltipVisible()); 383 EXPECT_FALSE(helper_->IsTooltipVisible());
402 EXPECT_FALSE(helper_->IsTooltipTimerRunning());
403 EXPECT_FALSE(helper_->IsTooltipShownTimerRunning()); 384 EXPECT_FALSE(helper_->IsTooltipShownTimerRunning());
404 385
405 // Moving the mouse inside |view1| should not change the state of the tooltip 386 // Moving the mouse inside |view1| should not change the state of the tooltip
406 // or the timers. 387 // or the timers.
407 for (int i = 0; i < 49; ++i) { 388 for (int i = 0; i < 49; ++i) {
408 generator_->MoveMouseBy(1, 0); 389 generator_->MoveMouseBy(1, 0);
409 EXPECT_FALSE(helper_->IsTooltipVisible()); 390 EXPECT_FALSE(helper_->IsTooltipVisible());
410 EXPECT_FALSE(helper_->IsTooltipTimerRunning());
411 EXPECT_FALSE(helper_->IsTooltipShownTimerRunning()); 391 EXPECT_FALSE(helper_->IsTooltipShownTimerRunning());
412 EXPECT_EQ(window, GetRootWindow()->GetEventHandlerForPoint( 392 EXPECT_EQ(window, GetRootWindow()->GetEventHandlerForPoint(
413 generator_->current_location())); 393 generator_->current_location()));
414 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text for view 1"); 394 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text for view 1");
415 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(window)); 395 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(window));
416 EXPECT_EQ(expected_tooltip, helper_->GetTooltipText()); 396 EXPECT_EQ(expected_tooltip, helper_->GetTooltipText());
417 EXPECT_EQ(window, helper_->GetTooltipWindow()); 397 EXPECT_EQ(window, helper_->GetTooltipWindow());
418 } 398 }
419 399
420 // Now we move the mouse on to |view2|. It should re-start the tooltip timer. 400 // Now we move the mouse on to |view2|. It should update the tooltip.
421 generator_->MoveMouseBy(1, 0); 401 generator_->MoveMouseBy(1, 0);
422 EXPECT_TRUE(helper_->IsTooltipTimerRunning()); 402
423 helper_->FireTooltipTimer();
424 EXPECT_TRUE(helper_->IsTooltipVisible()); 403 EXPECT_TRUE(helper_->IsTooltipVisible());
425 EXPECT_TRUE(helper_->IsTooltipShownTimerRunning()); 404 EXPECT_TRUE(helper_->IsTooltipShownTimerRunning());
426 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text for view 2"); 405 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text for view 2");
427 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(window)); 406 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(window));
428 EXPECT_EQ(expected_tooltip, helper_->GetTooltipText()); 407 EXPECT_EQ(expected_tooltip, helper_->GetTooltipText());
429 EXPECT_EQ(window, helper_->GetTooltipWindow()); 408 EXPECT_EQ(window, helper_->GetTooltipWindow());
430 } 409 }
431 410
432 // Verifies a mouse exit event hides the tooltips. 411 // Verifies a mouse exit event hides the tooltips.
433 TEST_F(TooltipControllerTest, HideOnExit) { 412 TEST_F(TooltipControllerTest, HideOnExit) {
434 // TODO: these tests use GetContext(). That should go away for aura-mus 413 // TODO: these tests use GetContext(). That should go away for aura-mus
435 // client. http://crbug.com/663781. 414 // client. http://crbug.com/663781.
436 if (IsMus()) 415 if (IsMus())
437 return; 416 return;
438 417
439 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text")); 418 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text"));
440 generator_->MoveMouseToCenterOf(GetWindow()); 419 generator_->MoveMouseToCenterOf(GetWindow());
441 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text"); 420 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text");
442 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(GetWindow())); 421 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(GetWindow()));
443 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); 422 EXPECT_EQ(expected_tooltip, helper_->GetTooltipText());
444 EXPECT_EQ(GetWindow(), helper_->GetTooltipWindow()); 423 EXPECT_EQ(GetWindow(), helper_->GetTooltipWindow());
445 424
446 // Fire tooltip timer so tooltip becomes visible.
447 helper_->FireTooltipTimer();
448
449 EXPECT_TRUE(helper_->IsTooltipVisible()); 425 EXPECT_TRUE(helper_->IsTooltipVisible());
450 generator_->SendMouseExit(); 426 generator_->SendMouseExit();
451 EXPECT_FALSE(helper_->IsTooltipVisible()); 427 EXPECT_FALSE(helper_->IsTooltipVisible());
452 } 428 }
453 429
454 TEST_F(TooltipControllerTest, ReshowOnClickAfterEnterExit) { 430 TEST_F(TooltipControllerTest, ReshowOnClickAfterEnterExit) {
455 // TODO: these tests use GetContext(). That should go away for aura-mus 431 // TODO: these tests use GetContext(). That should go away for aura-mus
456 // client. http://crbug.com/663781. 432 // client. http://crbug.com/663781.
457 if (IsMus()) 433 if (IsMus())
458 return; 434 return;
(...skipping 10 matching lines...) Expand all
469 v2->SetBoundsRect(view_bounds); 445 v2->SetBoundsRect(view_bounds);
470 const base::string16 v1_tt(ASCIIToUTF16("v1")); 446 const base::string16 v1_tt(ASCIIToUTF16("v1"));
471 const base::string16 v2_tt(ASCIIToUTF16("v2")); 447 const base::string16 v2_tt(ASCIIToUTF16("v2"));
472 v1->set_tooltip_text(v1_tt); 448 v1->set_tooltip_text(v1_tt);
473 v2->set_tooltip_text(v2_tt); 449 v2->set_tooltip_text(v2_tt);
474 450
475 gfx::Point v1_point(1, 1); 451 gfx::Point v1_point(1, 1);
476 View::ConvertPointToWidget(v1, &v1_point); 452 View::ConvertPointToWidget(v1, &v1_point);
477 generator_->MoveMouseRelativeTo(GetWindow(), v1_point); 453 generator_->MoveMouseRelativeTo(GetWindow(), v1_point);
478 454
479 // Fire tooltip timer so tooltip becomes visible.
480 helper_->FireTooltipTimer();
481 EXPECT_TRUE(helper_->IsTooltipVisible()); 455 EXPECT_TRUE(helper_->IsTooltipVisible());
482 EXPECT_EQ(v1_tt, helper_->GetTooltipText()); 456 EXPECT_EQ(v1_tt, helper_->GetTooltipText());
483 457
484 // Press the mouse, move to v2 and back to v1. 458 // Press the mouse, move to v2 and back to v1.
485 generator_->ClickLeftButton(); 459 generator_->ClickLeftButton();
486 460
487 gfx::Point v2_point(1, 1); 461 gfx::Point v2_point(1, 1);
488 View::ConvertPointToWidget(v2, &v2_point); 462 View::ConvertPointToWidget(v2, &v2_point);
489 generator_->MoveMouseRelativeTo(GetWindow(), v2_point); 463 generator_->MoveMouseRelativeTo(GetWindow(), v2_point);
490 generator_->MoveMouseRelativeTo(GetWindow(), v1_point); 464 generator_->MoveMouseRelativeTo(GetWindow(), v1_point);
491 465
492 helper_->FireTooltipTimer();
493 EXPECT_TRUE(helper_->IsTooltipVisible()); 466 EXPECT_TRUE(helper_->IsTooltipVisible());
494 EXPECT_EQ(v1_tt, helper_->GetTooltipText()); 467 EXPECT_EQ(v1_tt, helper_->GetTooltipText());
495 } 468 }
496 469
497 namespace { 470 namespace {
498 471
499 // Returns the index of |window| in its parent's children. 472 // Returns the index of |window| in its parent's children.
500 int IndexInParent(const aura::Window* window) { 473 int IndexInParent(const aura::Window* window) {
501 aura::Window::Windows::const_iterator i = 474 aura::Window::Windows::const_iterator i =
502 std::find(window->parent()->children().begin(), 475 std::find(window->parent()->children().begin(),
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 520
548 view_->GetWidget()->SetCapture(view_); 521 view_->GetWidget()->SetCapture(view_);
549 RunPendingMessages(); 522 RunPendingMessages();
550 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text")); 523 view_->set_tooltip_text(ASCIIToUTF16("Tooltip Text"));
551 generator_->MoveMouseToCenterOf(GetWindow()); 524 generator_->MoveMouseToCenterOf(GetWindow());
552 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text"); 525 base::string16 expected_tooltip = ASCIIToUTF16("Tooltip Text");
553 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(GetWindow())); 526 EXPECT_EQ(expected_tooltip, aura::client::GetTooltipText(GetWindow()));
554 EXPECT_EQ(base::string16(), helper_->GetTooltipText()); 527 EXPECT_EQ(base::string16(), helper_->GetTooltipText());
555 EXPECT_EQ(GetWindow(), helper_->GetTooltipWindow()); 528 EXPECT_EQ(GetWindow(), helper_->GetTooltipWindow());
556 529
557 // Fire tooltip timer so tooltip becomes visible.
558 helper_->FireTooltipTimer();
559
560 EXPECT_TRUE(helper_->IsTooltipVisible()); 530 EXPECT_TRUE(helper_->IsTooltipVisible());
561 view_->GetWidget()->ReleaseCapture(); 531 view_->GetWidget()->ReleaseCapture();
562 EXPECT_FALSE(helper_->IsTooltipVisible()); 532 EXPECT_FALSE(helper_->IsTooltipVisible());
563 EXPECT_TRUE(helper_->GetTooltipWindow() == NULL); 533 EXPECT_TRUE(helper_->GetTooltipWindow() == NULL);
564 } 534 }
565 535
566 // Disabled on linux as DesktopScreenX11::GetWindowAtScreenPoint() doesn't 536 // Disabled on linux as DesktopScreenX11::GetWindowAtScreenPoint() doesn't
567 // consider z-order. 537 // consider z-order.
568 // Disabled on Windows due to failing bots. http://crbug.com/604479 538 // Disabled on Windows due to failing bots. http://crbug.com/604479
569 #if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_WIN) 539 #if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_WIN)
(...skipping 25 matching lines...) Expand all
595 565
596 widget_->SetCapture(view_); 566 widget_->SetCapture(view_);
597 EXPECT_TRUE(widget_->HasCapture()); 567 EXPECT_TRUE(widget_->HasCapture());
598 widget2->Show(); 568 widget2->Show();
599 EXPECT_GE(IndexInParent(widget2->GetNativeWindow()), 569 EXPECT_GE(IndexInParent(widget2->GetNativeWindow()),
600 IndexInParent(widget_->GetNativeWindow())); 570 IndexInParent(widget_->GetNativeWindow()));
601 571
602 generator_->MoveMouseRelativeTo(widget_->GetNativeWindow(), 572 generator_->MoveMouseRelativeTo(widget_->GetNativeWindow(),
603 view_->bounds().CenterPoint()); 573 view_->bounds().CenterPoint());
604 574
605 EXPECT_TRUE(helper_->IsTooltipTimerRunning());
606 helper_->FireTooltipTimer();
607 // Even though the mouse is over a window with a tooltip it shouldn't be 575 // Even though the mouse is over a window with a tooltip it shouldn't be
608 // picked up because the windows don't have the same value for 576 // picked up because the windows don't have the same value for
609 // |TooltipManager::kGroupingPropertyKey|. 577 // |TooltipManager::kGroupingPropertyKey|.
610 EXPECT_TRUE(helper_->GetTooltipText().empty()); 578 EXPECT_TRUE(helper_->GetTooltipText().empty());
611 579
612 // Now make both the windows have same transient value for 580 // Now make both the windows have same transient value for
613 // kGroupingPropertyKey. In this case the tooltip should be picked up from 581 // kGroupingPropertyKey. In this case the tooltip should be picked up from
614 // |widget2| (because the mouse is over it). 582 // |widget2| (because the mouse is over it).
615 const int grouping_key = 1; 583 const int grouping_key = 1;
616 widget_->SetNativeWindowProperty(TooltipManager::kGroupingPropertyKey, 584 widget_->SetNativeWindowProperty(TooltipManager::kGroupingPropertyKey,
617 reinterpret_cast<void*>(grouping_key)); 585 reinterpret_cast<void*>(grouping_key));
618 widget2->SetNativeWindowProperty(TooltipManager::kGroupingPropertyKey, 586 widget2->SetNativeWindowProperty(TooltipManager::kGroupingPropertyKey,
619 reinterpret_cast<void*>(grouping_key)); 587 reinterpret_cast<void*>(grouping_key));
620 generator_->MoveMouseBy(1, 10); 588 generator_->MoveMouseBy(1, 10);
621 EXPECT_TRUE(helper_->IsTooltipTimerRunning());
622 helper_->FireTooltipTimer();
623 EXPECT_EQ(tooltip_text2, helper_->GetTooltipText()); 589 EXPECT_EQ(tooltip_text2, helper_->GetTooltipText());
624 590
625 widget2.reset(); 591 widget2.reset();
626 } 592 }
627 593
628 namespace { 594 namespace {
629 595
630 class TestTooltip : public Tooltip { 596 class TestTooltip : public Tooltip {
631 public: 597 public:
632 TestTooltip() : is_visible_(false) {} 598 TestTooltip() : is_visible_(false) {}
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
698 }; 664 };
699 665
700 TEST_F(TooltipControllerTest2, VerifyLeadingTrailingWhitespaceStripped) { 666 TEST_F(TooltipControllerTest2, VerifyLeadingTrailingWhitespaceStripped) {
701 aura::test::TestWindowDelegate test_delegate; 667 aura::test::TestWindowDelegate test_delegate;
702 std::unique_ptr<aura::Window> window( 668 std::unique_ptr<aura::Window> window(
703 CreateNormalWindow(100, root_window(), &test_delegate)); 669 CreateNormalWindow(100, root_window(), &test_delegate));
704 window->SetBounds(gfx::Rect(0, 0, 300, 300)); 670 window->SetBounds(gfx::Rect(0, 0, 300, 300));
705 base::string16 tooltip_text(ASCIIToUTF16(" \nx ")); 671 base::string16 tooltip_text(ASCIIToUTF16(" \nx "));
706 aura::client::SetTooltipText(window.get(), &tooltip_text); 672 aura::client::SetTooltipText(window.get(), &tooltip_text);
707 generator_->MoveMouseToCenterOf(window.get()); 673 generator_->MoveMouseToCenterOf(window.get());
708 helper_->FireTooltipTimer();
709 EXPECT_EQ(ASCIIToUTF16("x"), test_tooltip_->tooltip_text()); 674 EXPECT_EQ(ASCIIToUTF16("x"), test_tooltip_->tooltip_text());
710 } 675 }
711 676
712 // Verifies that tooltip is hidden and tooltip window closed upon cancel mode. 677 // Verifies that tooltip is hidden and tooltip window closed upon cancel mode.
713 TEST_F(TooltipControllerTest2, CloseOnCancelMode) { 678 TEST_F(TooltipControllerTest2, CloseOnCancelMode) {
714 aura::test::TestWindowDelegate test_delegate; 679 aura::test::TestWindowDelegate test_delegate;
715 std::unique_ptr<aura::Window> window( 680 std::unique_ptr<aura::Window> window(
716 CreateNormalWindow(100, root_window(), &test_delegate)); 681 CreateNormalWindow(100, root_window(), &test_delegate));
717 window->SetBounds(gfx::Rect(0, 0, 300, 300)); 682 window->SetBounds(gfx::Rect(0, 0, 300, 300));
718 base::string16 tooltip_text(ASCIIToUTF16("Tooltip Text")); 683 base::string16 tooltip_text(ASCIIToUTF16("Tooltip Text"));
719 aura::client::SetTooltipText(window.get(), &tooltip_text); 684 aura::client::SetTooltipText(window.get(), &tooltip_text);
720 generator_->MoveMouseToCenterOf(window.get()); 685 generator_->MoveMouseToCenterOf(window.get());
721 686
722 // Fire tooltip timer so tooltip becomes visible.
723 helper_->FireTooltipTimer();
724 EXPECT_TRUE(helper_->IsTooltipVisible()); 687 EXPECT_TRUE(helper_->IsTooltipVisible());
725 688
726 // Send OnCancelMode event and verify that tooltip becomes invisible and 689 // Send OnCancelMode event and verify that tooltip becomes invisible and
727 // the tooltip window is closed. 690 // the tooltip window is closed.
728 ui::CancelModeEvent event; 691 ui::CancelModeEvent event;
729 helper_->controller()->OnCancelMode(&event); 692 helper_->controller()->OnCancelMode(&event);
730 EXPECT_FALSE(helper_->IsTooltipVisible()); 693 EXPECT_FALSE(helper_->IsTooltipVisible());
731 EXPECT_TRUE(helper_->GetTooltipWindow() == NULL); 694 EXPECT_TRUE(helper_->GetTooltipWindow() == NULL);
732 } 695 }
733 696
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
842 v1->SetBoundsRect(view_bounds); 805 v1->SetBoundsRect(view_bounds);
843 v1_1->SetBounds(0, 0, 3, 3); 806 v1_1->SetBounds(0, 0, 3, 3);
844 view_bounds.set_y(view_bounds.height()); 807 view_bounds.set_y(view_bounds.height());
845 v2->SetBoundsRect(view_bounds); 808 v2->SetBoundsRect(view_bounds);
846 v2_2->SetBounds(view_bounds.width() - 3, view_bounds.height() - 3, 3, 3); 809 v2_2->SetBounds(view_bounds.width() - 3, view_bounds.height() - 3, 3, 3);
847 v2_1->SetBounds(0, 0, 3, 3); 810 v2_1->SetBounds(0, 0, 3, 3);
848 811
849 // Test whether a toolbar appears on v1 812 // Test whether a toolbar appears on v1
850 gfx::Point center = v1->bounds().CenterPoint(); 813 gfx::Point center = v1->bounds().CenterPoint();
851 generator_->MoveMouseRelativeTo(GetWindow(), center); 814 generator_->MoveMouseRelativeTo(GetWindow(), center);
852 helper_->FireTooltipTimer();
853 EXPECT_TRUE(helper_->IsTooltipVisible()); 815 EXPECT_TRUE(helper_->IsTooltipVisible());
854 EXPECT_EQ(reference_string, helper_->GetTooltipText()); 816 EXPECT_EQ(reference_string, helper_->GetTooltipText());
855 gfx::Point tooltip_bounds1 = test_tooltip_->location(); 817 gfx::Point tooltip_bounds1 = test_tooltip_->location();
856 818
857 // Test whether the toolbar changes position on mouse over v2 819 // Test whether the toolbar changes position on mouse over v2
858 center = v2->bounds().CenterPoint(); 820 center = v2->bounds().CenterPoint();
859 generator_->MoveMouseRelativeTo(GetWindow(), center); 821 generator_->MoveMouseRelativeTo(GetWindow(), center);
860 helper_->FireTooltipTimer();
861 EXPECT_TRUE(helper_->IsTooltipVisible()); 822 EXPECT_TRUE(helper_->IsTooltipVisible());
862 EXPECT_EQ(reference_string, helper_->GetTooltipText()); 823 EXPECT_EQ(reference_string, helper_->GetTooltipText());
863 gfx::Point tooltip_bounds2 = test_tooltip_->location(); 824 gfx::Point tooltip_bounds2 = test_tooltip_->location();
864 825
865 EXPECT_NE(tooltip_bounds1, gfx::Point()); 826 EXPECT_NE(tooltip_bounds1, gfx::Point());
866 EXPECT_NE(tooltip_bounds2, gfx::Point()); 827 EXPECT_NE(tooltip_bounds2, gfx::Point());
867 EXPECT_NE(tooltip_bounds1, tooltip_bounds2); 828 EXPECT_NE(tooltip_bounds1, tooltip_bounds2);
868 829
869 // Test if the toolbar does not change position on encountering a contained 830 // Test if the toolbar does not change position on encountering a contained
870 // view with the same tooltip text 831 // view with the same tooltip text
871 center = v2_1->GetLocalBounds().CenterPoint(); 832 center = v2_1->GetLocalBounds().CenterPoint();
872 views::View::ConvertPointToTarget(v2_1, view_, &center); 833 views::View::ConvertPointToTarget(v2_1, view_, &center);
873 generator_->MoveMouseRelativeTo(GetWindow(), center); 834 generator_->MoveMouseRelativeTo(GetWindow(), center);
874 helper_->FireTooltipTimer();
875 gfx::Point tooltip_bounds2_1 = test_tooltip_->location(); 835 gfx::Point tooltip_bounds2_1 = test_tooltip_->location();
876 836
877 EXPECT_NE(tooltip_bounds2, tooltip_bounds2_1); 837 EXPECT_NE(tooltip_bounds2, tooltip_bounds2_1);
878 EXPECT_TRUE(helper_->IsTooltipVisible()); 838 EXPECT_TRUE(helper_->IsTooltipVisible());
879 EXPECT_EQ(reference_string, helper_->GetTooltipText()); 839 EXPECT_EQ(reference_string, helper_->GetTooltipText());
880 840
881 // Test if the toolbar changes position on encountering a contained 841 // Test if the toolbar changes position on encountering a contained
882 // view with a different tooltip text 842 // view with a different tooltip text
883 center = v2_2->GetLocalBounds().CenterPoint(); 843 center = v2_2->GetLocalBounds().CenterPoint();
884 views::View::ConvertPointToTarget(v2_2, view_, &center); 844 views::View::ConvertPointToTarget(v2_2, view_, &center);
885 generator_->MoveMouseRelativeTo(GetWindow(), center); 845 generator_->MoveMouseRelativeTo(GetWindow(), center);
886 helper_->FireTooltipTimer();
887 gfx::Point tooltip_bounds2_2 = test_tooltip_->location(); 846 gfx::Point tooltip_bounds2_2 = test_tooltip_->location();
888 847
889 EXPECT_NE(tooltip_bounds2_1, tooltip_bounds2_2); 848 EXPECT_NE(tooltip_bounds2_1, tooltip_bounds2_2);
890 EXPECT_TRUE(helper_->IsTooltipVisible()); 849 EXPECT_TRUE(helper_->IsTooltipVisible());
891 EXPECT_EQ(alternative_string, helper_->GetTooltipText()); 850 EXPECT_EQ(alternative_string, helper_->GetTooltipText());
892 851
893 // Test if moving from a view that is contained by a larger view, both with 852 // Test if moving from a view that is contained by a larger view, both with
894 // the same tooltip text, does not change tooltip's position. 853 // the same tooltip text, does not change tooltip's position.
895 center = v1_1->GetLocalBounds().CenterPoint(); 854 center = v1_1->GetLocalBounds().CenterPoint();
896 views::View::ConvertPointToTarget(v1_1, view_, &center); 855 views::View::ConvertPointToTarget(v1_1, view_, &center);
897 generator_->MoveMouseRelativeTo(GetWindow(), center); 856 generator_->MoveMouseRelativeTo(GetWindow(), center);
898 helper_->FireTooltipTimer();
899 gfx::Point tooltip_bounds1_1 = test_tooltip_->location(); 857 gfx::Point tooltip_bounds1_1 = test_tooltip_->location();
900 858
901 EXPECT_TRUE(helper_->IsTooltipVisible()); 859 EXPECT_TRUE(helper_->IsTooltipVisible());
902 EXPECT_EQ(reference_string, helper_->GetTooltipText()); 860 EXPECT_EQ(reference_string, helper_->GetTooltipText());
903 861
904 center = v1->bounds().CenterPoint(); 862 center = v1->bounds().CenterPoint();
905 generator_->MoveMouseRelativeTo(GetWindow(), center); 863 generator_->MoveMouseRelativeTo(GetWindow(), center);
906 helper_->FireTooltipTimer();
907 tooltip_bounds1 = test_tooltip_->location(); 864 tooltip_bounds1 = test_tooltip_->location();
908 865
909 EXPECT_NE(tooltip_bounds1_1, tooltip_bounds1); 866 EXPECT_NE(tooltip_bounds1_1, tooltip_bounds1);
910 EXPECT_EQ(reference_string, helper_->GetTooltipText()); 867 EXPECT_EQ(reference_string, helper_->GetTooltipText());
911 } 868 }
912 869
913 } // namespace test 870 } // namespace test
914 } // namespace corewm 871 } // namespace corewm
915 } // namespace views 872 } // namespace views
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698