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

Side by Side Diff: ui/aura/window_unittest.cc

Issue 1868363002: Replace scoped_ptr with std::unique_ptr in //ui (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@scopedptrcc
Patch Set: scopedptrui: rebase-make_scoped_ptr Created 4 years, 8 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
« no previous file with comments | « ui/aura/window_tree_host_x11.h ('k') | ui/base/accelerators/accelerator.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/aura/window.h" 5 #include "ui/aura/window.h"
6 6
7 #include <limits.h> 7 #include <limits.h>
8 8
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 273
274 void OffsetBounds(Window* window, int horizontal, int vertical) { 274 void OffsetBounds(Window* window, int horizontal, int vertical) {
275 gfx::Rect bounds = window->bounds(); 275 gfx::Rect bounds = window->bounds();
276 bounds.Offset(horizontal, vertical); 276 bounds.Offset(horizontal, vertical);
277 window->SetBounds(bounds); 277 window->SetBounds(bounds);
278 } 278 }
279 279
280 } // namespace 280 } // namespace
281 281
282 TEST_F(WindowTest, GetChildById) { 282 TEST_F(WindowTest, GetChildById) {
283 scoped_ptr<Window> w1(CreateTestWindowWithId(1, root_window())); 283 std::unique_ptr<Window> w1(CreateTestWindowWithId(1, root_window()));
284 scoped_ptr<Window> w11(CreateTestWindowWithId(11, w1.get())); 284 std::unique_ptr<Window> w11(CreateTestWindowWithId(11, w1.get()));
285 scoped_ptr<Window> w111(CreateTestWindowWithId(111, w11.get())); 285 std::unique_ptr<Window> w111(CreateTestWindowWithId(111, w11.get()));
286 scoped_ptr<Window> w12(CreateTestWindowWithId(12, w1.get())); 286 std::unique_ptr<Window> w12(CreateTestWindowWithId(12, w1.get()));
287 287
288 EXPECT_EQ(NULL, w1->GetChildById(57)); 288 EXPECT_EQ(NULL, w1->GetChildById(57));
289 EXPECT_EQ(w12.get(), w1->GetChildById(12)); 289 EXPECT_EQ(w12.get(), w1->GetChildById(12));
290 EXPECT_EQ(w111.get(), w1->GetChildById(111)); 290 EXPECT_EQ(w111.get(), w1->GetChildById(111));
291 } 291 }
292 292
293 // Make sure that Window::Contains correctly handles children, grandchildren, 293 // Make sure that Window::Contains correctly handles children, grandchildren,
294 // and not containing NULL or parents. 294 // and not containing NULL or parents.
295 TEST_F(WindowTest, Contains) { 295 TEST_F(WindowTest, Contains) {
296 Window parent(NULL); 296 Window parent(NULL);
297 parent.Init(ui::LAYER_NOT_DRAWN); 297 parent.Init(ui::LAYER_NOT_DRAWN);
298 Window child1(NULL); 298 Window child1(NULL);
299 child1.Init(ui::LAYER_NOT_DRAWN); 299 child1.Init(ui::LAYER_NOT_DRAWN);
300 Window child2(NULL); 300 Window child2(NULL);
301 child2.Init(ui::LAYER_NOT_DRAWN); 301 child2.Init(ui::LAYER_NOT_DRAWN);
302 302
303 parent.AddChild(&child1); 303 parent.AddChild(&child1);
304 child1.AddChild(&child2); 304 child1.AddChild(&child2);
305 305
306 EXPECT_TRUE(parent.Contains(&parent)); 306 EXPECT_TRUE(parent.Contains(&parent));
307 EXPECT_TRUE(parent.Contains(&child1)); 307 EXPECT_TRUE(parent.Contains(&child1));
308 EXPECT_TRUE(parent.Contains(&child2)); 308 EXPECT_TRUE(parent.Contains(&child2));
309 309
310 EXPECT_FALSE(parent.Contains(NULL)); 310 EXPECT_FALSE(parent.Contains(NULL));
311 EXPECT_FALSE(child1.Contains(&parent)); 311 EXPECT_FALSE(child1.Contains(&parent));
312 EXPECT_FALSE(child2.Contains(&child1)); 312 EXPECT_FALSE(child2.Contains(&child1));
313 } 313 }
314 314
315 TEST_F(WindowTest, ContainsPointInRoot) { 315 TEST_F(WindowTest, ContainsPointInRoot) {
316 scoped_ptr<Window> w( 316 std::unique_ptr<Window> w(CreateTestWindow(
317 CreateTestWindow(SK_ColorWHITE, 1, gfx::Rect(10, 10, 5, 5), 317 SK_ColorWHITE, 1, gfx::Rect(10, 10, 5, 5), root_window()));
318 root_window()));
319 EXPECT_FALSE(w->ContainsPointInRoot(gfx::Point(9, 9))); 318 EXPECT_FALSE(w->ContainsPointInRoot(gfx::Point(9, 9)));
320 EXPECT_TRUE(w->ContainsPointInRoot(gfx::Point(10, 10))); 319 EXPECT_TRUE(w->ContainsPointInRoot(gfx::Point(10, 10)));
321 EXPECT_TRUE(w->ContainsPointInRoot(gfx::Point(14, 14))); 320 EXPECT_TRUE(w->ContainsPointInRoot(gfx::Point(14, 14)));
322 EXPECT_FALSE(w->ContainsPointInRoot(gfx::Point(15, 15))); 321 EXPECT_FALSE(w->ContainsPointInRoot(gfx::Point(15, 15)));
323 EXPECT_FALSE(w->ContainsPointInRoot(gfx::Point(20, 20))); 322 EXPECT_FALSE(w->ContainsPointInRoot(gfx::Point(20, 20)));
324 } 323 }
325 324
326 TEST_F(WindowTest, ContainsPoint) { 325 TEST_F(WindowTest, ContainsPoint) {
327 scoped_ptr<Window> w( 326 std::unique_ptr<Window> w(CreateTestWindow(
328 CreateTestWindow(SK_ColorWHITE, 1, gfx::Rect(10, 10, 5, 5), 327 SK_ColorWHITE, 1, gfx::Rect(10, 10, 5, 5), root_window()));
329 root_window()));
330 EXPECT_TRUE(w->ContainsPoint(gfx::Point(0, 0))); 328 EXPECT_TRUE(w->ContainsPoint(gfx::Point(0, 0)));
331 EXPECT_TRUE(w->ContainsPoint(gfx::Point(4, 4))); 329 EXPECT_TRUE(w->ContainsPoint(gfx::Point(4, 4)));
332 EXPECT_FALSE(w->ContainsPoint(gfx::Point(5, 5))); 330 EXPECT_FALSE(w->ContainsPoint(gfx::Point(5, 5)));
333 EXPECT_FALSE(w->ContainsPoint(gfx::Point(10, 10))); 331 EXPECT_FALSE(w->ContainsPoint(gfx::Point(10, 10)));
334 } 332 }
335 333
336 TEST_F(WindowTest, ConvertPointToWindow) { 334 TEST_F(WindowTest, ConvertPointToWindow) {
337 // Window::ConvertPointToWindow is mostly identical to 335 // Window::ConvertPointToWindow is mostly identical to
338 // Layer::ConvertPointToLayer, except NULL values for |source| are permitted, 336 // Layer::ConvertPointToLayer, except NULL values for |source| are permitted,
339 // in which case the function just returns. 337 // in which case the function just returns.
340 scoped_ptr<Window> w1(CreateTestWindowWithId(1, root_window())); 338 std::unique_ptr<Window> w1(CreateTestWindowWithId(1, root_window()));
341 gfx::Point reference_point(100, 100); 339 gfx::Point reference_point(100, 100);
342 gfx::Point test_point = reference_point; 340 gfx::Point test_point = reference_point;
343 Window::ConvertPointToTarget(NULL, w1.get(), &test_point); 341 Window::ConvertPointToTarget(NULL, w1.get(), &test_point);
344 EXPECT_EQ(reference_point, test_point); 342 EXPECT_EQ(reference_point, test_point);
345 } 343 }
346 344
347 TEST_F(WindowTest, MoveCursorTo) { 345 TEST_F(WindowTest, MoveCursorTo) {
348 scoped_ptr<Window> w1( 346 std::unique_ptr<Window> w1(CreateTestWindow(
349 CreateTestWindow(SK_ColorWHITE, 1, gfx::Rect(10, 10, 500, 500), 347 SK_ColorWHITE, 1, gfx::Rect(10, 10, 500, 500), root_window()));
350 root_window())); 348 std::unique_ptr<Window> w11(
351 scoped_ptr<Window> w11(
352 CreateTestWindow(SK_ColorGREEN, 11, gfx::Rect(5, 5, 100, 100), w1.get())); 349 CreateTestWindow(SK_ColorGREEN, 11, gfx::Rect(5, 5, 100, 100), w1.get()));
353 scoped_ptr<Window> w111( 350 std::unique_ptr<Window> w111(
354 CreateTestWindow(SK_ColorCYAN, 111, gfx::Rect(5, 5, 75, 75), w11.get())); 351 CreateTestWindow(SK_ColorCYAN, 111, gfx::Rect(5, 5, 75, 75), w11.get()));
355 scoped_ptr<Window> w1111( 352 std::unique_ptr<Window> w1111(
356 CreateTestWindow(SK_ColorRED, 1111, gfx::Rect(5, 5, 50, 50), w111.get())); 353 CreateTestWindow(SK_ColorRED, 1111, gfx::Rect(5, 5, 50, 50), w111.get()));
357 354
358 Window* root = root_window(); 355 Window* root = root_window();
359 root->MoveCursorTo(gfx::Point(10, 10)); 356 root->MoveCursorTo(gfx::Point(10, 10));
360 EXPECT_EQ("10,10", 357 EXPECT_EQ("10,10",
361 gfx::Screen::GetScreen()->GetCursorScreenPoint().ToString()); 358 gfx::Screen::GetScreen()->GetCursorScreenPoint().ToString());
362 w1->MoveCursorTo(gfx::Point(10, 10)); 359 w1->MoveCursorTo(gfx::Point(10, 10));
363 EXPECT_EQ("20,20", 360 EXPECT_EQ("20,20",
364 gfx::Screen::GetScreen()->GetCursorScreenPoint().ToString()); 361 gfx::Screen::GetScreen()->GetCursorScreenPoint().ToString());
365 w11->MoveCursorTo(gfx::Point(10, 10)); 362 w11->MoveCursorTo(gfx::Point(10, 10));
366 EXPECT_EQ("25,25", 363 EXPECT_EQ("25,25",
367 gfx::Screen::GetScreen()->GetCursorScreenPoint().ToString()); 364 gfx::Screen::GetScreen()->GetCursorScreenPoint().ToString());
368 w111->MoveCursorTo(gfx::Point(10, 10)); 365 w111->MoveCursorTo(gfx::Point(10, 10));
369 EXPECT_EQ("30,30", 366 EXPECT_EQ("30,30",
370 gfx::Screen::GetScreen()->GetCursorScreenPoint().ToString()); 367 gfx::Screen::GetScreen()->GetCursorScreenPoint().ToString());
371 w1111->MoveCursorTo(gfx::Point(10, 10)); 368 w1111->MoveCursorTo(gfx::Point(10, 10));
372 EXPECT_EQ("35,35", 369 EXPECT_EQ("35,35",
373 gfx::Screen::GetScreen()->GetCursorScreenPoint().ToString()); 370 gfx::Screen::GetScreen()->GetCursorScreenPoint().ToString());
374 } 371 }
375 372
376 TEST_F(WindowTest, ContainsMouse) { 373 TEST_F(WindowTest, ContainsMouse) {
377 scoped_ptr<Window> w( 374 std::unique_ptr<Window> w(CreateTestWindow(
378 CreateTestWindow(SK_ColorWHITE, 1, gfx::Rect(10, 10, 500, 500), 375 SK_ColorWHITE, 1, gfx::Rect(10, 10, 500, 500), root_window()));
379 root_window()));
380 w->Show(); 376 w->Show();
381 WindowTestApi w_test_api(w.get()); 377 WindowTestApi w_test_api(w.get());
382 Window* root = root_window(); 378 Window* root = root_window();
383 root->MoveCursorTo(gfx::Point(10, 10)); 379 root->MoveCursorTo(gfx::Point(10, 10));
384 EXPECT_TRUE(w_test_api.ContainsMouse()); 380 EXPECT_TRUE(w_test_api.ContainsMouse());
385 root->MoveCursorTo(gfx::Point(9, 10)); 381 root->MoveCursorTo(gfx::Point(9, 10));
386 EXPECT_FALSE(w_test_api.ContainsMouse()); 382 EXPECT_FALSE(w_test_api.ContainsMouse());
387 } 383 }
388 384
389 // Test Window::ConvertPointToWindow() with transform to root_window. 385 // Test Window::ConvertPointToWindow() with transform to root_window.
390 TEST_F(WindowTest, MoveCursorToWithTransformRootWindow) { 386 TEST_F(WindowTest, MoveCursorToWithTransformRootWindow) {
391 gfx::Transform transform; 387 gfx::Transform transform;
392 transform.Translate(100.0, 100.0); 388 transform.Translate(100.0, 100.0);
393 transform.Rotate(90.0); 389 transform.Rotate(90.0);
394 transform.Scale(2.0, 5.0); 390 transform.Scale(2.0, 5.0);
395 host()->SetRootTransform(transform); 391 host()->SetRootTransform(transform);
396 host()->MoveCursorTo(gfx::Point(10, 10)); 392 host()->MoveCursorTo(gfx::Point(10, 10));
397 #if !defined(OS_WIN) 393 #if !defined(OS_WIN)
398 // TODO(yoshiki): fix this to build on Windows. See crbug.com/133413.OD 394 // TODO(yoshiki): fix this to build on Windows. See crbug.com/133413.OD
399 EXPECT_EQ("50,120", QueryLatestMousePositionRequestInHost(host()).ToString()); 395 EXPECT_EQ("50,120", QueryLatestMousePositionRequestInHost(host()).ToString());
400 #endif 396 #endif
401 EXPECT_EQ("10,10", 397 EXPECT_EQ("10,10",
402 gfx::Screen::GetScreen()->GetCursorScreenPoint().ToString()); 398 gfx::Screen::GetScreen()->GetCursorScreenPoint().ToString());
403 } 399 }
404 400
405 // Tests Window::ConvertPointToWindow() with transform to non-root windows. 401 // Tests Window::ConvertPointToWindow() with transform to non-root windows.
406 TEST_F(WindowTest, MoveCursorToWithTransformWindow) { 402 TEST_F(WindowTest, MoveCursorToWithTransformWindow) {
407 scoped_ptr<Window> w1( 403 std::unique_ptr<Window> w1(CreateTestWindow(
408 CreateTestWindow(SK_ColorWHITE, 1, gfx::Rect(10, 10, 500, 500), 404 SK_ColorWHITE, 1, gfx::Rect(10, 10, 500, 500), root_window()));
409 root_window()));
410 405
411 gfx::Transform transform1; 406 gfx::Transform transform1;
412 transform1.Scale(2, 2); 407 transform1.Scale(2, 2);
413 w1->SetTransform(transform1); 408 w1->SetTransform(transform1);
414 w1->MoveCursorTo(gfx::Point(10, 10)); 409 w1->MoveCursorTo(gfx::Point(10, 10));
415 EXPECT_EQ("30,30", 410 EXPECT_EQ("30,30",
416 gfx::Screen::GetScreen()->GetCursorScreenPoint().ToString()); 411 gfx::Screen::GetScreen()->GetCursorScreenPoint().ToString());
417 412
418 gfx::Transform transform2; 413 gfx::Transform transform2;
419 transform2.Translate(-10, 20); 414 transform2.Translate(-10, 20);
(...skipping 16 matching lines...) Expand all
436 w1->SetTransform(transform4); 431 w1->SetTransform(transform4);
437 w1->MoveCursorTo(gfx::Point(10, 10)); 432 w1->MoveCursorTo(gfx::Point(10, 10));
438 EXPECT_EQ("60,130", 433 EXPECT_EQ("60,130",
439 gfx::Screen::GetScreen()->GetCursorScreenPoint().ToString()); 434 gfx::Screen::GetScreen()->GetCursorScreenPoint().ToString());
440 } 435 }
441 436
442 // Test Window::ConvertPointToWindow() with complex transforms to both root and 437 // Test Window::ConvertPointToWindow() with complex transforms to both root and
443 // non-root windows. 438 // non-root windows.
444 // Test Window::ConvertPointToWindow() with transform to root_window. 439 // Test Window::ConvertPointToWindow() with transform to root_window.
445 TEST_F(WindowTest, MoveCursorToWithComplexTransform) { 440 TEST_F(WindowTest, MoveCursorToWithComplexTransform) {
446 scoped_ptr<Window> w1( 441 std::unique_ptr<Window> w1(CreateTestWindow(
447 CreateTestWindow(SK_ColorWHITE, 1, gfx::Rect(10, 10, 500, 500), 442 SK_ColorWHITE, 1, gfx::Rect(10, 10, 500, 500), root_window()));
448 root_window())); 443 std::unique_ptr<Window> w11(
449 scoped_ptr<Window> w11(
450 CreateTestWindow(SK_ColorGREEN, 11, gfx::Rect(5, 5, 100, 100), w1.get())); 444 CreateTestWindow(SK_ColorGREEN, 11, gfx::Rect(5, 5, 100, 100), w1.get()));
451 scoped_ptr<Window> w111( 445 std::unique_ptr<Window> w111(
452 CreateTestWindow(SK_ColorCYAN, 111, gfx::Rect(5, 5, 75, 75), w11.get())); 446 CreateTestWindow(SK_ColorCYAN, 111, gfx::Rect(5, 5, 75, 75), w11.get()));
453 scoped_ptr<Window> w1111( 447 std::unique_ptr<Window> w1111(
454 CreateTestWindow(SK_ColorRED, 1111, gfx::Rect(5, 5, 50, 50), w111.get())); 448 CreateTestWindow(SK_ColorRED, 1111, gfx::Rect(5, 5, 50, 50), w111.get()));
455 449
456 // The root window expects transforms that produce integer rects. 450 // The root window expects transforms that produce integer rects.
457 gfx::Transform root_transform; 451 gfx::Transform root_transform;
458 root_transform.Translate(60.0, 70.0); 452 root_transform.Translate(60.0, 70.0);
459 root_transform.Rotate(-90.0); 453 root_transform.Rotate(-90.0);
460 root_transform.Translate(-50.0, -50.0); 454 root_transform.Translate(-50.0, -50.0);
461 root_transform.Scale(2.0, 3.0); 455 root_transform.Scale(2.0, 3.0);
462 456
463 gfx::Transform transform; 457 gfx::Transform transform;
(...skipping 13 matching lines...) Expand all
477 EXPECT_EQ("169,80", QueryLatestMousePositionRequestInHost(host()).ToString()); 471 EXPECT_EQ("169,80", QueryLatestMousePositionRequestInHost(host()).ToString());
478 #endif 472 #endif
479 EXPECT_EQ("20,53", 473 EXPECT_EQ("20,53",
480 gfx::Screen::GetScreen()->GetCursorScreenPoint().ToString()); 474 gfx::Screen::GetScreen()->GetCursorScreenPoint().ToString());
481 } 475 }
482 476
483 // Tests that we do not crash when a Window is destroyed by going out of 477 // Tests that we do not crash when a Window is destroyed by going out of
484 // scope (as opposed to being explicitly deleted by its WindowDelegate). 478 // scope (as opposed to being explicitly deleted by its WindowDelegate).
485 TEST_F(WindowTest, NoCrashOnWindowDelete) { 479 TEST_F(WindowTest, NoCrashOnWindowDelete) {
486 CaptureWindowDelegateImpl delegate; 480 CaptureWindowDelegateImpl delegate;
487 scoped_ptr<Window> window(CreateTestWindowWithDelegate( 481 std::unique_ptr<Window> window(CreateTestWindowWithDelegate(
488 &delegate, 0, gfx::Rect(0, 0, 20, 20), root_window())); 482 &delegate, 0, gfx::Rect(0, 0, 20, 20), root_window()));
489 } 483 }
490 484
491 TEST_F(WindowTest, GetEventHandlerForPoint) { 485 TEST_F(WindowTest, GetEventHandlerForPoint) {
492 scoped_ptr<Window> w1( 486 std::unique_ptr<Window> w1(CreateTestWindow(
493 CreateTestWindow(SK_ColorWHITE, 1, gfx::Rect(10, 10, 500, 500), 487 SK_ColorWHITE, 1, gfx::Rect(10, 10, 500, 500), root_window()));
494 root_window())); 488 std::unique_ptr<Window> w11(
495 scoped_ptr<Window> w11(
496 CreateTestWindow(SK_ColorGREEN, 11, gfx::Rect(5, 5, 100, 100), w1.get())); 489 CreateTestWindow(SK_ColorGREEN, 11, gfx::Rect(5, 5, 100, 100), w1.get()));
497 scoped_ptr<Window> w111( 490 std::unique_ptr<Window> w111(
498 CreateTestWindow(SK_ColorCYAN, 111, gfx::Rect(5, 5, 75, 75), w11.get())); 491 CreateTestWindow(SK_ColorCYAN, 111, gfx::Rect(5, 5, 75, 75), w11.get()));
499 scoped_ptr<Window> w1111( 492 std::unique_ptr<Window> w1111(
500 CreateTestWindow(SK_ColorRED, 1111, gfx::Rect(5, 5, 50, 50), w111.get())); 493 CreateTestWindow(SK_ColorRED, 1111, gfx::Rect(5, 5, 50, 50), w111.get()));
501 scoped_ptr<Window> w12( 494 std::unique_ptr<Window> w12(CreateTestWindow(
502 CreateTestWindow(SK_ColorMAGENTA, 12, gfx::Rect(10, 420, 25, 25), 495 SK_ColorMAGENTA, 12, gfx::Rect(10, 420, 25, 25), w1.get()));
503 w1.get())); 496 std::unique_ptr<Window> w121(
504 scoped_ptr<Window> w121(
505 CreateTestWindow(SK_ColorYELLOW, 121, gfx::Rect(5, 5, 5, 5), w12.get())); 497 CreateTestWindow(SK_ColorYELLOW, 121, gfx::Rect(5, 5, 5, 5), w12.get()));
506 scoped_ptr<Window> w13( 498 std::unique_ptr<Window> w13(
507 CreateTestWindow(SK_ColorGRAY, 13, gfx::Rect(5, 470, 50, 50), w1.get())); 499 CreateTestWindow(SK_ColorGRAY, 13, gfx::Rect(5, 470, 50, 50), w1.get()));
508 500
509 Window* root = root_window(); 501 Window* root = root_window();
510 w1->parent()->SetBounds(gfx::Rect(500, 500)); 502 w1->parent()->SetBounds(gfx::Rect(500, 500));
511 EXPECT_EQ(NULL, root->GetEventHandlerForPoint(gfx::Point(5, 5))); 503 EXPECT_EQ(NULL, root->GetEventHandlerForPoint(gfx::Point(5, 5)));
512 EXPECT_EQ(w1.get(), root->GetEventHandlerForPoint(gfx::Point(11, 11))); 504 EXPECT_EQ(w1.get(), root->GetEventHandlerForPoint(gfx::Point(11, 11)));
513 EXPECT_EQ(w11.get(), root->GetEventHandlerForPoint(gfx::Point(16, 16))); 505 EXPECT_EQ(w11.get(), root->GetEventHandlerForPoint(gfx::Point(16, 16)));
514 EXPECT_EQ(w111.get(), root->GetEventHandlerForPoint(gfx::Point(21, 21))); 506 EXPECT_EQ(w111.get(), root->GetEventHandlerForPoint(gfx::Point(21, 21)));
515 EXPECT_EQ(w1111.get(), root->GetEventHandlerForPoint(gfx::Point(26, 26))); 507 EXPECT_EQ(w1111.get(), root->GetEventHandlerForPoint(gfx::Point(26, 26)));
516 EXPECT_EQ(w12.get(), root->GetEventHandlerForPoint(gfx::Point(21, 431))); 508 EXPECT_EQ(w12.get(), root->GetEventHandlerForPoint(gfx::Point(21, 431)));
517 EXPECT_EQ(w121.get(), root->GetEventHandlerForPoint(gfx::Point(26, 436))); 509 EXPECT_EQ(w121.get(), root->GetEventHandlerForPoint(gfx::Point(26, 436)));
518 EXPECT_EQ(w13.get(), root->GetEventHandlerForPoint(gfx::Point(26, 481))); 510 EXPECT_EQ(w13.get(), root->GetEventHandlerForPoint(gfx::Point(26, 481)));
519 } 511 }
520 512
521 TEST_F(WindowTest, GetEventHandlerForPointWithOverride) { 513 TEST_F(WindowTest, GetEventHandlerForPointWithOverride) {
522 // If our child is flush to our top-left corner he gets events just inside the 514 // If our child is flush to our top-left corner he gets events just inside the
523 // window edges. 515 // window edges.
524 scoped_ptr<Window> parent( 516 std::unique_ptr<Window> parent(CreateTestWindow(
525 CreateTestWindow(SK_ColorWHITE, 1, gfx::Rect(10, 20, 400, 500), 517 SK_ColorWHITE, 1, gfx::Rect(10, 20, 400, 500), root_window()));
526 root_window())); 518 std::unique_ptr<Window> child(
527 scoped_ptr<Window> child(
528 CreateTestWindow(SK_ColorRED, 2, gfx::Rect(0, 0, 60, 70), parent.get())); 519 CreateTestWindow(SK_ColorRED, 2, gfx::Rect(0, 0, 60, 70), parent.get()));
529 EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(gfx::Point(0, 0))); 520 EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(gfx::Point(0, 0)));
530 EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(gfx::Point(1, 1))); 521 EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(gfx::Point(1, 1)));
531 522
532 // We can override the hit test bounds of the parent to make the parent grab 523 // We can override the hit test bounds of the parent to make the parent grab
533 // events along that edge. 524 // events along that edge.
534 parent->set_hit_test_bounds_override_inner(gfx::Insets(1, 1, 1, 1)); 525 parent->set_hit_test_bounds_override_inner(gfx::Insets(1, 1, 1, 1));
535 EXPECT_EQ(parent.get(), parent->GetEventHandlerForPoint(gfx::Point(0, 0))); 526 EXPECT_EQ(parent.get(), parent->GetEventHandlerForPoint(gfx::Point(0, 0)));
536 EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(gfx::Point(1, 1))); 527 EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(gfx::Point(1, 1)));
537 } 528 }
538 529
539 TEST_F(WindowTest, GetEventHandlerForPointWithOverrideDescendingOrder) { 530 TEST_F(WindowTest, GetEventHandlerForPointWithOverrideDescendingOrder) {
540 scoped_ptr<SelfEventHandlingWindowDelegate> parent_delegate( 531 std::unique_ptr<SelfEventHandlingWindowDelegate> parent_delegate(
541 new SelfEventHandlingWindowDelegate); 532 new SelfEventHandlingWindowDelegate);
542 scoped_ptr<Window> parent(CreateTestWindowWithDelegate( 533 std::unique_ptr<Window> parent(CreateTestWindowWithDelegate(
543 parent_delegate.get(), 1, gfx::Rect(10, 20, 400, 500), root_window())); 534 parent_delegate.get(), 1, gfx::Rect(10, 20, 400, 500), root_window()));
544 scoped_ptr<Window> child( 535 std::unique_ptr<Window> child(CreateTestWindow(
545 CreateTestWindow(SK_ColorRED, 2, gfx::Rect(0, 0, 390, 480), 536 SK_ColorRED, 2, gfx::Rect(0, 0, 390, 480), parent.get()));
546 parent.get()));
547 537
548 // We can override ShouldDescendIntoChildForEventHandling to make the parent 538 // We can override ShouldDescendIntoChildForEventHandling to make the parent
549 // grab all events. 539 // grab all events.
550 EXPECT_EQ(parent.get(), parent->GetEventHandlerForPoint(gfx::Point(0, 0))); 540 EXPECT_EQ(parent.get(), parent->GetEventHandlerForPoint(gfx::Point(0, 0)));
551 EXPECT_EQ(parent.get(), parent->GetEventHandlerForPoint(gfx::Point(50, 50))); 541 EXPECT_EQ(parent.get(), parent->GetEventHandlerForPoint(gfx::Point(50, 50)));
552 } 542 }
553 543
554 TEST_F(WindowTest, GetTopWindowContainingPoint) { 544 TEST_F(WindowTest, GetTopWindowContainingPoint) {
555 Window* root = root_window(); 545 Window* root = root_window();
556 root->SetBounds(gfx::Rect(0, 0, 300, 300)); 546 root->SetBounds(gfx::Rect(0, 0, 300, 300));
557 547
558 scoped_ptr<Window> w1( 548 std::unique_ptr<Window> w1(CreateTestWindow(
559 CreateTestWindow(SK_ColorWHITE, 1, gfx::Rect(10, 10, 100, 100), 549 SK_ColorWHITE, 1, gfx::Rect(10, 10, 100, 100), root_window()));
560 root_window())); 550 std::unique_ptr<Window> w11(
561 scoped_ptr<Window> w11(
562 CreateTestWindow(SK_ColorGREEN, 11, gfx::Rect(0, 0, 120, 120), w1.get())); 551 CreateTestWindow(SK_ColorGREEN, 11, gfx::Rect(0, 0, 120, 120), w1.get()));
563 552
564 scoped_ptr<Window> w2( 553 std::unique_ptr<Window> w2(
565 CreateTestWindow(SK_ColorRED, 2, gfx::Rect(5, 5, 55, 55), 554 CreateTestWindow(SK_ColorRED, 2, gfx::Rect(5, 5, 55, 55), root_window()));
566 root_window()));
567 555
568 scoped_ptr<Window> w3( 556 std::unique_ptr<Window> w3(CreateTestWindowWithDelegate(
569 CreateTestWindowWithDelegate( 557 NULL, 3, gfx::Rect(200, 200, 100, 100), root_window()));
570 NULL, 3, gfx::Rect(200, 200, 100, 100), root_window())); 558 std::unique_ptr<Window> w31(
571 scoped_ptr<Window> w31(
572 CreateTestWindow(SK_ColorCYAN, 31, gfx::Rect(0, 0, 50, 50), w3.get())); 559 CreateTestWindow(SK_ColorCYAN, 31, gfx::Rect(0, 0, 50, 50), w3.get()));
573 scoped_ptr<Window> w311( 560 std::unique_ptr<Window> w311(
574 CreateTestWindow(SK_ColorBLUE, 311, gfx::Rect(0, 0, 10, 10), w31.get())); 561 CreateTestWindow(SK_ColorBLUE, 311, gfx::Rect(0, 0, 10, 10), w31.get()));
575 562
576 EXPECT_EQ(NULL, root->GetTopWindowContainingPoint(gfx::Point(0, 0))); 563 EXPECT_EQ(NULL, root->GetTopWindowContainingPoint(gfx::Point(0, 0)));
577 EXPECT_EQ(w2.get(), root->GetTopWindowContainingPoint(gfx::Point(5, 5))); 564 EXPECT_EQ(w2.get(), root->GetTopWindowContainingPoint(gfx::Point(5, 5)));
578 EXPECT_EQ(w2.get(), root->GetTopWindowContainingPoint(gfx::Point(10, 10))); 565 EXPECT_EQ(w2.get(), root->GetTopWindowContainingPoint(gfx::Point(10, 10)));
579 EXPECT_EQ(w2.get(), root->GetTopWindowContainingPoint(gfx::Point(59, 59))); 566 EXPECT_EQ(w2.get(), root->GetTopWindowContainingPoint(gfx::Point(59, 59)));
580 EXPECT_EQ(w1.get(), root->GetTopWindowContainingPoint(gfx::Point(60, 60))); 567 EXPECT_EQ(w1.get(), root->GetTopWindowContainingPoint(gfx::Point(60, 60)));
581 EXPECT_EQ(w1.get(), root->GetTopWindowContainingPoint(gfx::Point(109, 109))); 568 EXPECT_EQ(w1.get(), root->GetTopWindowContainingPoint(gfx::Point(109, 109)));
582 EXPECT_EQ(NULL, root->GetTopWindowContainingPoint(gfx::Point(110, 110))); 569 EXPECT_EQ(NULL, root->GetTopWindowContainingPoint(gfx::Point(110, 110)));
583 EXPECT_EQ(w31.get(), root->GetTopWindowContainingPoint(gfx::Point(200, 200))); 570 EXPECT_EQ(w31.get(), root->GetTopWindowContainingPoint(gfx::Point(200, 200)));
584 EXPECT_EQ(w31.get(), root->GetTopWindowContainingPoint(gfx::Point(220, 220))); 571 EXPECT_EQ(w31.get(), root->GetTopWindowContainingPoint(gfx::Point(220, 220)));
585 EXPECT_EQ(NULL, root->GetTopWindowContainingPoint(gfx::Point(260, 260))); 572 EXPECT_EQ(NULL, root->GetTopWindowContainingPoint(gfx::Point(260, 260)));
586 } 573 }
587 574
588 TEST_F(WindowTest, GetToplevelWindow) { 575 TEST_F(WindowTest, GetToplevelWindow) {
589 const gfx::Rect kBounds(0, 0, 10, 10); 576 const gfx::Rect kBounds(0, 0, 10, 10);
590 TestWindowDelegate delegate; 577 TestWindowDelegate delegate;
591 578
592 scoped_ptr<Window> w1(CreateTestWindowWithId(1, root_window())); 579 std::unique_ptr<Window> w1(CreateTestWindowWithId(1, root_window()));
593 scoped_ptr<Window> w11( 580 std::unique_ptr<Window> w11(
594 CreateTestWindowWithDelegate(&delegate, 11, kBounds, w1.get())); 581 CreateTestWindowWithDelegate(&delegate, 11, kBounds, w1.get()));
595 scoped_ptr<Window> w111(CreateTestWindowWithId(111, w11.get())); 582 std::unique_ptr<Window> w111(CreateTestWindowWithId(111, w11.get()));
596 scoped_ptr<Window> w1111( 583 std::unique_ptr<Window> w1111(
597 CreateTestWindowWithDelegate(&delegate, 1111, kBounds, w111.get())); 584 CreateTestWindowWithDelegate(&delegate, 1111, kBounds, w111.get()));
598 585
599 EXPECT_TRUE(root_window()->GetToplevelWindow() == NULL); 586 EXPECT_TRUE(root_window()->GetToplevelWindow() == NULL);
600 EXPECT_TRUE(w1->GetToplevelWindow() == NULL); 587 EXPECT_TRUE(w1->GetToplevelWindow() == NULL);
601 EXPECT_EQ(w11.get(), w11->GetToplevelWindow()); 588 EXPECT_EQ(w11.get(), w11->GetToplevelWindow());
602 EXPECT_EQ(w11.get(), w111->GetToplevelWindow()); 589 EXPECT_EQ(w11.get(), w111->GetToplevelWindow());
603 EXPECT_EQ(w11.get(), w1111->GetToplevelWindow()); 590 EXPECT_EQ(w11.get(), w1111->GetToplevelWindow());
604 } 591 }
605 592
606 class AddedToRootWindowObserver : public WindowObserver { 593 class AddedToRootWindowObserver : public WindowObserver {
607 public: 594 public:
608 AddedToRootWindowObserver() : called_(false) {} 595 AddedToRootWindowObserver() : called_(false) {}
609 596
610 void OnWindowAddedToRootWindow(Window* window) override { called_ = true; } 597 void OnWindowAddedToRootWindow(Window* window) override { called_ = true; }
611 598
612 bool called() const { return called_; } 599 bool called() const { return called_; }
613 600
614 private: 601 private:
615 bool called_; 602 bool called_;
616 603
617 DISALLOW_COPY_AND_ASSIGN(AddedToRootWindowObserver); 604 DISALLOW_COPY_AND_ASSIGN(AddedToRootWindowObserver);
618 }; 605 };
619 606
620 TEST_F(WindowTest, WindowAddedToRootWindowShouldNotifyChildAndNotParent) { 607 TEST_F(WindowTest, WindowAddedToRootWindowShouldNotifyChildAndNotParent) {
621 AddedToRootWindowObserver parent_observer; 608 AddedToRootWindowObserver parent_observer;
622 AddedToRootWindowObserver child_observer; 609 AddedToRootWindowObserver child_observer;
623 scoped_ptr<Window> parent_window(CreateTestWindowWithId(1, root_window())); 610 std::unique_ptr<Window> parent_window(
624 scoped_ptr<Window> child_window(new Window(NULL)); 611 CreateTestWindowWithId(1, root_window()));
612 std::unique_ptr<Window> child_window(new Window(NULL));
625 child_window->Init(ui::LAYER_TEXTURED); 613 child_window->Init(ui::LAYER_TEXTURED);
626 child_window->Show(); 614 child_window->Show();
627 615
628 parent_window->AddObserver(&parent_observer); 616 parent_window->AddObserver(&parent_observer);
629 child_window->AddObserver(&child_observer); 617 child_window->AddObserver(&child_observer);
630 618
631 parent_window->AddChild(child_window.get()); 619 parent_window->AddChild(child_window.get());
632 620
633 EXPECT_FALSE(parent_observer.called()); 621 EXPECT_FALSE(parent_observer.called());
634 EXPECT_TRUE(child_observer.called()); 622 EXPECT_TRUE(child_observer.called());
635 623
636 parent_window->RemoveObserver(&parent_observer); 624 parent_window->RemoveObserver(&parent_observer);
637 child_window->RemoveObserver(&child_observer); 625 child_window->RemoveObserver(&child_observer);
638 } 626 }
639 627
640 // Various destruction assertions. 628 // Various destruction assertions.
641 TEST_F(WindowTest, DestroyTest) { 629 TEST_F(WindowTest, DestroyTest) {
642 DestroyTrackingDelegateImpl parent_delegate; 630 DestroyTrackingDelegateImpl parent_delegate;
643 ChildWindowDelegateImpl child_delegate(&parent_delegate); 631 ChildWindowDelegateImpl child_delegate(&parent_delegate);
644 { 632 {
645 scoped_ptr<Window> parent( 633 std::unique_ptr<Window> parent(CreateTestWindowWithDelegate(
646 CreateTestWindowWithDelegate(&parent_delegate, 0, gfx::Rect(), 634 &parent_delegate, 0, gfx::Rect(), root_window()));
647 root_window()));
648 CreateTestWindowWithDelegate(&child_delegate, 0, gfx::Rect(), parent.get()); 635 CreateTestWindowWithDelegate(&child_delegate, 0, gfx::Rect(), parent.get());
649 } 636 }
650 // Both the parent and child should have been destroyed. 637 // Both the parent and child should have been destroyed.
651 EXPECT_EQ(1, parent_delegate.destroying_count()); 638 EXPECT_EQ(1, parent_delegate.destroying_count());
652 EXPECT_EQ(1, parent_delegate.destroyed_count()); 639 EXPECT_EQ(1, parent_delegate.destroyed_count());
653 EXPECT_EQ(1, child_delegate.destroying_count()); 640 EXPECT_EQ(1, child_delegate.destroying_count());
654 EXPECT_EQ(1, child_delegate.destroyed_count()); 641 EXPECT_EQ(1, child_delegate.destroyed_count());
655 } 642 }
656 643
657 // Tests that a window is orphaned before OnWindowDestroyed is called. 644 // Tests that a window is orphaned before OnWindowDestroyed is called.
658 TEST_F(WindowTest, OrphanedBeforeOnDestroyed) { 645 TEST_F(WindowTest, OrphanedBeforeOnDestroyed) {
659 TestWindowDelegate parent_delegate; 646 TestWindowDelegate parent_delegate;
660 DestroyOrphanDelegate child_delegate; 647 DestroyOrphanDelegate child_delegate;
661 { 648 {
662 scoped_ptr<Window> parent( 649 std::unique_ptr<Window> parent(CreateTestWindowWithDelegate(
663 CreateTestWindowWithDelegate(&parent_delegate, 0, gfx::Rect(), 650 &parent_delegate, 0, gfx::Rect(), root_window()));
664 root_window())); 651 std::unique_ptr<Window> child(CreateTestWindowWithDelegate(
665 scoped_ptr<Window> child(CreateTestWindowWithDelegate(&child_delegate, 0, 652 &child_delegate, 0, gfx::Rect(), parent.get()));
666 gfx::Rect(), parent.get()));
667 child_delegate.set_window(child.get()); 653 child_delegate.set_window(child.get());
668 } 654 }
669 } 655 }
670 656
671 // Make sure StackChildAtTop moves both the window and layer to the front. 657 // Make sure StackChildAtTop moves both the window and layer to the front.
672 TEST_F(WindowTest, StackChildAtTop) { 658 TEST_F(WindowTest, StackChildAtTop) {
673 Window parent(NULL); 659 Window parent(NULL);
674 parent.Init(ui::LAYER_NOT_DRAWN); 660 parent.Init(ui::LAYER_NOT_DRAWN);
675 Window child1(NULL); 661 Window child1(NULL);
676 child1.Init(ui::LAYER_NOT_DRAWN); 662 child1.Init(ui::LAYER_NOT_DRAWN);
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 EXPECT_EQ(&child3, parent.children()[2]); 768 EXPECT_EQ(&child3, parent.children()[2]);
783 ASSERT_EQ(3u, parent.layer()->children().size()); 769 ASSERT_EQ(3u, parent.layer()->children().size());
784 EXPECT_EQ(child2.layer(), parent.layer()->children()[0]); 770 EXPECT_EQ(child2.layer(), parent.layer()->children()[0]);
785 EXPECT_EQ(child1.layer(), parent.layer()->children()[1]); 771 EXPECT_EQ(child1.layer(), parent.layer()->children()[1]);
786 EXPECT_EQ(child3.layer(), parent.layer()->children()[2]); 772 EXPECT_EQ(child3.layer(), parent.layer()->children()[2]);
787 } 773 }
788 774
789 // Various capture assertions. 775 // Various capture assertions.
790 TEST_F(WindowTest, CaptureTests) { 776 TEST_F(WindowTest, CaptureTests) {
791 CaptureWindowDelegateImpl delegate; 777 CaptureWindowDelegateImpl delegate;
792 scoped_ptr<Window> window(CreateTestWindowWithDelegate( 778 std::unique_ptr<Window> window(CreateTestWindowWithDelegate(
793 &delegate, 0, gfx::Rect(0, 0, 20, 20), root_window())); 779 &delegate, 0, gfx::Rect(0, 0, 20, 20), root_window()));
794 EXPECT_FALSE(window->HasCapture()); 780 EXPECT_FALSE(window->HasCapture());
795 781
796 delegate.ResetCounts(); 782 delegate.ResetCounts();
797 783
798 // Do a capture. 784 // Do a capture.
799 window->SetCapture(); 785 window->SetCapture();
800 EXPECT_TRUE(window->HasCapture()); 786 EXPECT_TRUE(window->HasCapture());
801 EXPECT_EQ(0, delegate.capture_lost_count()); 787 EXPECT_EQ(0, delegate.capture_lost_count());
802 EXPECT_EQ(0, delegate.capture_changed_event_count()); 788 EXPECT_EQ(0, delegate.capture_changed_event_count());
(...skipping 30 matching lines...) Expand all
833 // in the root window. 819 // in the root window.
834 window->SetCapture(); 820 window->SetCapture();
835 EXPECT_EQ(window.get(), aura::client::GetCaptureWindow(root_window())); 821 EXPECT_EQ(window.get(), aura::client::GetCaptureWindow(root_window()));
836 window->parent()->RemoveChild(window.get()); 822 window->parent()->RemoveChild(window.get());
837 EXPECT_FALSE(window->HasCapture()); 823 EXPECT_FALSE(window->HasCapture());
838 EXPECT_EQ(NULL, aura::client::GetCaptureWindow(root_window())); 824 EXPECT_EQ(NULL, aura::client::GetCaptureWindow(root_window()));
839 } 825 }
840 826
841 TEST_F(WindowTest, TouchCaptureCancelsOtherTouches) { 827 TEST_F(WindowTest, TouchCaptureCancelsOtherTouches) {
842 CaptureWindowDelegateImpl delegate1; 828 CaptureWindowDelegateImpl delegate1;
843 scoped_ptr<Window> w1(CreateTestWindowWithDelegate( 829 std::unique_ptr<Window> w1(CreateTestWindowWithDelegate(
844 &delegate1, 0, gfx::Rect(0, 0, 50, 50), root_window())); 830 &delegate1, 0, gfx::Rect(0, 0, 50, 50), root_window()));
845 CaptureWindowDelegateImpl delegate2; 831 CaptureWindowDelegateImpl delegate2;
846 scoped_ptr<Window> w2(CreateTestWindowWithDelegate( 832 std::unique_ptr<Window> w2(CreateTestWindowWithDelegate(
847 &delegate2, 0, gfx::Rect(50, 50, 50, 50), root_window())); 833 &delegate2, 0, gfx::Rect(50, 50, 50, 50), root_window()));
848 834
849 // Press on w1. 835 // Press on w1.
850 ui::TouchEvent press1( 836 ui::TouchEvent press1(
851 ui::ET_TOUCH_PRESSED, gfx::Point(10, 10), 0, getTime()); 837 ui::ET_TOUCH_PRESSED, gfx::Point(10, 10), 0, getTime());
852 DispatchEventUsingWindowDispatcher(&press1); 838 DispatchEventUsingWindowDispatcher(&press1);
853 // We will get both GESTURE_BEGIN and GESTURE_TAP_DOWN. 839 // We will get both GESTURE_BEGIN and GESTURE_TAP_DOWN.
854 EXPECT_EQ(2, delegate1.gesture_event_count()); 840 EXPECT_EQ(2, delegate1.gesture_event_count());
855 delegate1.ResetCounts(); 841 delegate1.ResetCounts();
856 842
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
888 // And releasing capture changes nothing. 874 // And releasing capture changes nothing.
889 w2->ReleaseCapture(); 875 w2->ReleaseCapture();
890 EXPECT_EQ(0, delegate1.gesture_event_count()); 876 EXPECT_EQ(0, delegate1.gesture_event_count());
891 EXPECT_EQ(0, delegate1.touch_event_count()); 877 EXPECT_EQ(0, delegate1.touch_event_count());
892 EXPECT_EQ(0, delegate2.gesture_event_count()); 878 EXPECT_EQ(0, delegate2.gesture_event_count());
893 EXPECT_EQ(0, delegate2.touch_event_count()); 879 EXPECT_EQ(0, delegate2.touch_event_count());
894 } 880 }
895 881
896 TEST_F(WindowTest, TouchCaptureDoesntCancelCapturedTouches) { 882 TEST_F(WindowTest, TouchCaptureDoesntCancelCapturedTouches) {
897 CaptureWindowDelegateImpl delegate; 883 CaptureWindowDelegateImpl delegate;
898 scoped_ptr<Window> window(CreateTestWindowWithDelegate( 884 std::unique_ptr<Window> window(CreateTestWindowWithDelegate(
899 &delegate, 0, gfx::Rect(0, 0, 50, 50), root_window())); 885 &delegate, 0, gfx::Rect(0, 0, 50, 50), root_window()));
900 base::TimeDelta time = getTime(); 886 base::TimeDelta time = getTime();
901 const int kTimeDelta = 100; 887 const int kTimeDelta = 100;
902 888
903 ui::TouchEvent press( 889 ui::TouchEvent press(
904 ui::ET_TOUCH_PRESSED, gfx::Point(10, 10), 0, time); 890 ui::ET_TOUCH_PRESSED, gfx::Point(10, 10), 0, time);
905 DispatchEventUsingWindowDispatcher(&press); 891 DispatchEventUsingWindowDispatcher(&press);
906 892
907 // We will get both GESTURE_BEGIN and GESTURE_TAP_DOWN. 893 // We will get both GESTURE_BEGIN and GESTURE_TAP_DOWN.
908 EXPECT_EQ(2, delegate.gesture_event_count()); 894 EXPECT_EQ(2, delegate.gesture_event_count());
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
944 DispatchEventUsingWindowDispatcher(&release); 930 DispatchEventUsingWindowDispatcher(&release);
945 EXPECT_EQ(1, delegate.touch_event_count()); 931 EXPECT_EQ(1, delegate.touch_event_count());
946 EXPECT_EQ(2, delegate.gesture_event_count()); 932 EXPECT_EQ(2, delegate.gesture_event_count());
947 } 933 }
948 934
949 935
950 // Assertions around SetCapture() and touch/gestures. 936 // Assertions around SetCapture() and touch/gestures.
951 TEST_F(WindowTest, TransferCaptureTouchEvents) { 937 TEST_F(WindowTest, TransferCaptureTouchEvents) {
952 // Touch on |w1|. 938 // Touch on |w1|.
953 CaptureWindowDelegateImpl d1; 939 CaptureWindowDelegateImpl d1;
954 scoped_ptr<Window> w1(CreateTestWindowWithDelegate( 940 std::unique_ptr<Window> w1(CreateTestWindowWithDelegate(
955 &d1, 0, gfx::Rect(0, 0, 20, 20), root_window())); 941 &d1, 0, gfx::Rect(0, 0, 20, 20), root_window()));
956 ui::TouchEvent p1(ui::ET_TOUCH_PRESSED, gfx::Point(10, 10), 0, getTime()); 942 ui::TouchEvent p1(ui::ET_TOUCH_PRESSED, gfx::Point(10, 10), 0, getTime());
957 DispatchEventUsingWindowDispatcher(&p1); 943 DispatchEventUsingWindowDispatcher(&p1);
958 // We will get both GESTURE_BEGIN and GESTURE_TAP_DOWN. 944 // We will get both GESTURE_BEGIN and GESTURE_TAP_DOWN.
959 EXPECT_EQ(1, d1.touch_event_count()); 945 EXPECT_EQ(1, d1.touch_event_count());
960 EXPECT_EQ(2, d1.gesture_event_count()); 946 EXPECT_EQ(2, d1.gesture_event_count());
961 d1.ResetCounts(); 947 d1.ResetCounts();
962 948
963 // Touch on |w2| with a different id. 949 // Touch on |w2| with a different id.
964 CaptureWindowDelegateImpl d2; 950 CaptureWindowDelegateImpl d2;
965 scoped_ptr<Window> w2(CreateTestWindowWithDelegate( 951 std::unique_ptr<Window> w2(CreateTestWindowWithDelegate(
966 &d2, 0, gfx::Rect(40, 0, 40, 20), root_window())); 952 &d2, 0, gfx::Rect(40, 0, 40, 20), root_window()));
967 ui::TouchEvent p2(ui::ET_TOUCH_PRESSED, gfx::Point(41, 10), 1, getTime()); 953 ui::TouchEvent p2(ui::ET_TOUCH_PRESSED, gfx::Point(41, 10), 1, getTime());
968 DispatchEventUsingWindowDispatcher(&p2); 954 DispatchEventUsingWindowDispatcher(&p2);
969 EXPECT_EQ(0, d1.touch_event_count()); 955 EXPECT_EQ(0, d1.touch_event_count());
970 EXPECT_EQ(0, d1.gesture_event_count()); 956 EXPECT_EQ(0, d1.gesture_event_count());
971 // We will get both GESTURE_BEGIN and GESTURE_TAP_DOWN for new target window. 957 // We will get both GESTURE_BEGIN and GESTURE_TAP_DOWN for new target window.
972 EXPECT_EQ(1, d2.touch_event_count()); 958 EXPECT_EQ(1, d2.touch_event_count());
973 EXPECT_EQ(2, d2.gesture_event_count()); 959 EXPECT_EQ(2, d2.gesture_event_count());
974 d1.ResetCounts(); 960 d1.ResetCounts();
975 d2.ResetCounts(); 961 d2.ResetCounts();
976 962
977 // Set capture on |w2|, this should send a cancel (TAP_CANCEL, END) to |w1| 963 // Set capture on |w2|, this should send a cancel (TAP_CANCEL, END) to |w1|
978 // but not |w2|. 964 // but not |w2|.
979 w2->SetCapture(); 965 w2->SetCapture();
980 EXPECT_EQ(1, d1.touch_event_count()); 966 EXPECT_EQ(1, d1.touch_event_count());
981 EXPECT_EQ(2, d1.gesture_event_count()); 967 EXPECT_EQ(2, d1.gesture_event_count());
982 EXPECT_EQ(0, d2.touch_event_count()); 968 EXPECT_EQ(0, d2.touch_event_count());
983 EXPECT_EQ(0, d2.gesture_event_count()); 969 EXPECT_EQ(0, d2.gesture_event_count());
984 d1.ResetCounts(); 970 d1.ResetCounts();
985 d2.ResetCounts(); 971 d2.ResetCounts();
986 972
987 CaptureWindowDelegateImpl d3; 973 CaptureWindowDelegateImpl d3;
988 scoped_ptr<Window> w3(CreateTestWindowWithDelegate( 974 std::unique_ptr<Window> w3(CreateTestWindowWithDelegate(
989 &d3, 0, gfx::Rect(0, 0, 100, 101), root_window())); 975 &d3, 0, gfx::Rect(0, 0, 100, 101), root_window()));
990 // Set capture on |w3|. All touches have already been cancelled. 976 // Set capture on |w3|. All touches have already been cancelled.
991 w3->SetCapture(); 977 w3->SetCapture();
992 EXPECT_EQ(0, d1.touch_event_count()); 978 EXPECT_EQ(0, d1.touch_event_count());
993 EXPECT_EQ(0, d1.gesture_event_count()); 979 EXPECT_EQ(0, d1.gesture_event_count());
994 EXPECT_EQ(1, d2.touch_event_count()); 980 EXPECT_EQ(1, d2.touch_event_count());
995 EXPECT_EQ(2, d2.gesture_event_count()); 981 EXPECT_EQ(2, d2.gesture_event_count());
996 EXPECT_EQ(0, d3.touch_event_count()); 982 EXPECT_EQ(0, d3.touch_event_count());
997 EXPECT_EQ(0, d3.gesture_event_count()); 983 EXPECT_EQ(0, d3.gesture_event_count());
998 d2.ResetCounts(); 984 d2.ResetCounts();
(...skipping 25 matching lines...) Expand all
1024 EXPECT_EQ(0, d1.gesture_event_count()); 1010 EXPECT_EQ(0, d1.gesture_event_count());
1025 EXPECT_EQ(0, d2.touch_event_count()); 1011 EXPECT_EQ(0, d2.touch_event_count());
1026 EXPECT_EQ(0, d2.gesture_event_count()); 1012 EXPECT_EQ(0, d2.gesture_event_count());
1027 EXPECT_EQ(0, d3.touch_event_count()); 1013 EXPECT_EQ(0, d3.touch_event_count());
1028 EXPECT_EQ(0, d3.gesture_event_count()); 1014 EXPECT_EQ(0, d3.gesture_event_count());
1029 } 1015 }
1030 1016
1031 // Changes capture while capture is already ongoing. 1017 // Changes capture while capture is already ongoing.
1032 TEST_F(WindowTest, ChangeCaptureWhileMouseDown) { 1018 TEST_F(WindowTest, ChangeCaptureWhileMouseDown) {
1033 CaptureWindowDelegateImpl delegate; 1019 CaptureWindowDelegateImpl delegate;
1034 scoped_ptr<Window> window(CreateTestWindowWithDelegate( 1020 std::unique_ptr<Window> window(CreateTestWindowWithDelegate(
1035 &delegate, 0, gfx::Rect(0, 0, 20, 20), root_window())); 1021 &delegate, 0, gfx::Rect(0, 0, 20, 20), root_window()));
1036 CaptureWindowDelegateImpl delegate2; 1022 CaptureWindowDelegateImpl delegate2;
1037 scoped_ptr<Window> w2(CreateTestWindowWithDelegate( 1023 std::unique_ptr<Window> w2(CreateTestWindowWithDelegate(
1038 &delegate2, 0, gfx::Rect(20, 20, 20, 20), root_window())); 1024 &delegate2, 0, gfx::Rect(20, 20, 20, 20), root_window()));
1039 1025
1040 // Execute the scheduled draws so that mouse events are not 1026 // Execute the scheduled draws so that mouse events are not
1041 // aggregated. 1027 // aggregated.
1042 RunAllPendingInMessageLoop(); 1028 RunAllPendingInMessageLoop();
1043 1029
1044 EXPECT_FALSE(window->HasCapture()); 1030 EXPECT_FALSE(window->HasCapture());
1045 1031
1046 // Do a capture. 1032 // Do a capture.
1047 delegate.ResetCounts(); 1033 delegate.ResetCounts();
(...skipping 15 matching lines...) Expand all
1063 generator.MoveMouseTo(gfx::Point(40, 40), 2); 1049 generator.MoveMouseTo(gfx::Point(40, 40), 2);
1064 EXPECT_EQ(1, delegate.capture_lost_count()); 1050 EXPECT_EQ(1, delegate.capture_lost_count());
1065 EXPECT_EQ(1, delegate.capture_changed_event_count()); 1051 EXPECT_EQ(1, delegate.capture_changed_event_count());
1066 EXPECT_EQ(1, delegate.mouse_event_count()); 1052 EXPECT_EQ(1, delegate.mouse_event_count());
1067 EXPECT_EQ(2, delegate2.mouse_event_count()); 1053 EXPECT_EQ(2, delegate2.mouse_event_count());
1068 } 1054 }
1069 1055
1070 // Verifies capture is reset when a window is destroyed. 1056 // Verifies capture is reset when a window is destroyed.
1071 TEST_F(WindowTest, ReleaseCaptureOnDestroy) { 1057 TEST_F(WindowTest, ReleaseCaptureOnDestroy) {
1072 CaptureWindowDelegateImpl delegate; 1058 CaptureWindowDelegateImpl delegate;
1073 scoped_ptr<Window> window(CreateTestWindowWithDelegate( 1059 std::unique_ptr<Window> window(CreateTestWindowWithDelegate(
1074 &delegate, 0, gfx::Rect(0, 0, 20, 20), root_window())); 1060 &delegate, 0, gfx::Rect(0, 0, 20, 20), root_window()));
1075 EXPECT_FALSE(window->HasCapture()); 1061 EXPECT_FALSE(window->HasCapture());
1076 1062
1077 // Do a capture. 1063 // Do a capture.
1078 window->SetCapture(); 1064 window->SetCapture();
1079 EXPECT_TRUE(window->HasCapture()); 1065 EXPECT_TRUE(window->HasCapture());
1080 1066
1081 // Destroy the window. 1067 // Destroy the window.
1082 window.reset(); 1068 window.reset();
1083 1069
1084 // Make sure the root window doesn't reference the window anymore. 1070 // Make sure the root window doesn't reference the window anymore.
1085 EXPECT_EQ(NULL, host()->dispatcher()->mouse_pressed_handler()); 1071 EXPECT_EQ(NULL, host()->dispatcher()->mouse_pressed_handler());
1086 EXPECT_EQ(NULL, aura::client::GetCaptureWindow(root_window())); 1072 EXPECT_EQ(NULL, aura::client::GetCaptureWindow(root_window()));
1087 } 1073 }
1088 1074
1089 TEST_F(WindowTest, GetBoundsInRootWindow) { 1075 TEST_F(WindowTest, GetBoundsInRootWindow) {
1090 scoped_ptr<Window> viewport(CreateTestWindowWithBounds( 1076 std::unique_ptr<Window> viewport(
1091 gfx::Rect(0, 0, 300, 300), root_window())); 1077 CreateTestWindowWithBounds(gfx::Rect(0, 0, 300, 300), root_window()));
1092 scoped_ptr<Window> child(CreateTestWindowWithBounds( 1078 std::unique_ptr<Window> child(
1093 gfx::Rect(0, 0, 100, 100), viewport.get())); 1079 CreateTestWindowWithBounds(gfx::Rect(0, 0, 100, 100), viewport.get()));
1094 // Sanity check. 1080 // Sanity check.
1095 EXPECT_EQ("0,0 100x100", child->GetBoundsInRootWindow().ToString()); 1081 EXPECT_EQ("0,0 100x100", child->GetBoundsInRootWindow().ToString());
1096 1082
1097 // The |child| window's screen bounds should move along with the |viewport|. 1083 // The |child| window's screen bounds should move along with the |viewport|.
1098 viewport->SetBounds(gfx::Rect(-100, -100, 300, 300)); 1084 viewport->SetBounds(gfx::Rect(-100, -100, 300, 300));
1099 EXPECT_EQ("-100,-100 100x100", child->GetBoundsInRootWindow().ToString()); 1085 EXPECT_EQ("-100,-100 100x100", child->GetBoundsInRootWindow().ToString());
1100 1086
1101 // The |child| window is moved to the 0,0 in screen coordinates. 1087 // The |child| window is moved to the 0,0 in screen coordinates.
1102 // |GetBoundsInRootWindow()| should return 0,0. 1088 // |GetBoundsInRootWindow()| should return 0,0.
1103 child->SetBounds(gfx::Rect(100, 100, 100, 100)); 1089 child->SetBounds(gfx::Rect(100, 100, 100, 100));
1104 EXPECT_EQ("0,0 100x100", child->GetBoundsInRootWindow().ToString()); 1090 EXPECT_EQ("0,0 100x100", child->GetBoundsInRootWindow().ToString());
1105 } 1091 }
1106 1092
1107 TEST_F(WindowTest, GetBoundsInRootWindowWithLayers) { 1093 TEST_F(WindowTest, GetBoundsInRootWindowWithLayers) {
1108 scoped_ptr<Window> viewport( 1094 std::unique_ptr<Window> viewport(
1109 CreateTestWindowWithBounds(gfx::Rect(0, 0, 300, 300), root_window())); 1095 CreateTestWindowWithBounds(gfx::Rect(0, 0, 300, 300), root_window()));
1110 1096
1111 scoped_ptr<Window> widget( 1097 std::unique_ptr<Window> widget(
1112 CreateTestWindowWithBounds(gfx::Rect(0, 0, 200, 200), viewport.get())); 1098 CreateTestWindowWithBounds(gfx::Rect(0, 0, 200, 200), viewport.get()));
1113 1099
1114 scoped_ptr<Window> child( 1100 std::unique_ptr<Window> child(
1115 CreateTestWindowWithBounds(gfx::Rect(0, 0, 100, 100), widget.get())); 1101 CreateTestWindowWithBounds(gfx::Rect(0, 0, 100, 100), widget.get()));
1116 1102
1117 // Sanity check. 1103 // Sanity check.
1118 EXPECT_EQ("0,0 100x100", child->GetBoundsInRootWindow().ToString()); 1104 EXPECT_EQ("0,0 100x100", child->GetBoundsInRootWindow().ToString());
1119 1105
1120 // The |child| window's screen bounds should move along with the |viewport|. 1106 // The |child| window's screen bounds should move along with the |viewport|.
1121 OffsetBounds(viewport.get(), -100, -100); 1107 OffsetBounds(viewport.get(), -100, -100);
1122 EXPECT_EQ("-100,-100 100x100", child->GetBoundsInRootWindow().ToString()); 1108 EXPECT_EQ("-100,-100 100x100", child->GetBoundsInRootWindow().ToString());
1123 1109
1124 OffsetBounds(widget.get(), 50, 50); 1110 OffsetBounds(widget.get(), 50, 50);
1125 EXPECT_EQ("-50,-50 100x100", child->GetBoundsInRootWindow().ToString()); 1111 EXPECT_EQ("-50,-50 100x100", child->GetBoundsInRootWindow().ToString());
1126 1112
1127 // The |child| window is moved to the 0,0 in screen coordinates. 1113 // The |child| window is moved to the 0,0 in screen coordinates.
1128 // |GetBoundsInRootWindow()| should return 0,0. 1114 // |GetBoundsInRootWindow()| should return 0,0.
1129 OffsetBounds(child.get(), 50, 50); 1115 OffsetBounds(child.get(), 50, 50);
1130 EXPECT_EQ("0,0 100x100", child->GetBoundsInRootWindow().ToString()); 1116 EXPECT_EQ("0,0 100x100", child->GetBoundsInRootWindow().ToString());
1131 } 1117 }
1132 1118
1133 TEST_F(WindowTest, GetBoundsInRootWindowWithLayersAndTranslations) { 1119 TEST_F(WindowTest, GetBoundsInRootWindowWithLayersAndTranslations) {
1134 scoped_ptr<Window> viewport( 1120 std::unique_ptr<Window> viewport(
1135 CreateTestWindowWithBounds(gfx::Rect(0, 0, 300, 300), root_window())); 1121 CreateTestWindowWithBounds(gfx::Rect(0, 0, 300, 300), root_window()));
1136 1122
1137 scoped_ptr<Window> widget( 1123 std::unique_ptr<Window> widget(
1138 CreateTestWindowWithBounds(gfx::Rect(0, 0, 200, 200), viewport.get())); 1124 CreateTestWindowWithBounds(gfx::Rect(0, 0, 200, 200), viewport.get()));
1139 1125
1140 scoped_ptr<Window> child( 1126 std::unique_ptr<Window> child(
1141 CreateTestWindowWithBounds(gfx::Rect(0, 0, 100, 100), widget.get())); 1127 CreateTestWindowWithBounds(gfx::Rect(0, 0, 100, 100), widget.get()));
1142 1128
1143 // Sanity check. 1129 // Sanity check.
1144 EXPECT_EQ("0,0 100x100", child->GetBoundsInRootWindow().ToString()); 1130 EXPECT_EQ("0,0 100x100", child->GetBoundsInRootWindow().ToString());
1145 1131
1146 // The |child| window's screen bounds should move along with the |viewport|. 1132 // The |child| window's screen bounds should move along with the |viewport|.
1147 viewport->SetBounds(gfx::Rect(-100, -100, 300, 300)); 1133 viewport->SetBounds(gfx::Rect(-100, -100, 300, 300));
1148 EXPECT_EQ("-100,-100 100x100", child->GetBoundsInRootWindow().ToString()); 1134 EXPECT_EQ("-100,-100 100x100", child->GetBoundsInRootWindow().ToString());
1149 1135
1150 widget->SetBounds(gfx::Rect(50, 50, 200, 200)); 1136 widget->SetBounds(gfx::Rect(50, 50, 200, 200));
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1206 bool entered_; 1192 bool entered_;
1207 bool exited_; 1193 bool exited_;
1208 1194
1209 DISALLOW_COPY_AND_ASSIGN(MouseEnterExitWindowDelegate); 1195 DISALLOW_COPY_AND_ASSIGN(MouseEnterExitWindowDelegate);
1210 }; 1196 };
1211 1197
1212 // Verifies that the WindowDelegate receives MouseExit and MouseEnter events for 1198 // Verifies that the WindowDelegate receives MouseExit and MouseEnter events for
1213 // mouse transitions from window to window. 1199 // mouse transitions from window to window.
1214 TEST_F(WindowTest, MouseEnterExit) { 1200 TEST_F(WindowTest, MouseEnterExit) {
1215 MouseEnterExitWindowDelegate d1; 1201 MouseEnterExitWindowDelegate d1;
1216 scoped_ptr<Window> w1( 1202 std::unique_ptr<Window> w1(CreateTestWindowWithDelegate(
1217 CreateTestWindowWithDelegate(&d1, 1, gfx::Rect(10, 10, 50, 50), 1203 &d1, 1, gfx::Rect(10, 10, 50, 50), root_window()));
1218 root_window()));
1219 MouseEnterExitWindowDelegate d2; 1204 MouseEnterExitWindowDelegate d2;
1220 scoped_ptr<Window> w2( 1205 std::unique_ptr<Window> w2(CreateTestWindowWithDelegate(
1221 CreateTestWindowWithDelegate(&d2, 2, gfx::Rect(70, 70, 50, 50), 1206 &d2, 2, gfx::Rect(70, 70, 50, 50), root_window()));
1222 root_window()));
1223 1207
1224 ui::test::EventGenerator generator(root_window()); 1208 ui::test::EventGenerator generator(root_window());
1225 generator.MoveMouseToCenterOf(w1.get()); 1209 generator.MoveMouseToCenterOf(w1.get());
1226 EXPECT_TRUE(d1.entered()); 1210 EXPECT_TRUE(d1.entered());
1227 EXPECT_FALSE(d1.exited()); 1211 EXPECT_FALSE(d1.exited());
1228 EXPECT_FALSE(d2.entered()); 1212 EXPECT_FALSE(d2.entered());
1229 EXPECT_FALSE(d2.exited()); 1213 EXPECT_FALSE(d2.exited());
1230 1214
1231 generator.MoveMouseToCenterOf(w2.get()); 1215 generator.MoveMouseToCenterOf(w2.get());
1232 EXPECT_TRUE(d1.entered()); 1216 EXPECT_TRUE(d1.entered());
1233 EXPECT_TRUE(d1.exited()); 1217 EXPECT_TRUE(d1.exited());
1234 EXPECT_TRUE(d2.entered()); 1218 EXPECT_TRUE(d2.entered());
1235 EXPECT_FALSE(d2.exited()); 1219 EXPECT_FALSE(d2.exited());
1236 } 1220 }
1237 1221
1238 // Verifies that the WindowDelegate receives MouseExit from ET_MOUSE_EXITED. 1222 // Verifies that the WindowDelegate receives MouseExit from ET_MOUSE_EXITED.
1239 TEST_F(WindowTest, WindowTreeHostExit) { 1223 TEST_F(WindowTest, WindowTreeHostExit) {
1240 MouseEnterExitWindowDelegate d1; 1224 MouseEnterExitWindowDelegate d1;
1241 scoped_ptr<Window> w1( 1225 std::unique_ptr<Window> w1(CreateTestWindowWithDelegate(
1242 CreateTestWindowWithDelegate(&d1, 1, gfx::Rect(10, 10, 50, 50), 1226 &d1, 1, gfx::Rect(10, 10, 50, 50), root_window()));
1243 root_window()));
1244 1227
1245 ui::test::EventGenerator generator(root_window()); 1228 ui::test::EventGenerator generator(root_window());
1246 generator.MoveMouseToCenterOf(w1.get()); 1229 generator.MoveMouseToCenterOf(w1.get());
1247 EXPECT_TRUE(d1.entered()); 1230 EXPECT_TRUE(d1.entered());
1248 EXPECT_FALSE(d1.exited()); 1231 EXPECT_FALSE(d1.exited());
1249 d1.ResetExpectations(); 1232 d1.ResetExpectations();
1250 1233
1251 ui::MouseEvent exit_event(ui::ET_MOUSE_EXITED, gfx::Point(), gfx::Point(), 1234 ui::MouseEvent exit_event(ui::ET_MOUSE_EXITED, gfx::Point(), gfx::Point(),
1252 ui::EventTimeForNow(), 0, 0); 1235 ui::EventTimeForNow(), 0, 0);
1253 DispatchEventUsingWindowDispatcher(&exit_event); 1236 DispatchEventUsingWindowDispatcher(&exit_event);
1254 EXPECT_FALSE(d1.entered()); 1237 EXPECT_FALSE(d1.entered());
1255 EXPECT_TRUE(d1.exited()); 1238 EXPECT_TRUE(d1.exited());
1256 } 1239 }
1257 1240
1258 // Verifies that the WindowDelegate receives MouseExit and MouseEnter events for 1241 // Verifies that the WindowDelegate receives MouseExit and MouseEnter events for
1259 // mouse transitions from window to window, even if the entered window sets 1242 // mouse transitions from window to window, even if the entered window sets
1260 // and releases capture. 1243 // and releases capture.
1261 TEST_F(WindowTest, MouseEnterExitWithClick) { 1244 TEST_F(WindowTest, MouseEnterExitWithClick) {
1262 MouseEnterExitWindowDelegate d1; 1245 MouseEnterExitWindowDelegate d1;
1263 scoped_ptr<Window> w1( 1246 std::unique_ptr<Window> w1(CreateTestWindowWithDelegate(
1264 CreateTestWindowWithDelegate(&d1, 1, gfx::Rect(10, 10, 50, 50), 1247 &d1, 1, gfx::Rect(10, 10, 50, 50), root_window()));
1265 root_window()));
1266 MouseEnterExitWindowDelegate d2; 1248 MouseEnterExitWindowDelegate d2;
1267 scoped_ptr<Window> w2( 1249 std::unique_ptr<Window> w2(CreateTestWindowWithDelegate(
1268 CreateTestWindowWithDelegate(&d2, 2, gfx::Rect(70, 70, 50, 50), 1250 &d2, 2, gfx::Rect(70, 70, 50, 50), root_window()));
1269 root_window()));
1270 1251
1271 ui::test::EventGenerator generator(root_window()); 1252 ui::test::EventGenerator generator(root_window());
1272 generator.MoveMouseToCenterOf(w1.get()); 1253 generator.MoveMouseToCenterOf(w1.get());
1273 EXPECT_TRUE(d1.entered()); 1254 EXPECT_TRUE(d1.entered());
1274 EXPECT_FALSE(d1.exited()); 1255 EXPECT_FALSE(d1.exited());
1275 EXPECT_FALSE(d2.entered()); 1256 EXPECT_FALSE(d2.entered());
1276 EXPECT_FALSE(d2.exited()); 1257 EXPECT_FALSE(d2.exited());
1277 1258
1278 // Emmulate what Views does on a click by grabbing and releasing capture. 1259 // Emmulate what Views does on a click by grabbing and releasing capture.
1279 generator.PressLeftButton(); 1260 generator.PressLeftButton();
1280 w1->SetCapture(); 1261 w1->SetCapture();
1281 w1->ReleaseCapture(); 1262 w1->ReleaseCapture();
1282 generator.ReleaseLeftButton(); 1263 generator.ReleaseLeftButton();
1283 1264
1284 generator.MoveMouseToCenterOf(w2.get()); 1265 generator.MoveMouseToCenterOf(w2.get());
1285 EXPECT_TRUE(d1.entered()); 1266 EXPECT_TRUE(d1.entered());
1286 EXPECT_TRUE(d1.exited()); 1267 EXPECT_TRUE(d1.exited());
1287 EXPECT_TRUE(d2.entered()); 1268 EXPECT_TRUE(d2.entered());
1288 EXPECT_FALSE(d2.exited()); 1269 EXPECT_FALSE(d2.exited());
1289 } 1270 }
1290 1271
1291 TEST_F(WindowTest, MouseEnterExitWhenDeleteWithCapture) { 1272 TEST_F(WindowTest, MouseEnterExitWhenDeleteWithCapture) {
1292 MouseEnterExitWindowDelegate delegate; 1273 MouseEnterExitWindowDelegate delegate;
1293 scoped_ptr<Window> window( 1274 std::unique_ptr<Window> window(CreateTestWindowWithDelegate(
1294 CreateTestWindowWithDelegate(&delegate, 1, gfx::Rect(10, 10, 50, 50), 1275 &delegate, 1, gfx::Rect(10, 10, 50, 50), root_window()));
1295 root_window()));
1296 1276
1297 ui::test::EventGenerator generator(root_window()); 1277 ui::test::EventGenerator generator(root_window());
1298 generator.MoveMouseToCenterOf(window.get()); 1278 generator.MoveMouseToCenterOf(window.get());
1299 EXPECT_TRUE(delegate.entered()); 1279 EXPECT_TRUE(delegate.entered());
1300 EXPECT_FALSE(delegate.exited()); 1280 EXPECT_FALSE(delegate.exited());
1301 1281
1302 // Emmulate what Views does on a click by grabbing and releasing capture. 1282 // Emmulate what Views does on a click by grabbing and releasing capture.
1303 generator.PressLeftButton(); 1283 generator.PressLeftButton();
1304 window->SetCapture(); 1284 window->SetCapture();
1305 1285
1306 delegate.ResetExpectations(); 1286 delegate.ResetExpectations();
1307 generator.MoveMouseTo(0, 0); 1287 generator.MoveMouseTo(0, 0);
1308 EXPECT_FALSE(delegate.entered()); 1288 EXPECT_FALSE(delegate.entered());
1309 EXPECT_FALSE(delegate.exited()); 1289 EXPECT_FALSE(delegate.exited());
1310 1290
1311 delegate.ResetExpectations(); 1291 delegate.ResetExpectations();
1312 window.reset(); 1292 window.reset();
1313 EXPECT_FALSE(delegate.entered()); 1293 EXPECT_FALSE(delegate.entered());
1314 EXPECT_FALSE(delegate.exited()); 1294 EXPECT_FALSE(delegate.exited());
1315 } 1295 }
1316 1296
1317 // Verifies that the correct enter / exits are sent if windows appear and are 1297 // Verifies that the correct enter / exits are sent if windows appear and are
1318 // deleted under the current mouse position. 1298 // deleted under the current mouse position.
1319 TEST_F(WindowTest, MouseEnterExitWithWindowAppearAndDelete) { 1299 TEST_F(WindowTest, MouseEnterExitWithWindowAppearAndDelete) {
1320 MouseEnterExitWindowDelegate d1; 1300 MouseEnterExitWindowDelegate d1;
1321 scoped_ptr<Window> w1( 1301 std::unique_ptr<Window> w1(CreateTestWindowWithDelegate(
1322 CreateTestWindowWithDelegate(&d1, 1, gfx::Rect(10, 10, 50, 50), 1302 &d1, 1, gfx::Rect(10, 10, 50, 50), root_window()));
1323 root_window()));
1324 1303
1325 // The cursor is moved into the bounds of |w1|. We expect the delegate 1304 // The cursor is moved into the bounds of |w1|. We expect the delegate
1326 // of |w1| to see an ET_MOUSE_ENTERED event. 1305 // of |w1| to see an ET_MOUSE_ENTERED event.
1327 ui::test::EventGenerator generator(root_window()); 1306 ui::test::EventGenerator generator(root_window());
1328 generator.MoveMouseToCenterOf(w1.get()); 1307 generator.MoveMouseToCenterOf(w1.get());
1329 EXPECT_TRUE(d1.entered()); 1308 EXPECT_TRUE(d1.entered());
1330 EXPECT_FALSE(d1.exited()); 1309 EXPECT_FALSE(d1.exited());
1331 d1.ResetExpectations(); 1310 d1.ResetExpectations();
1332 1311
1333 MouseEnterExitWindowDelegate d2; 1312 MouseEnterExitWindowDelegate d2;
1334 { 1313 {
1335 scoped_ptr<Window> w2( 1314 std::unique_ptr<Window> w2(CreateTestWindowWithDelegate(
1336 CreateTestWindowWithDelegate(&d2, 2, gfx::Rect(10, 10, 50, 50), 1315 &d2, 2, gfx::Rect(10, 10, 50, 50), root_window()));
1337 root_window()));
1338 // Enters / exits can be sent asynchronously. 1316 // Enters / exits can be sent asynchronously.
1339 RunAllPendingInMessageLoop(); 1317 RunAllPendingInMessageLoop();
1340 1318
1341 // |w2| appears over top of |w1|. We expect the delegate of |w1| to see 1319 // |w2| appears over top of |w1|. We expect the delegate of |w1| to see
1342 // an ET_MOUSE_EXITED and the delegate of |w2| to see an ET_MOUSE_ENTERED. 1320 // an ET_MOUSE_EXITED and the delegate of |w2| to see an ET_MOUSE_ENTERED.
1343 EXPECT_FALSE(d1.entered()); 1321 EXPECT_FALSE(d1.entered());
1344 EXPECT_TRUE(d1.exited()); 1322 EXPECT_TRUE(d1.exited());
1345 EXPECT_TRUE(d2.entered()); 1323 EXPECT_TRUE(d2.entered());
1346 EXPECT_FALSE(d2.exited()); 1324 EXPECT_FALSE(d2.exited());
1347 d1.ResetExpectations(); 1325 d1.ResetExpectations();
1348 d2.ResetExpectations(); 1326 d2.ResetExpectations();
1349 } 1327 }
1350 1328
1351 // Enters / exits can be sent asynchronously. 1329 // Enters / exits can be sent asynchronously.
1352 RunAllPendingInMessageLoop(); 1330 RunAllPendingInMessageLoop();
1353 1331
1354 // |w2| has been destroyed, so its delegate should see no further events. 1332 // |w2| has been destroyed, so its delegate should see no further events.
1355 // The delegate of |w1| should see an ET_MOUSE_ENTERED event. 1333 // The delegate of |w1| should see an ET_MOUSE_ENTERED event.
1356 EXPECT_TRUE(d1.entered()); 1334 EXPECT_TRUE(d1.entered());
1357 EXPECT_FALSE(d1.exited()); 1335 EXPECT_FALSE(d1.exited());
1358 EXPECT_FALSE(d2.entered()); 1336 EXPECT_FALSE(d2.entered());
1359 EXPECT_FALSE(d2.exited()); 1337 EXPECT_FALSE(d2.exited());
1360 } 1338 }
1361 1339
1362 // Verifies that enter / exits are sent if windows appear and are hidden 1340 // Verifies that enter / exits are sent if windows appear and are hidden
1363 // under the current mouse position.. 1341 // under the current mouse position..
1364 TEST_F(WindowTest, MouseEnterExitWithHide) { 1342 TEST_F(WindowTest, MouseEnterExitWithHide) {
1365 MouseEnterExitWindowDelegate d1; 1343 MouseEnterExitWindowDelegate d1;
1366 scoped_ptr<Window> w1( 1344 std::unique_ptr<Window> w1(CreateTestWindowWithDelegate(
1367 CreateTestWindowWithDelegate(&d1, 1, gfx::Rect(10, 10, 50, 50), 1345 &d1, 1, gfx::Rect(10, 10, 50, 50), root_window()));
1368 root_window()));
1369 1346
1370 ui::test::EventGenerator generator(root_window()); 1347 ui::test::EventGenerator generator(root_window());
1371 generator.MoveMouseToCenterOf(w1.get()); 1348 generator.MoveMouseToCenterOf(w1.get());
1372 EXPECT_TRUE(d1.entered()); 1349 EXPECT_TRUE(d1.entered());
1373 EXPECT_FALSE(d1.exited()); 1350 EXPECT_FALSE(d1.exited());
1374 1351
1375 MouseEnterExitWindowDelegate d2; 1352 MouseEnterExitWindowDelegate d2;
1376 scoped_ptr<Window> w2( 1353 std::unique_ptr<Window> w2(CreateTestWindowWithDelegate(
1377 CreateTestWindowWithDelegate(&d2, 2, gfx::Rect(10, 10, 50, 50), 1354 &d2, 2, gfx::Rect(10, 10, 50, 50), root_window()));
1378 root_window()));
1379 // Enters / exits can be send asynchronously. 1355 // Enters / exits can be send asynchronously.
1380 RunAllPendingInMessageLoop(); 1356 RunAllPendingInMessageLoop();
1381 EXPECT_TRUE(d1.entered()); 1357 EXPECT_TRUE(d1.entered());
1382 EXPECT_TRUE(d1.exited()); 1358 EXPECT_TRUE(d1.exited());
1383 EXPECT_TRUE(d2.entered()); 1359 EXPECT_TRUE(d2.entered());
1384 EXPECT_FALSE(d2.exited()); 1360 EXPECT_FALSE(d2.exited());
1385 1361
1386 d1.ResetExpectations(); 1362 d1.ResetExpectations();
1387 w2->Hide(); 1363 w2->Hide();
1388 // Enters / exits can be send asynchronously. 1364 // Enters / exits can be send asynchronously.
1389 RunAllPendingInMessageLoop(); 1365 RunAllPendingInMessageLoop();
1390 EXPECT_TRUE(d2.exited()); 1366 EXPECT_TRUE(d2.exited());
1391 EXPECT_TRUE(d1.entered()); 1367 EXPECT_TRUE(d1.entered());
1392 } 1368 }
1393 1369
1394 TEST_F(WindowTest, MouseEnterExitWithParentHide) { 1370 TEST_F(WindowTest, MouseEnterExitWithParentHide) {
1395 MouseEnterExitWindowDelegate d1; 1371 MouseEnterExitWindowDelegate d1;
1396 scoped_ptr<Window> w1( 1372 std::unique_ptr<Window> w1(CreateTestWindowWithDelegate(
1397 CreateTestWindowWithDelegate(&d1, 1, gfx::Rect(10, 10, 50, 50), 1373 &d1, 1, gfx::Rect(10, 10, 50, 50), root_window()));
1398 root_window()));
1399 MouseEnterExitWindowDelegate d2; 1374 MouseEnterExitWindowDelegate d2;
1400 Window* w2 = CreateTestWindowWithDelegate(&d2, 2, gfx::Rect(10, 10, 50, 50), 1375 Window* w2 = CreateTestWindowWithDelegate(&d2, 2, gfx::Rect(10, 10, 50, 50),
1401 w1.get()); 1376 w1.get());
1402 ui::test::EventGenerator generator(root_window()); 1377 ui::test::EventGenerator generator(root_window());
1403 generator.MoveMouseToCenterOf(w2); 1378 generator.MoveMouseToCenterOf(w2);
1404 // Enters / exits can be send asynchronously. 1379 // Enters / exits can be send asynchronously.
1405 RunAllPendingInMessageLoop(); 1380 RunAllPendingInMessageLoop();
1406 EXPECT_TRUE(d2.entered()); 1381 EXPECT_TRUE(d2.entered());
1407 EXPECT_FALSE(d2.exited()); 1382 EXPECT_FALSE(d2.exited());
1408 1383
1409 d2.ResetExpectations(); 1384 d2.ResetExpectations();
1410 w1->Hide(); 1385 w1->Hide();
1411 RunAllPendingInMessageLoop(); 1386 RunAllPendingInMessageLoop();
1412 EXPECT_FALSE(d2.entered()); 1387 EXPECT_FALSE(d2.entered());
1413 EXPECT_TRUE(d2.exited()); 1388 EXPECT_TRUE(d2.exited());
1414 1389
1415 w1.reset(); 1390 w1.reset();
1416 } 1391 }
1417 1392
1418 TEST_F(WindowTest, MouseEnterExitWithParentDelete) { 1393 TEST_F(WindowTest, MouseEnterExitWithParentDelete) {
1419 MouseEnterExitWindowDelegate d1; 1394 MouseEnterExitWindowDelegate d1;
1420 scoped_ptr<Window> w1( 1395 std::unique_ptr<Window> w1(CreateTestWindowWithDelegate(
1421 CreateTestWindowWithDelegate(&d1, 1, gfx::Rect(10, 10, 50, 50), 1396 &d1, 1, gfx::Rect(10, 10, 50, 50), root_window()));
1422 root_window()));
1423 MouseEnterExitWindowDelegate d2; 1397 MouseEnterExitWindowDelegate d2;
1424 Window* w2 = CreateTestWindowWithDelegate(&d2, 2, gfx::Rect(10, 10, 50, 50), 1398 Window* w2 = CreateTestWindowWithDelegate(&d2, 2, gfx::Rect(10, 10, 50, 50),
1425 w1.get()); 1399 w1.get());
1426 ui::test::EventGenerator generator(root_window()); 1400 ui::test::EventGenerator generator(root_window());
1427 generator.MoveMouseToCenterOf(w2); 1401 generator.MoveMouseToCenterOf(w2);
1428 1402
1429 // Enters / exits can be send asynchronously. 1403 // Enters / exits can be send asynchronously.
1430 RunAllPendingInMessageLoop(); 1404 RunAllPendingInMessageLoop();
1431 EXPECT_TRUE(d2.entered()); 1405 EXPECT_TRUE(d2.entered());
1432 EXPECT_FALSE(d2.exited()); 1406 EXPECT_FALSE(d2.exited());
(...skipping 11 matching lines...) Expand all
1444 } 1418 }
1445 1419
1446 // Creates a window with a delegate (w111) that can handle events at a lower 1420 // Creates a window with a delegate (w111) that can handle events at a lower
1447 // z-index than a window without a delegate (w12). w12 is sized to fill the 1421 // z-index than a window without a delegate (w12). w12 is sized to fill the
1448 // entire bounds of the container. This test verifies that 1422 // entire bounds of the container. This test verifies that
1449 // GetEventHandlerForPoint() skips w12 even though its bounds contain the event, 1423 // GetEventHandlerForPoint() skips w12 even though its bounds contain the event,
1450 // because it has no children that can handle the event and it has no delegate 1424 // because it has no children that can handle the event and it has no delegate
1451 // allowing it to handle the event itself. 1425 // allowing it to handle the event itself.
1452 TEST_F(WindowTest, GetEventHandlerForPoint_NoDelegate) { 1426 TEST_F(WindowTest, GetEventHandlerForPoint_NoDelegate) {
1453 TestWindowDelegate d111; 1427 TestWindowDelegate d111;
1454 scoped_ptr<Window> w1(CreateTestWindowWithDelegate(NULL, 1, 1428 std::unique_ptr<Window> w1(CreateTestWindowWithDelegate(
1455 gfx::Rect(0, 0, 500, 500), root_window())); 1429 NULL, 1, gfx::Rect(0, 0, 500, 500), root_window()));
1456 scoped_ptr<Window> w11(CreateTestWindowWithDelegate(NULL, 11, 1430 std::unique_ptr<Window> w11(CreateTestWindowWithDelegate(
1457 gfx::Rect(0, 0, 500, 500), w1.get())); 1431 NULL, 11, gfx::Rect(0, 0, 500, 500), w1.get()));
1458 scoped_ptr<Window> w111(CreateTestWindowWithDelegate(&d111, 111, 1432 std::unique_ptr<Window> w111(CreateTestWindowWithDelegate(
1459 gfx::Rect(50, 50, 450, 450), w11.get())); 1433 &d111, 111, gfx::Rect(50, 50, 450, 450), w11.get()));
1460 scoped_ptr<Window> w12(CreateTestWindowWithDelegate(NULL, 12, 1434 std::unique_ptr<Window> w12(CreateTestWindowWithDelegate(
1461 gfx::Rect(0, 0, 500, 500), w1.get())); 1435 NULL, 12, gfx::Rect(0, 0, 500, 500), w1.get()));
1462 1436
1463 gfx::Point target_point = w111->bounds().CenterPoint(); 1437 gfx::Point target_point = w111->bounds().CenterPoint();
1464 EXPECT_EQ(w111.get(), w1->GetEventHandlerForPoint(target_point)); 1438 EXPECT_EQ(w111.get(), w1->GetEventHandlerForPoint(target_point));
1465 } 1439 }
1466 1440
1467 class VisibilityWindowDelegate : public TestWindowDelegate { 1441 class VisibilityWindowDelegate : public TestWindowDelegate {
1468 public: 1442 public:
1469 VisibilityWindowDelegate() 1443 VisibilityWindowDelegate()
1470 : shown_(0), 1444 : shown_(0),
1471 hidden_(0) { 1445 hidden_(0) {
(...skipping 17 matching lines...) Expand all
1489 int shown_; 1463 int shown_;
1490 int hidden_; 1464 int hidden_;
1491 1465
1492 DISALLOW_COPY_AND_ASSIGN(VisibilityWindowDelegate); 1466 DISALLOW_COPY_AND_ASSIGN(VisibilityWindowDelegate);
1493 }; 1467 };
1494 1468
1495 // Verifies show/hide propagate correctly to children and the layer. 1469 // Verifies show/hide propagate correctly to children and the layer.
1496 TEST_F(WindowTest, Visibility) { 1470 TEST_F(WindowTest, Visibility) {
1497 VisibilityWindowDelegate d; 1471 VisibilityWindowDelegate d;
1498 VisibilityWindowDelegate d2; 1472 VisibilityWindowDelegate d2;
1499 scoped_ptr<Window> w1(CreateTestWindowWithDelegate(&d, 1, gfx::Rect(), 1473 std::unique_ptr<Window> w1(
1500 root_window())); 1474 CreateTestWindowWithDelegate(&d, 1, gfx::Rect(), root_window()));
1501 scoped_ptr<Window> w2( 1475 std::unique_ptr<Window> w2(
1502 CreateTestWindowWithDelegate(&d2, 2, gfx::Rect(), w1.get())); 1476 CreateTestWindowWithDelegate(&d2, 2, gfx::Rect(), w1.get()));
1503 scoped_ptr<Window> w3(CreateTestWindowWithId(3, w2.get())); 1477 std::unique_ptr<Window> w3(CreateTestWindowWithId(3, w2.get()));
1504 1478
1505 // Create shows all the windows. 1479 // Create shows all the windows.
1506 EXPECT_TRUE(w1->IsVisible()); 1480 EXPECT_TRUE(w1->IsVisible());
1507 EXPECT_TRUE(w2->IsVisible()); 1481 EXPECT_TRUE(w2->IsVisible());
1508 EXPECT_TRUE(w3->IsVisible()); 1482 EXPECT_TRUE(w3->IsVisible());
1509 EXPECT_EQ(1, d.shown()); 1483 EXPECT_EQ(1, d.shown());
1510 1484
1511 d.Clear(); 1485 d.Clear();
1512 w1->Hide(); 1486 w1->Hide();
1513 EXPECT_FALSE(w1->IsVisible()); 1487 EXPECT_FALSE(w1->IsVisible());
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1550 w2->Show(); 1524 w2->Show();
1551 EXPECT_EQ(0, d2.hidden()); 1525 EXPECT_EQ(0, d2.hidden());
1552 EXPECT_EQ(1, d2.shown()); 1526 EXPECT_EQ(1, d2.shown());
1553 } 1527 }
1554 1528
1555 TEST_F(WindowTest, IgnoreEventsTest) { 1529 TEST_F(WindowTest, IgnoreEventsTest) {
1556 TestWindowDelegate d11; 1530 TestWindowDelegate d11;
1557 TestWindowDelegate d12; 1531 TestWindowDelegate d12;
1558 TestWindowDelegate d111; 1532 TestWindowDelegate d111;
1559 TestWindowDelegate d121; 1533 TestWindowDelegate d121;
1560 scoped_ptr<Window> w1(CreateTestWindowWithDelegate(NULL, 1, 1534 std::unique_ptr<Window> w1(CreateTestWindowWithDelegate(
1561 gfx::Rect(0, 0, 500, 500), root_window())); 1535 NULL, 1, gfx::Rect(0, 0, 500, 500), root_window()));
1562 scoped_ptr<Window> w11(CreateTestWindowWithDelegate(&d11, 11, 1536 std::unique_ptr<Window> w11(CreateTestWindowWithDelegate(
1563 gfx::Rect(0, 0, 500, 500), w1.get())); 1537 &d11, 11, gfx::Rect(0, 0, 500, 500), w1.get()));
1564 scoped_ptr<Window> w111(CreateTestWindowWithDelegate(&d111, 111, 1538 std::unique_ptr<Window> w111(CreateTestWindowWithDelegate(
1565 gfx::Rect(50, 50, 450, 450), w11.get())); 1539 &d111, 111, gfx::Rect(50, 50, 450, 450), w11.get()));
1566 scoped_ptr<Window> w12(CreateTestWindowWithDelegate(&d12, 12, 1540 std::unique_ptr<Window> w12(CreateTestWindowWithDelegate(
1567 gfx::Rect(0, 0, 500, 500), w1.get())); 1541 &d12, 12, gfx::Rect(0, 0, 500, 500), w1.get()));
1568 scoped_ptr<Window> w121(CreateTestWindowWithDelegate(&d121, 121, 1542 std::unique_ptr<Window> w121(CreateTestWindowWithDelegate(
1569 gfx::Rect(150, 150, 50, 50), w12.get())); 1543 &d121, 121, gfx::Rect(150, 150, 50, 50), w12.get()));
1570 1544
1571 EXPECT_EQ(w12.get(), w1->GetEventHandlerForPoint(gfx::Point(10, 10))); 1545 EXPECT_EQ(w12.get(), w1->GetEventHandlerForPoint(gfx::Point(10, 10)));
1572 w12->set_ignore_events(true); 1546 w12->set_ignore_events(true);
1573 EXPECT_EQ(w11.get(), w1->GetEventHandlerForPoint(gfx::Point(10, 10))); 1547 EXPECT_EQ(w11.get(), w1->GetEventHandlerForPoint(gfx::Point(10, 10)));
1574 w12->set_ignore_events(false); 1548 w12->set_ignore_events(false);
1575 1549
1576 EXPECT_EQ(w121.get(), w1->GetEventHandlerForPoint(gfx::Point(160, 160))); 1550 EXPECT_EQ(w121.get(), w1->GetEventHandlerForPoint(gfx::Point(160, 160)));
1577 w121->set_ignore_events(true); 1551 w121->set_ignore_events(true);
1578 EXPECT_EQ(w12.get(), w1->GetEventHandlerForPoint(gfx::Point(160, 160))); 1552 EXPECT_EQ(w12.get(), w1->GetEventHandlerForPoint(gfx::Point(160, 160)));
1579 w12->set_ignore_events(true); 1553 w12->set_ignore_events(true);
(...skipping 24 matching lines...) Expand all
1604 gfx::Screen::GetScreen()->GetDisplayNearestPoint( 1578 gfx::Screen::GetScreen()->GetDisplayNearestPoint(
1605 gfx::Point()).bounds().ToString()); 1579 gfx::Point()).bounds().ToString());
1606 1580
1607 // Host size shouldn't change. 1581 // Host size shouldn't change.
1608 EXPECT_EQ(size.ToString(), host()->GetBounds().size().ToString()); 1582 EXPECT_EQ(size.ToString(), host()->GetBounds().size().ToString());
1609 } 1583 }
1610 1584
1611 TEST_F(WindowTest, TransformGesture) { 1585 TEST_F(WindowTest, TransformGesture) {
1612 gfx::Size size = host()->GetBounds().size(); 1586 gfx::Size size = host()->GetBounds().size();
1613 1587
1614 scoped_ptr<GestureTrackPositionDelegate> delegate( 1588 std::unique_ptr<GestureTrackPositionDelegate> delegate(
1615 new GestureTrackPositionDelegate); 1589 new GestureTrackPositionDelegate);
1616 scoped_ptr<Window> window(CreateTestWindowWithDelegate(delegate.get(), -1234, 1590 std::unique_ptr<Window> window(CreateTestWindowWithDelegate(
1617 gfx::Rect(0, 0, 20, 20), root_window())); 1591 delegate.get(), -1234, gfx::Rect(0, 0, 20, 20), root_window()));
1618 1592
1619 // Rotate the root-window clock-wise 90 degrees. 1593 // Rotate the root-window clock-wise 90 degrees.
1620 gfx::Transform transform; 1594 gfx::Transform transform;
1621 transform.Translate(size.height(), 0.0); 1595 transform.Translate(size.height(), 0.0);
1622 transform.Rotate(90.0); 1596 transform.Rotate(90.0);
1623 host()->SetRootTransform(transform); 1597 host()->SetRootTransform(transform);
1624 1598
1625 ui::TouchEvent press( 1599 ui::TouchEvent press(
1626 ui::ET_TOUCH_PRESSED, gfx::Point(size.height() - 10, 10), 0, getTime()); 1600 ui::ET_TOUCH_PRESSED, gfx::Point(size.height() - 10, 10), 0, getTime());
1627 DispatchEventUsingWindowDispatcher(&press); 1601 DispatchEventUsingWindowDispatcher(&press);
1628 EXPECT_EQ(gfx::Point(10, 10).ToString(), delegate->position().ToString()); 1602 EXPECT_EQ(gfx::Point(10, 10).ToString(), delegate->position().ToString());
1629 } 1603 }
1630 1604
1631 namespace { 1605 namespace {
1632 DEFINE_WINDOW_PROPERTY_KEY(int, kIntKey, -2); 1606 DEFINE_WINDOW_PROPERTY_KEY(int, kIntKey, -2);
1633 DEFINE_WINDOW_PROPERTY_KEY(const char*, kStringKey, "squeamish"); 1607 DEFINE_WINDOW_PROPERTY_KEY(const char*, kStringKey, "squeamish");
1634 } 1608 }
1635 1609
1636 TEST_F(WindowTest, Property) { 1610 TEST_F(WindowTest, Property) {
1637 scoped_ptr<Window> w(CreateTestWindowWithId(0, root_window())); 1611 std::unique_ptr<Window> w(CreateTestWindowWithId(0, root_window()));
1638 1612
1639 static const char native_prop_key[] = "fnord"; 1613 static const char native_prop_key[] = "fnord";
1640 1614
1641 // Non-existent properties should return the default values. 1615 // Non-existent properties should return the default values.
1642 EXPECT_EQ(-2, w->GetProperty(kIntKey)); 1616 EXPECT_EQ(-2, w->GetProperty(kIntKey));
1643 EXPECT_EQ(std::string("squeamish"), w->GetProperty(kStringKey)); 1617 EXPECT_EQ(std::string("squeamish"), w->GetProperty(kStringKey));
1644 EXPECT_EQ(NULL, w->GetNativeWindowProperty(native_prop_key)); 1618 EXPECT_EQ(NULL, w->GetNativeWindowProperty(native_prop_key));
1645 1619
1646 // A set property value should be returned again (even if it's the default 1620 // A set property value should be returned again (even if it's the default
1647 // value). 1621 // value).
(...skipping 17 matching lines...) Expand all
1665 EXPECT_EQ(NULL, w->GetNativeWindowProperty(native_prop_key)); 1639 EXPECT_EQ(NULL, w->GetNativeWindowProperty(native_prop_key));
1666 1640
1667 // ClearProperty should restore the default value. 1641 // ClearProperty should restore the default value.
1668 w->ClearProperty(kIntKey); 1642 w->ClearProperty(kIntKey);
1669 EXPECT_EQ(-2, w->GetProperty(kIntKey)); 1643 EXPECT_EQ(-2, w->GetProperty(kIntKey));
1670 w->ClearProperty(kStringKey); 1644 w->ClearProperty(kStringKey);
1671 EXPECT_EQ(std::string("squeamish"), w->GetProperty(kStringKey)); 1645 EXPECT_EQ(std::string("squeamish"), w->GetProperty(kStringKey));
1672 } 1646 }
1673 1647
1674 TEST_F(WindowTest, OwnedProperty) { 1648 TEST_F(WindowTest, OwnedProperty) {
1675 scoped_ptr<Window> w(CreateTestWindowWithId(0, root_window())); 1649 std::unique_ptr<Window> w(CreateTestWindowWithId(0, root_window()));
1676 EXPECT_EQ(NULL, w->GetProperty(kOwnedKey)); 1650 EXPECT_EQ(NULL, w->GetProperty(kOwnedKey));
1677 TestProperty* last_deleted = TestProperty::last_deleted(); 1651 TestProperty* last_deleted = TestProperty::last_deleted();
1678 TestProperty* p1 = new TestProperty(); 1652 TestProperty* p1 = new TestProperty();
1679 w->SetProperty(kOwnedKey, p1); 1653 w->SetProperty(kOwnedKey, p1);
1680 EXPECT_EQ(p1, w->GetProperty(kOwnedKey)); 1654 EXPECT_EQ(p1, w->GetProperty(kOwnedKey));
1681 EXPECT_EQ(last_deleted, TestProperty::last_deleted()); 1655 EXPECT_EQ(last_deleted, TestProperty::last_deleted());
1682 1656
1683 TestProperty* p2 = new TestProperty(); 1657 TestProperty* p2 = new TestProperty();
1684 w->SetProperty(kOwnedKey, p2); 1658 w->SetProperty(kOwnedKey, p2);
1685 EXPECT_EQ(p2, w->GetProperty(kOwnedKey)); 1659 EXPECT_EQ(p2, w->GetProperty(kOwnedKey));
1686 EXPECT_EQ(p1, TestProperty::last_deleted()); 1660 EXPECT_EQ(p1, TestProperty::last_deleted());
1687 1661
1688 w->ClearProperty(kOwnedKey); 1662 w->ClearProperty(kOwnedKey);
1689 EXPECT_EQ(NULL, w->GetProperty(kOwnedKey)); 1663 EXPECT_EQ(NULL, w->GetProperty(kOwnedKey));
1690 EXPECT_EQ(p2, TestProperty::last_deleted()); 1664 EXPECT_EQ(p2, TestProperty::last_deleted());
1691 1665
1692 TestProperty* p3 = new TestProperty(); 1666 TestProperty* p3 = new TestProperty();
1693 w->SetProperty(kOwnedKey, p3); 1667 w->SetProperty(kOwnedKey, p3);
1694 EXPECT_EQ(p3, w->GetProperty(kOwnedKey)); 1668 EXPECT_EQ(p3, w->GetProperty(kOwnedKey));
1695 EXPECT_EQ(p2, TestProperty::last_deleted()); 1669 EXPECT_EQ(p2, TestProperty::last_deleted());
1696 w.reset(); 1670 w.reset();
1697 EXPECT_EQ(p3, TestProperty::last_deleted()); 1671 EXPECT_EQ(p3, TestProperty::last_deleted());
1698 } 1672 }
1699 1673
1700 TEST_F(WindowTest, SetBoundsInternalShouldCheckTargetBounds) { 1674 TEST_F(WindowTest, SetBoundsInternalShouldCheckTargetBounds) {
1701 // We cannot short-circuit animations in this test. 1675 // We cannot short-circuit animations in this test.
1702 ui::ScopedAnimationDurationScaleMode test_duration_mode( 1676 ui::ScopedAnimationDurationScaleMode test_duration_mode(
1703 ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); 1677 ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION);
1704 1678
1705 scoped_ptr<Window> w1( 1679 std::unique_ptr<Window> w1(
1706 CreateTestWindowWithBounds(gfx::Rect(0, 0, 100, 100), root_window())); 1680 CreateTestWindowWithBounds(gfx::Rect(0, 0, 100, 100), root_window()));
1707 1681
1708 EXPECT_TRUE(w1->layer()); 1682 EXPECT_TRUE(w1->layer());
1709 w1->layer()->GetAnimator()->set_disable_timer_for_test(true); 1683 w1->layer()->GetAnimator()->set_disable_timer_for_test(true);
1710 ui::LayerAnimator* animator = w1->layer()->GetAnimator(); 1684 ui::LayerAnimator* animator = w1->layer()->GetAnimator();
1711 1685
1712 EXPECT_EQ("0,0 100x100", w1->bounds().ToString()); 1686 EXPECT_EQ("0,0 100x100", w1->bounds().ToString());
1713 EXPECT_EQ("0,0 100x100", w1->layer()->GetTargetBounds().ToString()); 1687 EXPECT_EQ("0,0 100x100", w1->layer()->GetTargetBounds().ToString());
1714 1688
1715 // Animate to a different position. 1689 // Animate to a different position.
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
1834 } 1808 }
1835 1809
1836 void OnAncestorWindowTransformed(Window* source, Window* window) override { 1810 void OnAncestorWindowTransformed(Window* source, Window* window) override {
1837 transform_notifications_.push_back( 1811 transform_notifications_.push_back(
1838 std::make_pair(source->id(), window->id())); 1812 std::make_pair(source->id(), window->id()));
1839 } 1813 }
1840 1814
1841 int added_count_; 1815 int added_count_;
1842 int removed_count_; 1816 int removed_count_;
1843 int destroyed_count_; 1817 int destroyed_count_;
1844 scoped_ptr<VisibilityInfo> visibility_info_; 1818 std::unique_ptr<VisibilityInfo> visibility_info_;
1845 const void* property_key_; 1819 const void* property_key_;
1846 intptr_t old_property_value_; 1820 intptr_t old_property_value_;
1847 std::vector<std::pair<int, int> > transform_notifications_; 1821 std::vector<std::pair<int, int> > transform_notifications_;
1848 1822
1849 DISALLOW_COPY_AND_ASSIGN(WindowObserverTest); 1823 DISALLOW_COPY_AND_ASSIGN(WindowObserverTest);
1850 }; 1824 };
1851 1825
1852 // Various assertions for WindowObserver. 1826 // Various assertions for WindowObserver.
1853 TEST_F(WindowObserverTest, WindowObserver) { 1827 TEST_F(WindowObserverTest, WindowObserver) {
1854 scoped_ptr<Window> w1(CreateTestWindowWithId(1, root_window())); 1828 std::unique_ptr<Window> w1(CreateTestWindowWithId(1, root_window()));
1855 w1->AddObserver(this); 1829 w1->AddObserver(this);
1856 1830
1857 // Create a new window as a child of w1, our observer should be notified. 1831 // Create a new window as a child of w1, our observer should be notified.
1858 scoped_ptr<Window> w2(CreateTestWindowWithId(2, w1.get())); 1832 std::unique_ptr<Window> w2(CreateTestWindowWithId(2, w1.get()));
1859 EXPECT_EQ("added=1 removed=0", WindowObserverCountStateAndClear()); 1833 EXPECT_EQ("added=1 removed=0", WindowObserverCountStateAndClear());
1860 1834
1861 // Delete w2, which should result in the remove notification. 1835 // Delete w2, which should result in the remove notification.
1862 w2.reset(); 1836 w2.reset();
1863 EXPECT_EQ("added=0 removed=1", WindowObserverCountStateAndClear()); 1837 EXPECT_EQ("added=0 removed=1", WindowObserverCountStateAndClear());
1864 1838
1865 // Create a window that isn't parented to w1, we shouldn't get any 1839 // Create a window that isn't parented to w1, we shouldn't get any
1866 // notification. 1840 // notification.
1867 scoped_ptr<Window> w3(CreateTestWindowWithId(3, root_window())); 1841 std::unique_ptr<Window> w3(CreateTestWindowWithId(3, root_window()));
1868 EXPECT_EQ("added=0 removed=0", WindowObserverCountStateAndClear()); 1842 EXPECT_EQ("added=0 removed=0", WindowObserverCountStateAndClear());
1869 1843
1870 // Similarly destroying w3 shouldn't notify us either. 1844 // Similarly destroying w3 shouldn't notify us either.
1871 w3.reset(); 1845 w3.reset();
1872 EXPECT_EQ("added=0 removed=0", WindowObserverCountStateAndClear()); 1846 EXPECT_EQ("added=0 removed=0", WindowObserverCountStateAndClear());
1873 w1->RemoveObserver(this); 1847 w1->RemoveObserver(this);
1874 } 1848 }
1875 1849
1876 // Test if OnWindowVisibilityChanged is invoked with expected 1850 // Test if OnWindowVisibilityChanged is invoked with expected
1877 // parameters. 1851 // parameters.
1878 TEST_F(WindowObserverTest, WindowVisibility) { 1852 TEST_F(WindowObserverTest, WindowVisibility) {
1879 scoped_ptr<Window> w1(CreateTestWindowWithId(1, root_window())); 1853 std::unique_ptr<Window> w1(CreateTestWindowWithId(1, root_window()));
1880 scoped_ptr<Window> w2(CreateTestWindowWithId(1, w1.get())); 1854 std::unique_ptr<Window> w2(CreateTestWindowWithId(1, w1.get()));
1881 w2->AddObserver(this); 1855 w2->AddObserver(this);
1882 1856
1883 // Hide should make the window invisible and the passed visible 1857 // Hide should make the window invisible and the passed visible
1884 // parameter is false. 1858 // parameter is false.
1885 w2->Hide(); 1859 w2->Hide();
1886 EXPECT_TRUE(GetVisibilityInfo()); 1860 EXPECT_TRUE(GetVisibilityInfo());
1887 EXPECT_TRUE(GetVisibilityInfo()); 1861 EXPECT_TRUE(GetVisibilityInfo());
1888 if (!GetVisibilityInfo()) 1862 if (!GetVisibilityInfo())
1889 return; 1863 return;
1890 EXPECT_FALSE(GetVisibilityInfo()->window_visible); 1864 EXPECT_FALSE(GetVisibilityInfo()->window_visible);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1922 w2->Hide(); 1896 w2->Hide();
1923 EXPECT_EQ(2, GetVisibilityInfo()->changed_count); 1897 EXPECT_EQ(2, GetVisibilityInfo()->changed_count);
1924 1898
1925 w2->Hide(); 1899 w2->Hide();
1926 EXPECT_EQ(2, GetVisibilityInfo()->changed_count); 1900 EXPECT_EQ(2, GetVisibilityInfo()->changed_count);
1927 } 1901 }
1928 1902
1929 // Test if OnWindowDestroyed is invoked as expected. 1903 // Test if OnWindowDestroyed is invoked as expected.
1930 TEST_F(WindowObserverTest, WindowDestroyed) { 1904 TEST_F(WindowObserverTest, WindowDestroyed) {
1931 // Delete a window should fire a destroyed notification. 1905 // Delete a window should fire a destroyed notification.
1932 scoped_ptr<Window> w1(CreateTestWindowWithId(1, root_window())); 1906 std::unique_ptr<Window> w1(CreateTestWindowWithId(1, root_window()));
1933 w1->AddObserver(this); 1907 w1->AddObserver(this);
1934 w1.reset(); 1908 w1.reset();
1935 EXPECT_EQ(1, DestroyedCountAndClear()); 1909 EXPECT_EQ(1, DestroyedCountAndClear());
1936 1910
1937 // Observe on child and delete parent window should fire a notification. 1911 // Observe on child and delete parent window should fire a notification.
1938 scoped_ptr<Window> parent(CreateTestWindowWithId(1, root_window())); 1912 std::unique_ptr<Window> parent(CreateTestWindowWithId(1, root_window()));
1939 Window* child = CreateTestWindowWithId(1, parent.get()); // owned by parent 1913 Window* child = CreateTestWindowWithId(1, parent.get()); // owned by parent
1940 child->AddObserver(this); 1914 child->AddObserver(this);
1941 parent.reset(); 1915 parent.reset();
1942 EXPECT_EQ(1, DestroyedCountAndClear()); 1916 EXPECT_EQ(1, DestroyedCountAndClear());
1943 } 1917 }
1944 1918
1945 TEST_F(WindowObserverTest, PropertyChanged) { 1919 TEST_F(WindowObserverTest, PropertyChanged) {
1946 // Setting property should fire a property change notification. 1920 // Setting property should fire a property change notification.
1947 scoped_ptr<Window> w1(CreateTestWindowWithId(1, root_window())); 1921 std::unique_ptr<Window> w1(CreateTestWindowWithId(1, root_window()));
1948 w1->AddObserver(this); 1922 w1->AddObserver(this);
1949 1923
1950 static const WindowProperty<int> prop = {-2}; 1924 static const WindowProperty<int> prop = {-2};
1951 static const char native_prop_key[] = "fnord"; 1925 static const char native_prop_key[] = "fnord";
1952 1926
1953 w1->SetProperty(&prop, 1); 1927 w1->SetProperty(&prop, 1);
1954 EXPECT_EQ(PropertyChangeInfo(&prop, -2), PropertyChangeInfoAndClear()); 1928 EXPECT_EQ(PropertyChangeInfo(&prop, -2), PropertyChangeInfoAndClear());
1955 w1->SetProperty(&prop, -2); 1929 w1->SetProperty(&prop, -2);
1956 EXPECT_EQ(PropertyChangeInfo(&prop, 1), PropertyChangeInfoAndClear()); 1930 EXPECT_EQ(PropertyChangeInfo(&prop, 1), PropertyChangeInfoAndClear());
1957 w1->SetProperty(&prop, 3); 1931 w1->SetProperty(&prop, 3);
(...skipping 16 matching lines...) Expand all
1974 1948
1975 TEST_F(WindowObserverTest, AncestorTransformed) { 1949 TEST_F(WindowObserverTest, AncestorTransformed) {
1976 // Create following window hierarchy: 1950 // Create following window hierarchy:
1977 // root_window 1951 // root_window
1978 // +-- w1 1952 // +-- w1
1979 // +-- w2 1953 // +-- w2
1980 // +-- w3 1954 // +-- w3
1981 // +-- w4 1955 // +-- w4
1982 // Then, apply a transform to |w1| and ensure all its descendants are 1956 // Then, apply a transform to |w1| and ensure all its descendants are
1983 // notified. 1957 // notified.
1984 scoped_ptr<Window> w1(CreateTestWindowWithId(1, root_window())); 1958 std::unique_ptr<Window> w1(CreateTestWindowWithId(1, root_window()));
1985 w1->AddObserver(this); 1959 w1->AddObserver(this);
1986 scoped_ptr<Window> w2(CreateTestWindowWithId(2, w1.get())); 1960 std::unique_ptr<Window> w2(CreateTestWindowWithId(2, w1.get()));
1987 w2->AddObserver(this); 1961 w2->AddObserver(this);
1988 scoped_ptr<Window> w3(CreateTestWindowWithId(3, w1.get())); 1962 std::unique_ptr<Window> w3(CreateTestWindowWithId(3, w1.get()));
1989 w3->AddObserver(this); 1963 w3->AddObserver(this);
1990 scoped_ptr<Window> w4(CreateTestWindowWithId(4, w3.get())); 1964 std::unique_ptr<Window> w4(CreateTestWindowWithId(4, w3.get()));
1991 w4->AddObserver(this); 1965 w4->AddObserver(this);
1992 1966
1993 EXPECT_EQ(std::string(), TransformNotificationsAndClear()); 1967 EXPECT_EQ(std::string(), TransformNotificationsAndClear());
1994 1968
1995 gfx::Transform transform; 1969 gfx::Transform transform;
1996 transform.Translate(10, 10); 1970 transform.Translate(10, 10);
1997 w1->SetTransform(transform); 1971 w1->SetTransform(transform);
1998 1972
1999 EXPECT_EQ("(1,1)(1,2)(1,3)(1,4)", TransformNotificationsAndClear()); 1973 EXPECT_EQ("(1,1)(1,2)(1,3)(1,4)", TransformNotificationsAndClear());
2000 } 1974 }
2001 1975
2002 TEST_F(WindowTest, AcquireLayer) { 1976 TEST_F(WindowTest, AcquireLayer) {
2003 scoped_ptr<Window> window1(CreateTestWindowWithId(1, root_window())); 1977 std::unique_ptr<Window> window1(CreateTestWindowWithId(1, root_window()));
2004 scoped_ptr<Window> window2(CreateTestWindowWithId(2, root_window())); 1978 std::unique_ptr<Window> window2(CreateTestWindowWithId(2, root_window()));
2005 ui::Layer* parent = window1->parent()->layer(); 1979 ui::Layer* parent = window1->parent()->layer();
2006 EXPECT_EQ(2U, parent->children().size()); 1980 EXPECT_EQ(2U, parent->children().size());
2007 1981
2008 WindowTestApi window1_test_api(window1.get()); 1982 WindowTestApi window1_test_api(window1.get());
2009 WindowTestApi window2_test_api(window2.get()); 1983 WindowTestApi window2_test_api(window2.get());
2010 1984
2011 EXPECT_TRUE(window1_test_api.OwnsLayer()); 1985 EXPECT_TRUE(window1_test_api.OwnsLayer());
2012 EXPECT_TRUE(window2_test_api.OwnsLayer()); 1986 EXPECT_TRUE(window2_test_api.OwnsLayer());
2013 1987
2014 // After acquisition, window1 should not own its layer, but it should still 1988 // After acquisition, window1 should not own its layer, but it should still
2015 // be available to the window. 1989 // be available to the window.
2016 scoped_ptr<ui::Layer> window1_layer(window1->AcquireLayer()); 1990 std::unique_ptr<ui::Layer> window1_layer(window1->AcquireLayer());
2017 EXPECT_FALSE(window1_test_api.OwnsLayer()); 1991 EXPECT_FALSE(window1_test_api.OwnsLayer());
2018 EXPECT_TRUE(window1_layer.get() == window1->layer()); 1992 EXPECT_TRUE(window1_layer.get() == window1->layer());
2019 1993
2020 // The acquired layer's owner should be set NULL and re-acquring 1994 // The acquired layer's owner should be set NULL and re-acquring
2021 // should return NULL. 1995 // should return NULL.
2022 EXPECT_FALSE(window1_layer->owner()); 1996 EXPECT_FALSE(window1_layer->owner());
2023 scoped_ptr<ui::Layer> window1_layer_reacquired(window1->AcquireLayer()); 1997 std::unique_ptr<ui::Layer> window1_layer_reacquired(window1->AcquireLayer());
2024 EXPECT_FALSE(window1_layer_reacquired.get()); 1998 EXPECT_FALSE(window1_layer_reacquired.get());
2025 1999
2026 // Upon destruction, window1's layer should still be valid, and in the layer 2000 // Upon destruction, window1's layer should still be valid, and in the layer
2027 // hierarchy, but window2's should be gone, and no longer in the hierarchy. 2001 // hierarchy, but window2's should be gone, and no longer in the hierarchy.
2028 window1.reset(); 2002 window1.reset();
2029 window2.reset(); 2003 window2.reset();
2030 2004
2031 // This should be set by the window's destructor. 2005 // This should be set by the window's destructor.
2032 EXPECT_TRUE(window1_layer->delegate() == NULL); 2006 EXPECT_TRUE(window1_layer->delegate() == NULL);
2033 EXPECT_EQ(1U, parent->children().size()); 2007 EXPECT_EQ(1U, parent->children().size());
2034 } 2008 }
2035 2009
2036 // Make sure that properties which should persist from the old layer to the new 2010 // Make sure that properties which should persist from the old layer to the new
2037 // layer actually do. 2011 // layer actually do.
2038 TEST_F(WindowTest, RecreateLayer) { 2012 TEST_F(WindowTest, RecreateLayer) {
2039 // Set properties to non default values. 2013 // Set properties to non default values.
2040 gfx::Rect window_bounds(100, 100); 2014 gfx::Rect window_bounds(100, 100);
2041 Window w(new ColorTestWindowDelegate(SK_ColorWHITE)); 2015 Window w(new ColorTestWindowDelegate(SK_ColorWHITE));
2042 w.set_id(1); 2016 w.set_id(1);
2043 w.Init(ui::LAYER_SOLID_COLOR); 2017 w.Init(ui::LAYER_SOLID_COLOR);
2044 w.SetBounds(window_bounds); 2018 w.SetBounds(window_bounds);
2045 2019
2046 ui::Layer* layer = w.layer(); 2020 ui::Layer* layer = w.layer();
2047 layer->SetVisible(false); 2021 layer->SetVisible(false);
2048 layer->SetMasksToBounds(true); 2022 layer->SetMasksToBounds(true);
2049 2023
2050 ui::Layer child_layer; 2024 ui::Layer child_layer;
2051 layer->Add(&child_layer); 2025 layer->Add(&child_layer);
2052 2026
2053 scoped_ptr<ui::Layer> old_layer(w.RecreateLayer()); 2027 std::unique_ptr<ui::Layer> old_layer(w.RecreateLayer());
2054 layer = w.layer(); 2028 layer = w.layer();
2055 EXPECT_EQ(ui::LAYER_SOLID_COLOR, layer->type()); 2029 EXPECT_EQ(ui::LAYER_SOLID_COLOR, layer->type());
2056 EXPECT_FALSE(layer->visible()); 2030 EXPECT_FALSE(layer->visible());
2057 EXPECT_EQ(1u, layer->children().size()); 2031 EXPECT_EQ(1u, layer->children().size());
2058 EXPECT_TRUE(layer->GetMasksToBounds()); 2032 EXPECT_TRUE(layer->GetMasksToBounds());
2059 EXPECT_EQ("0,0 100x100", w.bounds().ToString()); 2033 EXPECT_EQ("0,0 100x100", w.bounds().ToString());
2060 EXPECT_EQ("0,0 100x100", layer->bounds().ToString()); 2034 EXPECT_EQ("0,0 100x100", layer->bounds().ToString());
2061 } 2035 }
2062 2036
2063 // Verify that RecreateLayer() stacks the old layer above the newly creatd 2037 // Verify that RecreateLayer() stacks the old layer above the newly creatd
2064 // layer. 2038 // layer.
2065 TEST_F(WindowTest, RecreateLayerZOrder) { 2039 TEST_F(WindowTest, RecreateLayerZOrder) {
2066 scoped_ptr<Window> w( 2040 std::unique_ptr<Window> w(CreateTestWindow(
2067 CreateTestWindow(SK_ColorWHITE, 1, gfx::Rect(0, 0, 100, 100), 2041 SK_ColorWHITE, 1, gfx::Rect(0, 0, 100, 100), root_window()));
2068 root_window())); 2042 std::unique_ptr<ui::Layer> old_layer(w->RecreateLayer());
2069 scoped_ptr<ui::Layer> old_layer(w->RecreateLayer());
2070 2043
2071 const std::vector<ui::Layer*>& child_layers = 2044 const std::vector<ui::Layer*>& child_layers =
2072 root_window()->layer()->children(); 2045 root_window()->layer()->children();
2073 ASSERT_EQ(2u, child_layers.size()); 2046 ASSERT_EQ(2u, child_layers.size());
2074 EXPECT_EQ(w->layer(), child_layers[0]); 2047 EXPECT_EQ(w->layer(), child_layers[0]);
2075 EXPECT_EQ(old_layer.get(), child_layers[1]); 2048 EXPECT_EQ(old_layer.get(), child_layers[1]);
2076 } 2049 }
2077 2050
2078 // Ensure that acquiring a layer then recreating a layer does not crash 2051 // Ensure that acquiring a layer then recreating a layer does not crash
2079 // and that RecreateLayer returns null. 2052 // and that RecreateLayer returns null.
2080 TEST_F(WindowTest, AcquireThenRecreateLayer) { 2053 TEST_F(WindowTest, AcquireThenRecreateLayer) {
2081 scoped_ptr<Window> w( 2054 std::unique_ptr<Window> w(CreateTestWindow(
2082 CreateTestWindow(SK_ColorWHITE, 1, gfx::Rect(0, 0, 100, 100), 2055 SK_ColorWHITE, 1, gfx::Rect(0, 0, 100, 100), root_window()));
2083 root_window())); 2056 std::unique_ptr<ui::Layer> acquired_layer(w->AcquireLayer());
2084 scoped_ptr<ui::Layer> acquired_layer(w->AcquireLayer()); 2057 std::unique_ptr<ui::Layer> doubly_acquired_layer(w->RecreateLayer());
2085 scoped_ptr<ui::Layer> doubly_acquired_layer(w->RecreateLayer());
2086 EXPECT_EQ(NULL, doubly_acquired_layer.get()); 2058 EXPECT_EQ(NULL, doubly_acquired_layer.get());
2087 2059
2088 // Destroy window before layer gets destroyed. 2060 // Destroy window before layer gets destroyed.
2089 w.reset(); 2061 w.reset();
2090 } 2062 }
2091 2063
2092 class TestVisibilityClient : public client::VisibilityClient { 2064 class TestVisibilityClient : public client::VisibilityClient {
2093 public: 2065 public:
2094 explicit TestVisibilityClient(Window* root_window) 2066 explicit TestVisibilityClient(Window* root_window)
2095 : ignore_visibility_changes_(false) { 2067 : ignore_visibility_changes_(false) {
(...skipping 12 matching lines...) Expand all
2108 } 2080 }
2109 2081
2110 private: 2082 private:
2111 bool ignore_visibility_changes_; 2083 bool ignore_visibility_changes_;
2112 DISALLOW_COPY_AND_ASSIGN(TestVisibilityClient); 2084 DISALLOW_COPY_AND_ASSIGN(TestVisibilityClient);
2113 }; 2085 };
2114 2086
2115 TEST_F(WindowTest, VisibilityClientIsVisible) { 2087 TEST_F(WindowTest, VisibilityClientIsVisible) {
2116 TestVisibilityClient client(root_window()); 2088 TestVisibilityClient client(root_window());
2117 2089
2118 scoped_ptr<Window> window(CreateTestWindowWithId(1, root_window())); 2090 std::unique_ptr<Window> window(CreateTestWindowWithId(1, root_window()));
2119 EXPECT_TRUE(window->IsVisible()); 2091 EXPECT_TRUE(window->IsVisible());
2120 EXPECT_TRUE(window->layer()->visible()); 2092 EXPECT_TRUE(window->layer()->visible());
2121 2093
2122 window->Hide(); 2094 window->Hide();
2123 EXPECT_FALSE(window->IsVisible()); 2095 EXPECT_FALSE(window->IsVisible());
2124 EXPECT_FALSE(window->layer()->visible()); 2096 EXPECT_FALSE(window->layer()->visible());
2125 window->Show(); 2097 window->Show();
2126 2098
2127 client.set_ignore_visibility_changes(true); 2099 client.set_ignore_visibility_changes(true);
2128 window->Hide(); 2100 window->Hide();
2129 EXPECT_FALSE(window->IsVisible()); 2101 EXPECT_FALSE(window->IsVisible());
2130 EXPECT_TRUE(window->layer()->visible()); 2102 EXPECT_TRUE(window->layer()->visible());
2131 } 2103 }
2132 2104
2133 // Tests the mouse events seen by WindowDelegates in a Window hierarchy when 2105 // Tests the mouse events seen by WindowDelegates in a Window hierarchy when
2134 // changing the properties of a leaf Window. 2106 // changing the properties of a leaf Window.
2135 TEST_F(WindowTest, MouseEventsOnLeafWindowChange) { 2107 TEST_F(WindowTest, MouseEventsOnLeafWindowChange) {
2136 gfx::Size size = host()->GetBounds().size(); 2108 gfx::Size size = host()->GetBounds().size();
2137 2109
2138 ui::test::EventGenerator generator(root_window()); 2110 ui::test::EventGenerator generator(root_window());
2139 generator.MoveMouseTo(50, 50); 2111 generator.MoveMouseTo(50, 50);
2140 2112
2141 EventCountDelegate d1; 2113 EventCountDelegate d1;
2142 scoped_ptr<Window> w1(CreateTestWindowWithDelegate(&d1, 1, 2114 std::unique_ptr<Window> w1(CreateTestWindowWithDelegate(
2143 gfx::Rect(0, 0, 100, 100), root_window())); 2115 &d1, 1, gfx::Rect(0, 0, 100, 100), root_window()));
2144 RunAllPendingInMessageLoop(); 2116 RunAllPendingInMessageLoop();
2145 // The format of result is "Enter/Move/Leave". 2117 // The format of result is "Enter/Move/Leave".
2146 EXPECT_EQ("1 1 0", d1.GetMouseMotionCountsAndReset()); 2118 EXPECT_EQ("1 1 0", d1.GetMouseMotionCountsAndReset());
2147 2119
2148 // Add new window |w11| on top of |w1| which contains the cursor. 2120 // Add new window |w11| on top of |w1| which contains the cursor.
2149 EventCountDelegate d11; 2121 EventCountDelegate d11;
2150 scoped_ptr<Window> w11(CreateTestWindowWithDelegate( 2122 std::unique_ptr<Window> w11(CreateTestWindowWithDelegate(
2151 &d11, 1, gfx::Rect(0, 0, 100, 100), w1.get())); 2123 &d11, 1, gfx::Rect(0, 0, 100, 100), w1.get()));
2152 RunAllPendingInMessageLoop(); 2124 RunAllPendingInMessageLoop();
2153 EXPECT_EQ("0 0 1", d1.GetMouseMotionCountsAndReset()); 2125 EXPECT_EQ("0 0 1", d1.GetMouseMotionCountsAndReset());
2154 EXPECT_EQ("1 1 0", d11.GetMouseMotionCountsAndReset()); 2126 EXPECT_EQ("1 1 0", d11.GetMouseMotionCountsAndReset());
2155 2127
2156 // Resize |w11| so that it does not contain the cursor. 2128 // Resize |w11| so that it does not contain the cursor.
2157 w11->SetBounds(gfx::Rect(0, 0, 10, 10)); 2129 w11->SetBounds(gfx::Rect(0, 0, 10, 10));
2158 RunAllPendingInMessageLoop(); 2130 RunAllPendingInMessageLoop();
2159 EXPECT_EQ("1 1 0", d1.GetMouseMotionCountsAndReset()); 2131 EXPECT_EQ("1 1 0", d1.GetMouseMotionCountsAndReset());
2160 EXPECT_EQ("0 0 1", d11.GetMouseMotionCountsAndReset()); 2132 EXPECT_EQ("0 0 1", d11.GetMouseMotionCountsAndReset());
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
2233 2205
2234 // Tests the mouse events seen by WindowDelegates in a Window hierarchy when 2206 // Tests the mouse events seen by WindowDelegates in a Window hierarchy when
2235 // deleting a non-leaf Window. 2207 // deleting a non-leaf Window.
2236 TEST_F(WindowTest, MouseEventsOnNonLeafWindowDelete) { 2208 TEST_F(WindowTest, MouseEventsOnNonLeafWindowDelete) {
2237 gfx::Size size = host()->GetBounds().size(); 2209 gfx::Size size = host()->GetBounds().size();
2238 2210
2239 ui::test::EventGenerator generator(root_window()); 2211 ui::test::EventGenerator generator(root_window());
2240 generator.MoveMouseTo(50, 50); 2212 generator.MoveMouseTo(50, 50);
2241 2213
2242 EventCountDelegate d1; 2214 EventCountDelegate d1;
2243 scoped_ptr<Window> w1(CreateTestWindowWithDelegate(&d1, 1, 2215 std::unique_ptr<Window> w1(CreateTestWindowWithDelegate(
2244 gfx::Rect(0, 0, 100, 100), root_window())); 2216 &d1, 1, gfx::Rect(0, 0, 100, 100), root_window()));
2245 RunAllPendingInMessageLoop(); 2217 RunAllPendingInMessageLoop();
2246 // The format of result is "Enter/Move/Leave". 2218 // The format of result is "Enter/Move/Leave".
2247 EXPECT_EQ("1 1 0", d1.GetMouseMotionCountsAndReset()); 2219 EXPECT_EQ("1 1 0", d1.GetMouseMotionCountsAndReset());
2248 2220
2249 // Add new window |w2| on top of |w1| which contains the cursor. 2221 // Add new window |w2| on top of |w1| which contains the cursor.
2250 EventCountDelegate d2; 2222 EventCountDelegate d2;
2251 scoped_ptr<Window> w2(CreateTestWindowWithDelegate( 2223 std::unique_ptr<Window> w2(CreateTestWindowWithDelegate(
2252 &d2, 1, gfx::Rect(0, 0, 100, 100), w1.get())); 2224 &d2, 1, gfx::Rect(0, 0, 100, 100), w1.get()));
2253 RunAllPendingInMessageLoop(); 2225 RunAllPendingInMessageLoop();
2254 EXPECT_EQ("0 0 1", d1.GetMouseMotionCountsAndReset()); 2226 EXPECT_EQ("0 0 1", d1.GetMouseMotionCountsAndReset());
2255 EXPECT_EQ("1 1 0", d2.GetMouseMotionCountsAndReset()); 2227 EXPECT_EQ("1 1 0", d2.GetMouseMotionCountsAndReset());
2256 2228
2257 // Add new window on top of |w2| which contains the cursor. 2229 // Add new window on top of |w2| which contains the cursor.
2258 EventCountDelegate d3; 2230 EventCountDelegate d3;
2259 CreateTestWindowWithDelegate( 2231 CreateTestWindowWithDelegate(
2260 &d3, 1, gfx::Rect(0, 0, 100, 100), w2.get()); 2232 &d3, 1, gfx::Rect(0, 0, 100, 100), w2.get());
2261 RunAllPendingInMessageLoop(); 2233 RunAllPendingInMessageLoop();
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
2297 int added_count_; 2269 int added_count_;
2298 int removed_count_; 2270 int removed_count_;
2299 2271
2300 DISALLOW_COPY_AND_ASSIGN(RootWindowAttachmentObserver); 2272 DISALLOW_COPY_AND_ASSIGN(RootWindowAttachmentObserver);
2301 }; 2273 };
2302 2274
2303 TEST_F(WindowTest, RootWindowAttachment) { 2275 TEST_F(WindowTest, RootWindowAttachment) {
2304 RootWindowAttachmentObserver observer; 2276 RootWindowAttachmentObserver observer;
2305 2277
2306 // Test a direct add/remove from the RootWindow. 2278 // Test a direct add/remove from the RootWindow.
2307 scoped_ptr<Window> w1(new Window(NULL)); 2279 std::unique_ptr<Window> w1(new Window(NULL));
2308 w1->Init(ui::LAYER_NOT_DRAWN); 2280 w1->Init(ui::LAYER_NOT_DRAWN);
2309 w1->AddObserver(&observer); 2281 w1->AddObserver(&observer);
2310 2282
2311 ParentWindow(w1.get()); 2283 ParentWindow(w1.get());
2312 EXPECT_EQ(1, observer.added_count()); 2284 EXPECT_EQ(1, observer.added_count());
2313 EXPECT_EQ(0, observer.removed_count()); 2285 EXPECT_EQ(0, observer.removed_count());
2314 2286
2315 w1.reset(); 2287 w1.reset();
2316 EXPECT_EQ(1, observer.added_count()); 2288 EXPECT_EQ(1, observer.added_count());
2317 EXPECT_EQ(1, observer.removed_count()); 2289 EXPECT_EQ(1, observer.removed_count());
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
2418 // got reparented. 2390 // got reparented.
2419 EXPECT_EQ(new_bounds.ToString(), child.GetTargetBounds().ToString()); 2391 EXPECT_EQ(new_bounds.ToString(), child.GetTargetBounds().ToString());
2420 EXPECT_EQ(new_bounds.ToString(), child.bounds().ToString()); 2392 EXPECT_EQ(new_bounds.ToString(), child.bounds().ToString());
2421 EXPECT_EQ("55,55 50x50", child.GetBoundsInRootWindow().ToString()); 2393 EXPECT_EQ("55,55 50x50", child.GetBoundsInRootWindow().ToString());
2422 } 2394 }
2423 2395
2424 TEST_F(WindowTest, OwnedByParentFalse) { 2396 TEST_F(WindowTest, OwnedByParentFalse) {
2425 // By default, a window is owned by its parent. If this is set to false, the 2397 // By default, a window is owned by its parent. If this is set to false, the
2426 // window will not be destroyed when its parent is. 2398 // window will not be destroyed when its parent is.
2427 2399
2428 scoped_ptr<Window> w1(new Window(NULL)); 2400 std::unique_ptr<Window> w1(new Window(NULL));
2429 w1->Init(ui::LAYER_NOT_DRAWN); 2401 w1->Init(ui::LAYER_NOT_DRAWN);
2430 scoped_ptr<Window> w2(new Window(NULL)); 2402 std::unique_ptr<Window> w2(new Window(NULL));
2431 w2->set_owned_by_parent(false); 2403 w2->set_owned_by_parent(false);
2432 w2->Init(ui::LAYER_NOT_DRAWN); 2404 w2->Init(ui::LAYER_NOT_DRAWN);
2433 w1->AddChild(w2.get()); 2405 w1->AddChild(w2.get());
2434 2406
2435 w1.reset(); 2407 w1.reset();
2436 2408
2437 // We should be able to deref w2 still, but its parent should now be NULL. 2409 // We should be able to deref w2 still, but its parent should now be NULL.
2438 EXPECT_EQ(NULL, w2->parent()); 2410 EXPECT_EQ(NULL, w2->parent());
2439 } 2411 }
2440 2412
2441 namespace { 2413 namespace {
2442 2414
2443 // Used By DeleteWindowFromOnWindowDestroyed. Destroys a Window from 2415 // Used By DeleteWindowFromOnWindowDestroyed. Destroys a Window from
2444 // OnWindowDestroyed(). 2416 // OnWindowDestroyed().
2445 class OwningWindowDelegate : public TestWindowDelegate { 2417 class OwningWindowDelegate : public TestWindowDelegate {
2446 public: 2418 public:
2447 OwningWindowDelegate() {} 2419 OwningWindowDelegate() {}
2448 2420
2449 void SetOwnedWindow(Window* window) { 2421 void SetOwnedWindow(Window* window) {
2450 owned_window_.reset(window); 2422 owned_window_.reset(window);
2451 } 2423 }
2452 2424
2453 void OnWindowDestroyed(Window* window) override { owned_window_.reset(NULL); } 2425 void OnWindowDestroyed(Window* window) override { owned_window_.reset(NULL); }
2454 2426
2455 private: 2427 private:
2456 scoped_ptr<Window> owned_window_; 2428 std::unique_ptr<Window> owned_window_;
2457 2429
2458 DISALLOW_COPY_AND_ASSIGN(OwningWindowDelegate); 2430 DISALLOW_COPY_AND_ASSIGN(OwningWindowDelegate);
2459 }; 2431 };
2460 2432
2461 } // namespace 2433 } // namespace
2462 2434
2463 // Creates a window with two child windows. When the first child window is 2435 // Creates a window with two child windows. When the first child window is
2464 // destroyed (WindowDelegate::OnWindowDestroyed) it deletes the second child. 2436 // destroyed (WindowDelegate::OnWindowDestroyed) it deletes the second child.
2465 // This synthesizes BrowserView and the status bubble. Both are children of the 2437 // This synthesizes BrowserView and the status bubble. Both are children of the
2466 // same parent and destroying BrowserView triggers it destroying the status 2438 // same parent and destroying BrowserView triggers it destroying the status
2467 // bubble. 2439 // bubble.
2468 TEST_F(WindowTest, DeleteWindowFromOnWindowDestroyed) { 2440 TEST_F(WindowTest, DeleteWindowFromOnWindowDestroyed) {
2469 scoped_ptr<Window> parent(new Window(NULL)); 2441 std::unique_ptr<Window> parent(new Window(NULL));
2470 parent->Init(ui::LAYER_NOT_DRAWN); 2442 parent->Init(ui::LAYER_NOT_DRAWN);
2471 OwningWindowDelegate delegate; 2443 OwningWindowDelegate delegate;
2472 Window* c1 = new Window(&delegate); 2444 Window* c1 = new Window(&delegate);
2473 c1->Init(ui::LAYER_NOT_DRAWN); 2445 c1->Init(ui::LAYER_NOT_DRAWN);
2474 parent->AddChild(c1); 2446 parent->AddChild(c1);
2475 Window* c2 = new Window(NULL); 2447 Window* c2 = new Window(NULL);
2476 c2->Init(ui::LAYER_NOT_DRAWN); 2448 c2->Init(ui::LAYER_NOT_DRAWN);
2477 parent->AddChild(c2); 2449 parent->AddChild(c2);
2478 delegate.SetOwnedWindow(c2); 2450 delegate.SetOwnedWindow(c2);
2479 parent.reset(); 2451 parent.reset();
(...skipping 29 matching lines...) Expand all
2509 2481
2510 // Verifies the delegate is notified when the actual bounds of the layer 2482 // Verifies the delegate is notified when the actual bounds of the layer
2511 // change. 2483 // change.
2512 TEST_F(WindowTest, DelegateNotifiedAsBoundsChange) { 2484 TEST_F(WindowTest, DelegateNotifiedAsBoundsChange) {
2513 BoundsChangeDelegate delegate; 2485 BoundsChangeDelegate delegate;
2514 2486
2515 // We cannot short-circuit animations in this test. 2487 // We cannot short-circuit animations in this test.
2516 ui::ScopedAnimationDurationScaleMode test_duration_mode( 2488 ui::ScopedAnimationDurationScaleMode test_duration_mode(
2517 ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); 2489 ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION);
2518 2490
2519 scoped_ptr<Window> window( 2491 std::unique_ptr<Window> window(CreateTestWindowWithDelegate(
2520 CreateTestWindowWithDelegate(&delegate, 1, 2492 &delegate, 1, gfx::Rect(0, 0, 100, 100), root_window()));
2521 gfx::Rect(0, 0, 100, 100), root_window()));
2522 window->layer()->GetAnimator()->set_disable_timer_for_test(true); 2493 window->layer()->GetAnimator()->set_disable_timer_for_test(true);
2523 2494
2524 delegate.clear_bounds_changed(); 2495 delegate.clear_bounds_changed();
2525 2496
2526 // Animate to a different position. 2497 // Animate to a different position.
2527 { 2498 {
2528 ui::ScopedLayerAnimationSettings settings(window->layer()->GetAnimator()); 2499 ui::ScopedLayerAnimationSettings settings(window->layer()->GetAnimator());
2529 window->SetBounds(gfx::Rect(100, 100, 100, 100)); 2500 window->SetBounds(gfx::Rect(100, 100, 100, 100));
2530 } 2501 }
2531 2502
(...skipping 12 matching lines...) Expand all
2544 2515
2545 // Verifies the delegate is notified when the actual bounds of the layer 2516 // Verifies the delegate is notified when the actual bounds of the layer
2546 // change even when the window is not the layer's delegate 2517 // change even when the window is not the layer's delegate
2547 TEST_F(WindowTest, DelegateNotifiedAsBoundsChangeInHiddenLayer) { 2518 TEST_F(WindowTest, DelegateNotifiedAsBoundsChangeInHiddenLayer) {
2548 BoundsChangeDelegate delegate; 2519 BoundsChangeDelegate delegate;
2549 2520
2550 // We cannot short-circuit animations in this test. 2521 // We cannot short-circuit animations in this test.
2551 ui::ScopedAnimationDurationScaleMode test_duration_mode( 2522 ui::ScopedAnimationDurationScaleMode test_duration_mode(
2552 ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); 2523 ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION);
2553 2524
2554 scoped_ptr<Window> window( 2525 std::unique_ptr<Window> window(CreateTestWindowWithDelegate(
2555 CreateTestWindowWithDelegate(&delegate, 1, 2526 &delegate, 1, gfx::Rect(0, 0, 100, 100), root_window()));
2556 gfx::Rect(0, 0, 100, 100), root_window()));
2557 window->layer()->GetAnimator()->set_disable_timer_for_test(true); 2527 window->layer()->GetAnimator()->set_disable_timer_for_test(true);
2558 2528
2559 delegate.clear_bounds_changed(); 2529 delegate.clear_bounds_changed();
2560 2530
2561 // Suppress paint on the window since it is hidden (should reset the layer's 2531 // Suppress paint on the window since it is hidden (should reset the layer's
2562 // delegate to NULL) 2532 // delegate to NULL)
2563 window->SuppressPaint(); 2533 window->SuppressPaint();
2564 EXPECT_EQ(NULL, window->layer()->delegate()); 2534 EXPECT_EQ(NULL, window->layer()->delegate());
2565 2535
2566 // Animate to a different position. 2536 // Animate to a different position.
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
2613 int removed_count_; 2583 int removed_count_;
2614 2584
2615 DISALLOW_COPY_AND_ASSIGN(AddChildNotificationsObserver); 2585 DISALLOW_COPY_AND_ASSIGN(AddChildNotificationsObserver);
2616 }; 2586 };
2617 2587
2618 } // namespace 2588 } // namespace
2619 2589
2620 // Assertions around when root window notifications are sent. 2590 // Assertions around when root window notifications are sent.
2621 TEST_F(WindowTest, AddChildNotifications) { 2591 TEST_F(WindowTest, AddChildNotifications) {
2622 AddChildNotificationsObserver observer; 2592 AddChildNotificationsObserver observer;
2623 scoped_ptr<Window> w1(CreateTestWindowWithId(1, root_window())); 2593 std::unique_ptr<Window> w1(CreateTestWindowWithId(1, root_window()));
2624 scoped_ptr<Window> w2(CreateTestWindowWithId(1, root_window())); 2594 std::unique_ptr<Window> w2(CreateTestWindowWithId(1, root_window()));
2625 w2->AddObserver(&observer); 2595 w2->AddObserver(&observer);
2626 w2->Focus(); 2596 w2->Focus();
2627 EXPECT_TRUE(w2->HasFocus()); 2597 EXPECT_TRUE(w2->HasFocus());
2628 2598
2629 // Move |w2| to be a child of |w1|. 2599 // Move |w2| to be a child of |w1|.
2630 w1->AddChild(w2.get()); 2600 w1->AddChild(w2.get());
2631 // Sine we moved in the same root, observer shouldn't be notified. 2601 // Sine we moved in the same root, observer shouldn't be notified.
2632 EXPECT_EQ("0 0", observer.CountStringAndReset()); 2602 EXPECT_EQ("0 0", observer.CountStringAndReset());
2633 // |w2| should still have focus after moving. 2603 // |w2| should still have focus after moving.
2634 EXPECT_TRUE(w2->HasFocus()); 2604 EXPECT_TRUE(w2->HasFocus());
2635 } 2605 }
2636 2606
2637 // Tests that a delegate that destroys itself when the window is destroyed does 2607 // Tests that a delegate that destroys itself when the window is destroyed does
2638 // not break. 2608 // not break.
2639 TEST_F(WindowTest, DelegateDestroysSelfOnWindowDestroy) { 2609 TEST_F(WindowTest, DelegateDestroysSelfOnWindowDestroy) {
2640 scoped_ptr<Window> w1(CreateTestWindowWithDelegate( 2610 std::unique_ptr<Window> w1(
2641 new DestroyWindowDelegate(), 2611 CreateTestWindowWithDelegate(new DestroyWindowDelegate(), 0,
2642 0, 2612 gfx::Rect(10, 20, 30, 40), root_window()));
2643 gfx::Rect(10, 20, 30, 40),
2644 root_window()));
2645 } 2613 }
2646 2614
2647 class HierarchyObserver : public WindowObserver { 2615 class HierarchyObserver : public WindowObserver {
2648 public: 2616 public:
2649 explicit HierarchyObserver(Window* target) : target_(target) { 2617 explicit HierarchyObserver(Window* target) : target_(target) {
2650 target_->AddObserver(this); 2618 target_->AddObserver(this);
2651 } 2619 }
2652 ~HierarchyObserver() override { target_->RemoveObserver(this); } 2620 ~HierarchyObserver() override { target_->RemoveObserver(this); }
2653 2621
2654 void ValidateState( 2622 void ValidateState(
(...skipping 29 matching lines...) Expand all
2684 2652
2685 DISALLOW_COPY_AND_ASSIGN(HierarchyObserver); 2653 DISALLOW_COPY_AND_ASSIGN(HierarchyObserver);
2686 }; 2654 };
2687 2655
2688 // Tests hierarchy change notifications. 2656 // Tests hierarchy change notifications.
2689 TEST_F(WindowTest, OnWindowHierarchyChange) { 2657 TEST_F(WindowTest, OnWindowHierarchyChange) {
2690 { 2658 {
2691 // Simple add & remove. 2659 // Simple add & remove.
2692 HierarchyObserver oroot(root_window()); 2660 HierarchyObserver oroot(root_window());
2693 2661
2694 scoped_ptr<Window> w1(CreateTestWindowWithId(1, NULL)); 2662 std::unique_ptr<Window> w1(CreateTestWindowWithId(1, NULL));
2695 HierarchyObserver o1(w1.get()); 2663 HierarchyObserver o1(w1.get());
2696 2664
2697 // Add. 2665 // Add.
2698 root_window()->AddChild(w1.get()); 2666 root_window()->AddChild(w1.get());
2699 2667
2700 WindowObserver::HierarchyChangeParams params; 2668 WindowObserver::HierarchyChangeParams params;
2701 params.phase = WindowObserver::HierarchyChangeParams::HIERARCHY_CHANGING; 2669 params.phase = WindowObserver::HierarchyChangeParams::HIERARCHY_CHANGING;
2702 params.target = w1.get(); 2670 params.target = w1.get();
2703 params.old_parent = NULL; 2671 params.old_parent = NULL;
2704 params.new_parent = root_window(); 2672 params.new_parent = root_window();
(...skipping 25 matching lines...) Expand all
2730 2698
2731 params.phase = WindowObserver::HierarchyChangeParams::HIERARCHY_CHANGED; 2699 params.phase = WindowObserver::HierarchyChangeParams::HIERARCHY_CHANGED;
2732 params.receiver = w1.get(); 2700 params.receiver = w1.get();
2733 o1.ValidateState(1, params); 2701 o1.ValidateState(1, params);
2734 } 2702 }
2735 2703
2736 { 2704 {
2737 // Add & remove of hierarchy. Tests notification order per documentation in 2705 // Add & remove of hierarchy. Tests notification order per documentation in
2738 // WindowObserver. 2706 // WindowObserver.
2739 HierarchyObserver o(root_window()); 2707 HierarchyObserver o(root_window());
2740 scoped_ptr<Window> w1(CreateTestWindowWithId(1, NULL)); 2708 std::unique_ptr<Window> w1(CreateTestWindowWithId(1, NULL));
2741 Window* w11 = CreateTestWindowWithId(11, w1.get()); 2709 Window* w11 = CreateTestWindowWithId(11, w1.get());
2742 w1->AddObserver(&o); 2710 w1->AddObserver(&o);
2743 w11->AddObserver(&o); 2711 w11->AddObserver(&o);
2744 2712
2745 // Add. 2713 // Add.
2746 root_window()->AddChild(w1.get()); 2714 root_window()->AddChild(w1.get());
2747 2715
2748 // Dispatched to target first. 2716 // Dispatched to target first.
2749 int index = 0; 2717 int index = 0;
2750 WindowObserver::HierarchyChangeParams params; 2718 WindowObserver::HierarchyChangeParams params;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
2784 params.receiver = w1.get(); 2752 params.receiver = w1.get();
2785 o.ValidateState(index++, params); 2753 o.ValidateState(index++, params);
2786 params.receiver = w11; 2754 params.receiver = w11;
2787 o.ValidateState(index++, params); 2755 o.ValidateState(index++, params);
2788 2756
2789 w1.reset(); 2757 w1.reset();
2790 } 2758 }
2791 2759
2792 { 2760 {
2793 // Reparent. Tests notification order per documentation in WindowObserver. 2761 // Reparent. Tests notification order per documentation in WindowObserver.
2794 scoped_ptr<Window> w1(CreateTestWindowWithId(1, root_window())); 2762 std::unique_ptr<Window> w1(CreateTestWindowWithId(1, root_window()));
2795 Window* w11 = CreateTestWindowWithId(11, w1.get()); 2763 Window* w11 = CreateTestWindowWithId(11, w1.get());
2796 Window* w111 = CreateTestWindowWithId(111, w11); 2764 Window* w111 = CreateTestWindowWithId(111, w11);
2797 scoped_ptr<Window> w2(CreateTestWindowWithId(2, root_window())); 2765 std::unique_ptr<Window> w2(CreateTestWindowWithId(2, root_window()));
2798 2766
2799 HierarchyObserver o(root_window()); 2767 HierarchyObserver o(root_window());
2800 w1->AddObserver(&o); 2768 w1->AddObserver(&o);
2801 w11->AddObserver(&o); 2769 w11->AddObserver(&o);
2802 w111->AddObserver(&o); 2770 w111->AddObserver(&o);
2803 w2->AddObserver(&o); 2771 w2->AddObserver(&o);
2804 2772
2805 w2->AddChild(w11); 2773 w2->AddChild(w11);
2806 2774
2807 // Dispatched to target first. 2775 // Dispatched to target first.
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
2880 2848
2881 TEST_F(WindowTest, WindowDestroyCompletesAnimations) { 2849 TEST_F(WindowTest, WindowDestroyCompletesAnimations) {
2882 ui::ScopedAnimationDurationScaleMode test_duration_mode( 2850 ui::ScopedAnimationDurationScaleMode test_duration_mode(
2883 ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); 2851 ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION);
2884 scoped_refptr<ui::LayerAnimator> animator = 2852 scoped_refptr<ui::LayerAnimator> animator =
2885 ui::LayerAnimator::CreateImplicitAnimator(); 2853 ui::LayerAnimator::CreateImplicitAnimator();
2886 TestLayerAnimationObserver observer; 2854 TestLayerAnimationObserver observer;
2887 animator->AddObserver(&observer); 2855 animator->AddObserver(&observer);
2888 // Make sure destroying a Window completes the animation. 2856 // Make sure destroying a Window completes the animation.
2889 { 2857 {
2890 scoped_ptr<Window> window(CreateTestWindowWithId(1, root_window())); 2858 std::unique_ptr<Window> window(CreateTestWindowWithId(1, root_window()));
2891 window->layer()->SetAnimator(animator.get()); 2859 window->layer()->SetAnimator(animator.get());
2892 2860
2893 gfx::Transform transform; 2861 gfx::Transform transform;
2894 transform.Scale(0.5f, 0.5f); 2862 transform.Scale(0.5f, 0.5f);
2895 window->SetTransform(transform); 2863 window->SetTransform(transform);
2896 2864
2897 EXPECT_TRUE(animator->is_animating()); 2865 EXPECT_TRUE(animator->is_animating());
2898 EXPECT_FALSE(observer.animation_completed()); 2866 EXPECT_FALSE(observer.animation_completed());
2899 } 2867 }
2900 EXPECT_TRUE(animator.get()); 2868 EXPECT_TRUE(animator.get());
2901 EXPECT_FALSE(animator->is_animating()); 2869 EXPECT_FALSE(animator->is_animating());
2902 EXPECT_TRUE(observer.animation_completed()); 2870 EXPECT_TRUE(observer.animation_completed());
2903 EXPECT_FALSE(observer.animation_aborted()); 2871 EXPECT_FALSE(observer.animation_aborted());
2904 animator->RemoveObserver(&observer); 2872 animator->RemoveObserver(&observer);
2905 observer.Reset(); 2873 observer.Reset();
2906 2874
2907 animator = ui::LayerAnimator::CreateImplicitAnimator(); 2875 animator = ui::LayerAnimator::CreateImplicitAnimator();
2908 animator->AddObserver(&observer); 2876 animator->AddObserver(&observer);
2909 ui::Layer layer; 2877 ui::Layer layer;
2910 layer.SetAnimator(animator.get()); 2878 layer.SetAnimator(animator.get());
2911 { 2879 {
2912 scoped_ptr<Window> window(CreateTestWindowWithId(1, root_window())); 2880 std::unique_ptr<Window> window(CreateTestWindowWithId(1, root_window()));
2913 window->layer()->Add(&layer); 2881 window->layer()->Add(&layer);
2914 2882
2915 gfx::Transform transform; 2883 gfx::Transform transform;
2916 transform.Scale(0.5f, 0.5f); 2884 transform.Scale(0.5f, 0.5f);
2917 layer.SetTransform(transform); 2885 layer.SetTransform(transform);
2918 2886
2919 EXPECT_TRUE(animator->is_animating()); 2887 EXPECT_TRUE(animator->is_animating());
2920 EXPECT_FALSE(observer.animation_completed()); 2888 EXPECT_FALSE(observer.animation_completed());
2921 } 2889 }
2922 2890
2923 EXPECT_TRUE(animator.get()); 2891 EXPECT_TRUE(animator.get());
2924 EXPECT_FALSE(animator->is_animating()); 2892 EXPECT_FALSE(animator->is_animating());
2925 EXPECT_TRUE(observer.animation_completed()); 2893 EXPECT_TRUE(observer.animation_completed());
2926 EXPECT_FALSE(observer.animation_aborted()); 2894 EXPECT_FALSE(observer.animation_aborted());
2927 animator->RemoveObserver(&observer); 2895 animator->RemoveObserver(&observer);
2928 } 2896 }
2929 2897
2930 } // namespace test 2898 } // namespace test
2931 } // namespace aura 2899 } // namespace aura
OLDNEW
« no previous file with comments | « ui/aura/window_tree_host_x11.h ('k') | ui/base/accelerators/accelerator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698