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

Side by Side Diff: mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc

Issue 745743002: Makes views be initially hidden (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: feedback Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "mojo/services/public/cpp/view_manager/view_manager.h" 5 #include "mojo/services/public/cpp/view_manager/view_manager.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "mojo/application_manager/application_manager.h" 10 #include "mojo/application_manager/application_manager.h"
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 loaded_view_manager_(NULL), 270 loaded_view_manager_(NULL),
271 window_manager_(NULL), 271 window_manager_(NULL),
272 commit_count_(0) {} 272 commit_count_(0) {}
273 273
274 protected: 274 protected:
275 ViewManager* window_manager() { return window_manager_; } 275 ViewManager* window_manager() { return window_manager_; }
276 276
277 View* CreateViewInParent(View* parent) { 277 View* CreateViewInParent(View* parent) {
278 ViewManager* parent_manager = ViewPrivate(parent).view_manager(); 278 ViewManager* parent_manager = ViewPrivate(parent).view_manager();
279 View* view = View::Create(parent_manager); 279 View* view = View::Create(parent_manager);
280 view->SetVisible(true);
280 parent->AddChild(view); 281 parent->AddChild(view);
281 return view; 282 return view;
282 } 283 }
283 284
284 // Embeds another version of the test app @ view. 285 // Embeds another version of the test app @ view.
285 ViewManager* Embed(ViewManager* view_manager, View* view) { 286 ViewManager* Embed(ViewManager* view_manager, View* view) {
286 DCHECK_EQ(view_manager, ViewPrivate(view).view_manager()); 287 DCHECK_EQ(view_manager, ViewPrivate(view).view_manager());
287 view->Embed(kEmbeddedApp1URL); 288 view->Embed(kEmbeddedApp1URL);
288 RunRunLoop(); 289 RunRunLoop();
289 return GetLoadedViewManager(); 290 return GetLoadedViewManager();
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 DISALLOW_COPY_AND_ASSIGN(ViewManagerTest); 342 DISALLOW_COPY_AND_ASSIGN(ViewManagerTest);
342 }; 343 };
343 344
344 // TODO(sky): all of these tests are disabled as each test triggers running 345 // TODO(sky): all of these tests are disabled as each test triggers running
345 // ViewsInit, which tries to register the same set of paths with the 346 // ViewsInit, which tries to register the same set of paths with the
346 // PathService, triggering a DCHECK. 347 // PathService, triggering a DCHECK.
347 TEST_F(ViewManagerTest, DISABLED_SetUp) {} 348 TEST_F(ViewManagerTest, DISABLED_SetUp) {}
348 349
349 TEST_F(ViewManagerTest, DISABLED_Embed) { 350 TEST_F(ViewManagerTest, DISABLED_Embed) {
350 View* view = View::Create(window_manager()); 351 View* view = View::Create(window_manager());
352 view->SetVisible(true);
351 window_manager()->GetRoots().front()->AddChild(view); 353 window_manager()->GetRoots().front()->AddChild(view);
352 ViewManager* embedded = Embed(window_manager(), view); 354 ViewManager* embedded = Embed(window_manager(), view);
353 EXPECT_TRUE(NULL != embedded); 355 EXPECT_TRUE(NULL != embedded);
354 356
355 View* view_in_embedded = embedded->GetRoots().front(); 357 View* view_in_embedded = embedded->GetRoots().front();
356 EXPECT_EQ(view->parent(), window_manager()->GetRoots().front()); 358 EXPECT_EQ(view->parent(), window_manager()->GetRoots().front());
357 EXPECT_EQ(NULL, view_in_embedded->parent()); 359 EXPECT_EQ(NULL, view_in_embedded->parent());
358 } 360 }
359 361
360 // Window manager has two views, N1 and N11. Embeds A at N1. A should not see 362 // Window manager has two views, N1 and N11. Embeds A at N1. A should not see
361 // N11. 363 // N11.
362 // TODO(sky): Update client lib to match server. 364 // TODO(sky): Update client lib to match server.
363 TEST_F(ViewManagerTest, DISABLED_EmbeddedDoesntSeeChild) { 365 TEST_F(ViewManagerTest, DISABLED_EmbeddedDoesntSeeChild) {
364 View* view = View::Create(window_manager()); 366 View* view = View::Create(window_manager());
367 view->SetVisible(true);
365 window_manager()->GetRoots().front()->AddChild(view); 368 window_manager()->GetRoots().front()->AddChild(view);
366 View* nested = View::Create(window_manager()); 369 View* nested = View::Create(window_manager());
370 nested->SetVisible(true);
367 view->AddChild(nested); 371 view->AddChild(nested);
368 372
369 ViewManager* embedded = Embed(window_manager(), view); 373 ViewManager* embedded = Embed(window_manager(), view);
370 EXPECT_EQ(embedded->GetRoots().front()->children().front()->id(), 374 EXPECT_EQ(embedded->GetRoots().front()->children().front()->id(),
371 nested->id()); 375 nested->id());
372 EXPECT_TRUE(embedded->GetRoots().front()->children().empty()); 376 EXPECT_TRUE(embedded->GetRoots().front()->children().empty());
373 EXPECT_TRUE(nested->parent() == NULL); 377 EXPECT_TRUE(nested->parent() == NULL);
374 } 378 }
375 379
376 // http://crbug.com/396300 380 // http://crbug.com/396300
377 TEST_F(ViewManagerTest, DISABLED_ViewManagerDestroyed_CleanupView) { 381 TEST_F(ViewManagerTest, DISABLED_ViewManagerDestroyed_CleanupView) {
378 View* view = View::Create(window_manager()); 382 View* view = View::Create(window_manager());
383 view->SetVisible(true);
379 window_manager()->GetRoots().front()->AddChild(view); 384 window_manager()->GetRoots().front()->AddChild(view);
380 ViewManager* embedded = Embed(window_manager(), view); 385 ViewManager* embedded = Embed(window_manager(), view);
381 386
382 Id view_id = view->id(); 387 Id view_id = view->id();
383 388
384 UnloadApplication(GURL(kWindowManagerURL)); 389 UnloadApplication(GURL(kWindowManagerURL));
385 390
386 std::set<Id> views; 391 std::set<Id> views;
387 views.insert(view_id); 392 views.insert(view_id);
388 WaitForDestruction(embedded, &views); 393 WaitForDestruction(embedded, &views);
(...skipping 10 matching lines...) Expand all
399 // should be disconnected from any views. 404 // should be disconnected from any views.
400 // http://crbug.com/396300 405 // http://crbug.com/396300
401 // 406 //
402 // TODO(beng): The new test should validate the scenario as described above 407 // TODO(beng): The new test should validate the scenario as described above
403 // except that the second connection still has a valid tree. 408 // except that the second connection still has a valid tree.
404 409
405 // Verifies that bounds changes applied to a view hierarchy in one connection 410 // Verifies that bounds changes applied to a view hierarchy in one connection
406 // are reflected to another. 411 // are reflected to another.
407 TEST_F(ViewManagerTest, DISABLED_SetBounds) { 412 TEST_F(ViewManagerTest, DISABLED_SetBounds) {
408 View* view = View::Create(window_manager()); 413 View* view = View::Create(window_manager());
414 view->SetVisible(true);
409 window_manager()->GetRoots().front()->AddChild(view); 415 window_manager()->GetRoots().front()->AddChild(view);
410 ViewManager* embedded = Embed(window_manager(), view); 416 ViewManager* embedded = Embed(window_manager(), view);
411 417
412 View* view_in_embedded = embedded->GetViewById(view->id()); 418 View* view_in_embedded = embedded->GetViewById(view->id());
413 EXPECT_EQ(view->bounds(), view_in_embedded->bounds()); 419 EXPECT_EQ(view->bounds(), view_in_embedded->bounds());
414 420
415 Rect rect; 421 Rect rect;
416 rect.width = rect.height = 100; 422 rect.width = rect.height = 100;
417 view->SetBounds(rect); 423 view->SetBounds(rect);
418 EXPECT_NE(view->bounds(), view_in_embedded->bounds()); 424 EXPECT_NE(view->bounds(), view_in_embedded->bounds());
419 WaitForBoundsToChange(view_in_embedded); 425 WaitForBoundsToChange(view_in_embedded);
420 EXPECT_EQ(view->bounds(), view_in_embedded->bounds()); 426 EXPECT_EQ(view->bounds(), view_in_embedded->bounds());
421 } 427 }
422 428
423 // Verifies that bounds changes applied to a view owned by a different 429 // Verifies that bounds changes applied to a view owned by a different
424 // connection are refused. 430 // connection are refused.
425 TEST_F(ViewManagerTest, DISABLED_SetBoundsSecurity) { 431 TEST_F(ViewManagerTest, DISABLED_SetBoundsSecurity) {
426 View* view = View::Create(window_manager()); 432 View* view = View::Create(window_manager());
433 view->SetVisible(true);
427 window_manager()->GetRoots().front()->AddChild(view); 434 window_manager()->GetRoots().front()->AddChild(view);
428 ViewManager* embedded = Embed(window_manager(), view); 435 ViewManager* embedded = Embed(window_manager(), view);
429 436
430 View* view_in_embedded = embedded->GetViewById(view->id()); 437 View* view_in_embedded = embedded->GetViewById(view->id());
431 Rect rect; 438 Rect rect;
432 rect.width = 800; 439 rect.width = 800;
433 rect.height = 600; 440 rect.height = 600;
434 view->SetBounds(rect); 441 view->SetBounds(rect);
435 WaitForBoundsToChange(view_in_embedded); 442 WaitForBoundsToChange(view_in_embedded);
436 443
437 rect.width = 1024; 444 rect.width = 1024;
438 rect.height = 768; 445 rect.height = 768;
439 view_in_embedded->SetBounds(rect); 446 view_in_embedded->SetBounds(rect);
440 // Bounds change should have been rejected. 447 // Bounds change should have been rejected.
441 EXPECT_EQ(view->bounds(), view_in_embedded->bounds()); 448 EXPECT_EQ(view->bounds(), view_in_embedded->bounds());
442 } 449 }
443 450
444 // Verifies that a view can only be destroyed by the connection that created it. 451 // Verifies that a view can only be destroyed by the connection that created it.
445 TEST_F(ViewManagerTest, DISABLED_DestroySecurity) { 452 TEST_F(ViewManagerTest, DISABLED_DestroySecurity) {
446 View* view = View::Create(window_manager()); 453 View* view = View::Create(window_manager());
454 view->SetVisible(true);
447 window_manager()->GetRoots().front()->AddChild(view); 455 window_manager()->GetRoots().front()->AddChild(view);
448 ViewManager* embedded = Embed(window_manager(), view); 456 ViewManager* embedded = Embed(window_manager(), view);
449 457
450 View* view_in_embedded = embedded->GetViewById(view->id()); 458 View* view_in_embedded = embedded->GetViewById(view->id());
451 459
452 ViewTracker tracker2(view_in_embedded); 460 ViewTracker tracker2(view_in_embedded);
453 view_in_embedded->Destroy(); 461 view_in_embedded->Destroy();
454 // View should not have been destroyed. 462 // View should not have been destroyed.
455 EXPECT_TRUE(tracker2.is_valid()); 463 EXPECT_TRUE(tracker2.is_valid());
456 464
457 ViewTracker tracker1(view); 465 ViewTracker tracker1(view);
458 view->Destroy(); 466 view->Destroy();
459 EXPECT_FALSE(tracker1.is_valid()); 467 EXPECT_FALSE(tracker1.is_valid());
460 } 468 }
461 469
462 TEST_F(ViewManagerTest, DISABLED_MultiRoots) { 470 TEST_F(ViewManagerTest, DISABLED_MultiRoots) {
463 View* view1 = View::Create(window_manager()); 471 View* view1 = View::Create(window_manager());
472 view1->SetVisible(true);
464 window_manager()->GetRoots().front()->AddChild(view1); 473 window_manager()->GetRoots().front()->AddChild(view1);
465 View* view2 = View::Create(window_manager()); 474 View* view2 = View::Create(window_manager());
475 view2->SetVisible(true);
466 window_manager()->GetRoots().front()->AddChild(view2); 476 window_manager()->GetRoots().front()->AddChild(view2);
467 ViewManager* embedded1 = Embed(window_manager(), view1); 477 ViewManager* embedded1 = Embed(window_manager(), view1);
468 ViewManager* embedded2 = Embed(window_manager(), view2); 478 ViewManager* embedded2 = Embed(window_manager(), view2);
469 EXPECT_EQ(embedded1, embedded2); 479 EXPECT_EQ(embedded1, embedded2);
470 } 480 }
471 481
472 TEST_F(ViewManagerTest, DISABLED_EmbeddingIdentity) { 482 TEST_F(ViewManagerTest, DISABLED_EmbeddingIdentity) {
473 View* view = View::Create(window_manager()); 483 View* view = View::Create(window_manager());
484 view->SetVisible(true);
474 window_manager()->GetRoots().front()->AddChild(view); 485 window_manager()->GetRoots().front()->AddChild(view);
475 ViewManager* embedded = Embed(window_manager(), view); 486 ViewManager* embedded = Embed(window_manager(), view);
476 EXPECT_EQ(kWindowManagerURL, embedded->GetEmbedderURL()); 487 EXPECT_EQ(kWindowManagerURL, embedded->GetEmbedderURL());
477 } 488 }
478 489
479 TEST_F(ViewManagerTest, DISABLED_Reorder) { 490 TEST_F(ViewManagerTest, DISABLED_Reorder) {
480 View* view1 = View::Create(window_manager()); 491 View* view1 = View::Create(window_manager());
492 view1->SetVisible(true);
481 window_manager()->GetRoots().front()->AddChild(view1); 493 window_manager()->GetRoots().front()->AddChild(view1);
482 494
483 ViewManager* embedded = Embed(window_manager(), view1); 495 ViewManager* embedded = Embed(window_manager(), view1);
484 496
485 View* view11 = View::Create(embedded); 497 View* view11 = View::Create(embedded);
498 view11->SetVisible(true);
486 embedded->GetRoots().front()->AddChild(view11); 499 embedded->GetRoots().front()->AddChild(view11);
487 View* view12 = View::Create(embedded); 500 View* view12 = View::Create(embedded);
501 view12->SetVisible(true);
488 embedded->GetRoots().front()->AddChild(view12); 502 embedded->GetRoots().front()->AddChild(view12);
489 503
490 View* view1_in_wm = window_manager()->GetViewById(view1->id()); 504 View* view1_in_wm = window_manager()->GetViewById(view1->id());
491 505
492 { 506 {
493 WaitForTreeSizeToMatch(view1, 2u); 507 WaitForTreeSizeToMatch(view1, 2u);
494 view11->MoveToFront(); 508 view11->MoveToFront();
495 WaitForOrderChange(window_manager(), 509 WaitForOrderChange(window_manager(),
496 window_manager()->GetViewById(view11->id())); 510 window_manager()->GetViewById(view11->id()));
497 511
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 545
532 View* view_; 546 View* view_;
533 547
534 DISALLOW_COPY_AND_ASSIGN(VisibilityChangeObserver); 548 DISALLOW_COPY_AND_ASSIGN(VisibilityChangeObserver);
535 }; 549 };
536 550
537 } // namespace 551 } // namespace
538 552
539 TEST_F(ViewManagerTest, DISABLED_Visible) { 553 TEST_F(ViewManagerTest, DISABLED_Visible) {
540 View* view1 = View::Create(window_manager()); 554 View* view1 = View::Create(window_manager());
555 view1->SetVisible(true);
541 window_manager()->GetRoots().front()->AddChild(view1); 556 window_manager()->GetRoots().front()->AddChild(view1);
542 557
543 // Embed another app and verify initial state. 558 // Embed another app and verify initial state.
544 ViewManager* embedded = Embed(window_manager(), view1); 559 ViewManager* embedded = Embed(window_manager(), view1);
545 ASSERT_EQ(1u, embedded->GetRoots().size()); 560 ASSERT_EQ(1u, embedded->GetRoots().size());
546 View* embedded_root = embedded->GetRoots().front(); 561 View* embedded_root = embedded->GetRoots().front();
547 EXPECT_TRUE(embedded_root->visible()); 562 EXPECT_TRUE(embedded_root->visible());
548 EXPECT_TRUE(embedded_root->IsDrawn()); 563 EXPECT_TRUE(embedded_root->IsDrawn());
549 564
550 // Change the visible state from the first connection and verify its mirrored 565 // Change the visible state from the first connection and verify its mirrored
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
593 608
594 View* view_; 609 View* view_;
595 610
596 DISALLOW_COPY_AND_ASSIGN(DrawnChangeObserver); 611 DISALLOW_COPY_AND_ASSIGN(DrawnChangeObserver);
597 }; 612 };
598 613
599 } // namespace 614 } // namespace
600 615
601 TEST_F(ViewManagerTest, DISABLED_Drawn) { 616 TEST_F(ViewManagerTest, DISABLED_Drawn) {
602 View* view1 = View::Create(window_manager()); 617 View* view1 = View::Create(window_manager());
618 view1->SetVisible(true);
603 window_manager()->GetRoots().front()->AddChild(view1); 619 window_manager()->GetRoots().front()->AddChild(view1);
604 620
605 // Embed another app and verify initial state. 621 // Embed another app and verify initial state.
606 ViewManager* embedded = Embed(window_manager(), view1); 622 ViewManager* embedded = Embed(window_manager(), view1);
607 ASSERT_EQ(1u, embedded->GetRoots().size()); 623 ASSERT_EQ(1u, embedded->GetRoots().size());
608 View* embedded_root = embedded->GetRoots().front(); 624 View* embedded_root = embedded->GetRoots().front();
609 EXPECT_TRUE(embedded_root->visible()); 625 EXPECT_TRUE(embedded_root->visible());
610 EXPECT_TRUE(embedded_root->IsDrawn()); 626 EXPECT_TRUE(embedded_root->IsDrawn());
611 627
612 // Change the visibility of the root, this should propagate a drawn state 628 // Change the visibility of the root, this should propagate a drawn state
(...skipping 16 matching lines...) Expand all
629 645
630 // TODO(beng): tests for focus: 646 // TODO(beng): tests for focus:
631 // - focus between two views known to a connection 647 // - focus between two views known to a connection
632 // - focus between views unknown to one of the connections. 648 // - focus between views unknown to one of the connections.
633 // - focus between views unknown to either connection. 649 // - focus between views unknown to either connection.
634 650
635 // TODO(sky): need test of root being destroyed with existing views. See 651 // TODO(sky): need test of root being destroyed with existing views. See
636 // 434555 for specific case. 652 // 434555 for specific case.
637 653
638 } // namespace mojo 654 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/services/public/cpp/view_manager/lib/view.cc ('k') | mojo/services/public/cpp/view_manager/view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698