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

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

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

Powered by Google App Engine
This is Rietveld 408576698