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

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

Issue 818583002: Moves Create() off of View and onto ViewManager (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: merge 2 trunk Created 6 years 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/view_manager/public/cpp/view_manager.h" 5 #include "mojo/services/view_manager/public/cpp/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 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 ViewManagerTest() 266 ViewManagerTest()
267 : connect_loop_(NULL), 267 : connect_loop_(NULL),
268 loaded_view_manager_(NULL), 268 loaded_view_manager_(NULL),
269 window_manager_(NULL), 269 window_manager_(NULL),
270 commit_count_(0) {} 270 commit_count_(0) {}
271 271
272 protected: 272 protected:
273 ViewManager* window_manager() { return window_manager_; } 273 ViewManager* window_manager() { return window_manager_; }
274 274
275 View* CreateViewInParent(View* parent) { 275 View* CreateViewInParent(View* parent) {
276 ViewManager* parent_manager = ViewPrivate(parent).view_manager(); 276 ViewManager* parent_manager = parent->view_manager();
277 View* view = View::Create(parent_manager); 277 View* view = parent_manager->CreateView();
278 view->SetVisible(true); 278 view->SetVisible(true);
279 parent->AddChild(view); 279 parent->AddChild(view);
280 return view; 280 return view;
281 } 281 }
282 282
283 // Embeds another version of the test app @ view. 283 // Embeds another version of the test app @ view.
284 ViewManager* Embed(ViewManager* view_manager, View* view) { 284 ViewManager* Embed(ViewManager* view_manager, View* view) {
285 DCHECK_EQ(view_manager, ViewPrivate(view).view_manager()); 285 DCHECK_EQ(view_manager, view->view_manager());
286 view->Embed(kEmbeddedApp1URL); 286 view->Embed(kEmbeddedApp1URL);
287 RunRunLoop(); 287 RunRunLoop();
288 return GetLoadedViewManager(); 288 return GetLoadedViewManager();
289 } 289 }
290 290
291 ViewManager* GetLoadedViewManager() { 291 ViewManager* GetLoadedViewManager() {
292 ViewManager* view_manager = loaded_view_manager_; 292 ViewManager* view_manager = loaded_view_manager_;
293 loaded_view_manager_ = NULL; 293 loaded_view_manager_ = NULL;
294 return view_manager; 294 return view_manager;
295 } 295 }
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 339
340 DISALLOW_COPY_AND_ASSIGN(ViewManagerTest); 340 DISALLOW_COPY_AND_ASSIGN(ViewManagerTest);
341 }; 341 };
342 342
343 // TODO(sky): all of these tests are disabled as each test triggers running 343 // TODO(sky): all of these tests are disabled as each test triggers running
344 // ViewsInit, which tries to register the same set of paths with the 344 // ViewsInit, which tries to register the same set of paths with the
345 // PathService, triggering a DCHECK. 345 // PathService, triggering a DCHECK.
346 TEST_F(ViewManagerTest, DISABLED_SetUp) {} 346 TEST_F(ViewManagerTest, DISABLED_SetUp) {}
347 347
348 TEST_F(ViewManagerTest, DISABLED_Embed) { 348 TEST_F(ViewManagerTest, DISABLED_Embed) {
349 View* view = View::Create(window_manager()); 349 View* view = window_manager()->CreateView();
350 view->SetVisible(true); 350 view->SetVisible(true);
351 window_manager()->GetRoot()->AddChild(view); 351 window_manager()->GetRoot()->AddChild(view);
352 ViewManager* embedded = Embed(window_manager(), view); 352 ViewManager* embedded = Embed(window_manager(), view);
353 EXPECT_TRUE(NULL != embedded); 353 EXPECT_TRUE(NULL != embedded);
354 354
355 View* view_in_embedded = embedded->GetRoot(); 355 View* view_in_embedded = embedded->GetRoot();
356 EXPECT_EQ(view->parent(), window_manager()->GetRoot()); 356 EXPECT_EQ(view->parent(), window_manager()->GetRoot());
357 EXPECT_EQ(NULL, view_in_embedded->parent()); 357 EXPECT_EQ(NULL, view_in_embedded->parent());
358 } 358 }
359 359
360 // Window manager has two views, N1 and N11. Embeds A at N1. A should not see 360 // Window manager has two views, N1 and N11. Embeds A at N1. A should not see
361 // N11. 361 // N11.
362 // TODO(sky): Update client lib to match server. 362 // TODO(sky): Update client lib to match server.
363 TEST_F(ViewManagerTest, DISABLED_EmbeddedDoesntSeeChild) { 363 TEST_F(ViewManagerTest, DISABLED_EmbeddedDoesntSeeChild) {
364 View* view = View::Create(window_manager()); 364 View* view = window_manager()->CreateView();
365 view->SetVisible(true); 365 view->SetVisible(true);
366 window_manager()->GetRoot()->AddChild(view); 366 window_manager()->GetRoot()->AddChild(view);
367 View* nested = View::Create(window_manager()); 367 View* nested = window_manager()->CreateView();
368 nested->SetVisible(true); 368 nested->SetVisible(true);
369 view->AddChild(nested); 369 view->AddChild(nested);
370 370
371 ViewManager* embedded = Embed(window_manager(), view); 371 ViewManager* embedded = Embed(window_manager(), view);
372 EXPECT_EQ(embedded->GetRoot()->children().front()->id(), 372 EXPECT_EQ(embedded->GetRoot()->children().front()->id(),
373 nested->id()); 373 nested->id());
374 EXPECT_TRUE(embedded->GetRoot()->children().empty()); 374 EXPECT_TRUE(embedded->GetRoot()->children().empty());
375 EXPECT_TRUE(nested->parent() == NULL); 375 EXPECT_TRUE(nested->parent() == NULL);
376 } 376 }
377 377
378 // http://crbug.com/396300 378 // http://crbug.com/396300
379 TEST_F(ViewManagerTest, DISABLED_ViewManagerDestroyed_CleanupView) { 379 TEST_F(ViewManagerTest, DISABLED_ViewManagerDestroyed_CleanupView) {
380 View* view = View::Create(window_manager()); 380 View* view = window_manager()->CreateView();
381 view->SetVisible(true); 381 view->SetVisible(true);
382 window_manager()->GetRoot()->AddChild(view); 382 window_manager()->GetRoot()->AddChild(view);
383 ViewManager* embedded = Embed(window_manager(), view); 383 ViewManager* embedded = Embed(window_manager(), view);
384 384
385 Id view_id = view->id(); 385 Id view_id = view->id();
386 386
387 UnloadApplication(GURL(kWindowManagerURL)); 387 UnloadApplication(GURL(kWindowManagerURL));
388 388
389 std::set<Id> views; 389 std::set<Id> views;
390 views.insert(view_id); 390 views.insert(view_id);
(...skipping 10 matching lines...) Expand all
401 // -> the view should still exist (since the second connection is live) but 401 // -> the view should still exist (since the second connection is live) but
402 // should be disconnected from any views. 402 // should be disconnected from any views.
403 // http://crbug.com/396300 403 // http://crbug.com/396300
404 // 404 //
405 // TODO(beng): The new test should validate the scenario as described above 405 // TODO(beng): The new test should validate the scenario as described above
406 // except that the second connection still has a valid tree. 406 // except that the second connection still has a valid tree.
407 407
408 // Verifies that bounds changes applied to a view hierarchy in one connection 408 // Verifies that bounds changes applied to a view hierarchy in one connection
409 // are reflected to another. 409 // are reflected to another.
410 TEST_F(ViewManagerTest, DISABLED_SetBounds) { 410 TEST_F(ViewManagerTest, DISABLED_SetBounds) {
411 View* view = View::Create(window_manager()); 411 View* view = window_manager()->CreateView();
412 view->SetVisible(true); 412 view->SetVisible(true);
413 window_manager()->GetRoot()->AddChild(view); 413 window_manager()->GetRoot()->AddChild(view);
414 ViewManager* embedded = Embed(window_manager(), view); 414 ViewManager* embedded = Embed(window_manager(), view);
415 415
416 View* view_in_embedded = embedded->GetViewById(view->id()); 416 View* view_in_embedded = embedded->GetViewById(view->id());
417 EXPECT_EQ(view->bounds(), view_in_embedded->bounds()); 417 EXPECT_EQ(view->bounds(), view_in_embedded->bounds());
418 418
419 Rect rect; 419 Rect rect;
420 rect.width = rect.height = 100; 420 rect.width = rect.height = 100;
421 view->SetBounds(rect); 421 view->SetBounds(rect);
422 EXPECT_NE(view->bounds(), view_in_embedded->bounds()); 422 EXPECT_NE(view->bounds(), view_in_embedded->bounds());
423 WaitForBoundsToChange(view_in_embedded); 423 WaitForBoundsToChange(view_in_embedded);
424 EXPECT_EQ(view->bounds(), view_in_embedded->bounds()); 424 EXPECT_EQ(view->bounds(), view_in_embedded->bounds());
425 } 425 }
426 426
427 // Verifies that bounds changes applied to a view owned by a different 427 // Verifies that bounds changes applied to a view owned by a different
428 // connection are refused. 428 // connection are refused.
429 TEST_F(ViewManagerTest, DISABLED_SetBoundsSecurity) { 429 TEST_F(ViewManagerTest, DISABLED_SetBoundsSecurity) {
430 View* view = View::Create(window_manager()); 430 View* view = window_manager()->CreateView();
431 view->SetVisible(true); 431 view->SetVisible(true);
432 window_manager()->GetRoot()->AddChild(view); 432 window_manager()->GetRoot()->AddChild(view);
433 ViewManager* embedded = Embed(window_manager(), view); 433 ViewManager* embedded = Embed(window_manager(), view);
434 434
435 View* view_in_embedded = embedded->GetViewById(view->id()); 435 View* view_in_embedded = embedded->GetViewById(view->id());
436 Rect rect; 436 Rect rect;
437 rect.width = 800; 437 rect.width = 800;
438 rect.height = 600; 438 rect.height = 600;
439 view->SetBounds(rect); 439 view->SetBounds(rect);
440 WaitForBoundsToChange(view_in_embedded); 440 WaitForBoundsToChange(view_in_embedded);
441 441
442 rect.width = 1024; 442 rect.width = 1024;
443 rect.height = 768; 443 rect.height = 768;
444 view_in_embedded->SetBounds(rect); 444 view_in_embedded->SetBounds(rect);
445 // Bounds change should have been rejected. 445 // Bounds change should have been rejected.
446 EXPECT_EQ(view->bounds(), view_in_embedded->bounds()); 446 EXPECT_EQ(view->bounds(), view_in_embedded->bounds());
447 } 447 }
448 448
449 // Verifies that a view can only be destroyed by the connection that created it. 449 // Verifies that a view can only be destroyed by the connection that created it.
450 TEST_F(ViewManagerTest, DISABLED_DestroySecurity) { 450 TEST_F(ViewManagerTest, DISABLED_DestroySecurity) {
451 View* view = View::Create(window_manager()); 451 View* view = window_manager()->CreateView();
452 view->SetVisible(true); 452 view->SetVisible(true);
453 window_manager()->GetRoot()->AddChild(view); 453 window_manager()->GetRoot()->AddChild(view);
454 ViewManager* embedded = Embed(window_manager(), view); 454 ViewManager* embedded = Embed(window_manager(), view);
455 455
456 View* view_in_embedded = embedded->GetViewById(view->id()); 456 View* view_in_embedded = embedded->GetViewById(view->id());
457 457
458 ViewTracker tracker2(view_in_embedded); 458 ViewTracker tracker2(view_in_embedded);
459 view_in_embedded->Destroy(); 459 view_in_embedded->Destroy();
460 // View should not have been destroyed. 460 // View should not have been destroyed.
461 EXPECT_TRUE(tracker2.is_valid()); 461 EXPECT_TRUE(tracker2.is_valid());
462 462
463 ViewTracker tracker1(view); 463 ViewTracker tracker1(view);
464 view->Destroy(); 464 view->Destroy();
465 EXPECT_FALSE(tracker1.is_valid()); 465 EXPECT_FALSE(tracker1.is_valid());
466 } 466 }
467 467
468 TEST_F(ViewManagerTest, DISABLED_MultiRoots) { 468 TEST_F(ViewManagerTest, DISABLED_MultiRoots) {
469 View* view1 = View::Create(window_manager()); 469 View* view1 = window_manager()->CreateView();
470 view1->SetVisible(true); 470 view1->SetVisible(true);
471 window_manager()->GetRoot()->AddChild(view1); 471 window_manager()->GetRoot()->AddChild(view1);
472 View* view2 = View::Create(window_manager()); 472 View* view2 = window_manager()->CreateView();
473 view2->SetVisible(true); 473 view2->SetVisible(true);
474 window_manager()->GetRoot()->AddChild(view2); 474 window_manager()->GetRoot()->AddChild(view2);
475 ViewManager* embedded1 = Embed(window_manager(), view1); 475 ViewManager* embedded1 = Embed(window_manager(), view1);
476 ViewManager* embedded2 = Embed(window_manager(), view2); 476 ViewManager* embedded2 = Embed(window_manager(), view2);
477 EXPECT_EQ(embedded1, embedded2); 477 EXPECT_EQ(embedded1, embedded2);
478 } 478 }
479 479
480 TEST_F(ViewManagerTest, DISABLED_EmbeddingIdentity) { 480 TEST_F(ViewManagerTest, DISABLED_EmbeddingIdentity) {
481 View* view = View::Create(window_manager()); 481 View* view = window_manager()->CreateView();
482 view->SetVisible(true); 482 view->SetVisible(true);
483 window_manager()->GetRoot()->AddChild(view); 483 window_manager()->GetRoot()->AddChild(view);
484 ViewManager* embedded = Embed(window_manager(), view); 484 ViewManager* embedded = Embed(window_manager(), view);
485 EXPECT_EQ(kWindowManagerURL, embedded->GetEmbedderURL()); 485 EXPECT_EQ(kWindowManagerURL, embedded->GetEmbedderURL());
486 } 486 }
487 487
488 TEST_F(ViewManagerTest, DISABLED_Reorder) { 488 TEST_F(ViewManagerTest, DISABLED_Reorder) {
489 View* view1 = View::Create(window_manager()); 489 View* view1 = window_manager()->CreateView();
490 view1->SetVisible(true); 490 view1->SetVisible(true);
491 window_manager()->GetRoot()->AddChild(view1); 491 window_manager()->GetRoot()->AddChild(view1);
492 492
493 ViewManager* embedded = Embed(window_manager(), view1); 493 ViewManager* embedded = Embed(window_manager(), view1);
494 494
495 View* view11 = View::Create(embedded); 495 View* view11 = embedded->CreateView();
496 view11->SetVisible(true); 496 view11->SetVisible(true);
497 embedded->GetRoot()->AddChild(view11); 497 embedded->GetRoot()->AddChild(view11);
498 View* view12 = View::Create(embedded); 498 View* view12 = embedded->CreateView();
499 view12->SetVisible(true); 499 view12->SetVisible(true);
500 embedded->GetRoot()->AddChild(view12); 500 embedded->GetRoot()->AddChild(view12);
501 501
502 View* view1_in_wm = window_manager()->GetViewById(view1->id()); 502 View* view1_in_wm = window_manager()->GetViewById(view1->id());
503 503
504 { 504 {
505 WaitForTreeSizeToMatch(view1, 2u); 505 WaitForTreeSizeToMatch(view1, 2u);
506 view11->MoveToFront(); 506 view11->MoveToFront();
507 WaitForOrderChange(window_manager(), 507 WaitForOrderChange(window_manager(),
508 window_manager()->GetViewById(view11->id())); 508 window_manager()->GetViewById(view11->id()));
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 } 542 }
543 543
544 View* view_; 544 View* view_;
545 545
546 DISALLOW_COPY_AND_ASSIGN(VisibilityChangeObserver); 546 DISALLOW_COPY_AND_ASSIGN(VisibilityChangeObserver);
547 }; 547 };
548 548
549 } // namespace 549 } // namespace
550 550
551 TEST_F(ViewManagerTest, DISABLED_Visible) { 551 TEST_F(ViewManagerTest, DISABLED_Visible) {
552 View* view1 = View::Create(window_manager()); 552 View* view1 = window_manager()->CreateView();
553 view1->SetVisible(true); 553 view1->SetVisible(true);
554 window_manager()->GetRoot()->AddChild(view1); 554 window_manager()->GetRoot()->AddChild(view1);
555 555
556 // Embed another app and verify initial state. 556 // Embed another app and verify initial state.
557 ViewManager* embedded = Embed(window_manager(), view1); 557 ViewManager* embedded = Embed(window_manager(), view1);
558 ASSERT_NE(nullptr, embedded->GetRoot()); 558 ASSERT_NE(nullptr, embedded->GetRoot());
559 View* embedded_root = embedded->GetRoot(); 559 View* embedded_root = embedded->GetRoot();
560 EXPECT_TRUE(embedded_root->visible()); 560 EXPECT_TRUE(embedded_root->visible());
561 EXPECT_TRUE(embedded_root->IsDrawn()); 561 EXPECT_TRUE(embedded_root->IsDrawn());
562 562
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
605 } 605 }
606 606
607 View* view_; 607 View* view_;
608 608
609 DISALLOW_COPY_AND_ASSIGN(DrawnChangeObserver); 609 DISALLOW_COPY_AND_ASSIGN(DrawnChangeObserver);
610 }; 610 };
611 611
612 } // namespace 612 } // namespace
613 613
614 TEST_F(ViewManagerTest, DISABLED_Drawn) { 614 TEST_F(ViewManagerTest, DISABLED_Drawn) {
615 View* view1 = View::Create(window_manager()); 615 View* view1 = window_manager()->CreateView();
616 view1->SetVisible(true); 616 view1->SetVisible(true);
617 window_manager()->GetRoot()->AddChild(view1); 617 window_manager()->GetRoot()->AddChild(view1);
618 618
619 // Embed another app and verify initial state. 619 // Embed another app and verify initial state.
620 ViewManager* embedded = Embed(window_manager(), view1); 620 ViewManager* embedded = Embed(window_manager(), view1);
621 ASSERT_NE(nullptr, embedded->GetRoot()); 621 ASSERT_NE(nullptr, embedded->GetRoot());
622 View* embedded_root = embedded->GetRoot(); 622 View* embedded_root = embedded->GetRoot();
623 EXPECT_TRUE(embedded_root->visible()); 623 EXPECT_TRUE(embedded_root->visible());
624 EXPECT_TRUE(embedded_root->IsDrawn()); 624 EXPECT_TRUE(embedded_root->IsDrawn());
625 625
(...skipping 17 matching lines...) Expand all
643 643
644 // TODO(beng): tests for focus: 644 // TODO(beng): tests for focus:
645 // - focus between two views known to a connection 645 // - focus between two views known to a connection
646 // - focus between views unknown to one of the connections. 646 // - focus between views unknown to one of the connections.
647 // - focus between views unknown to either connection. 647 // - focus between views unknown to either connection.
648 648
649 // TODO(sky): need test of root being destroyed with existing views. See 649 // TODO(sky): need test of root being destroyed with existing views. See
650 // 434555 for specific case. 650 // 434555 for specific case.
651 651
652 } // namespace mojo 652 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/services/view_manager/public/cpp/lib/view_private.h ('k') | mojo/services/view_manager/public/cpp/view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698