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

Side by Side Diff: cc/occlusion_tracker_unittest.cc

Issue 11360066: cc: Remove WebCore rect use from the compositor, except within Region. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Signs Created 8 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 | Annotate | Revision Log
« no previous file with comments | « cc/occlusion_tracker.cc ('k') | cc/render_pass.cc » ('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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 "config.h" 5 #include "config.h"
6 6
7 #include "cc/occlusion_tracker.h" 7 #include "cc/occlusion_tracker.h"
8 8
9 #include "Region.h" 9 #include "Region.h"
10 #include "cc/layer.h" 10 #include "cc/layer.h"
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, this->identityMatrix, gfx::PointF(30, 30), gfx::Size(500, 500), true); 465 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, this->identityMatrix, gfx::PointF(30, 30), gfx::Size(500, 500), true);
466 this->calcDrawEtc(parent); 466 this->calcDrawEtc(parent);
467 467
468 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 468 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
469 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); 469 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000));
470 470
471 this->visitLayer(layer, occlusion); 471 this->visitLayer(layer, occlusion);
472 this->enterLayer(parent, occlusion); 472 this->enterLayer(parent, occlusion);
473 473
474 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInScreenSpa ce().bounds()); 474 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInScreenSpa ce().bounds());
475 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 475 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
476 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInTargetSur face().bounds()); 476 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInTargetSur face().bounds());
477 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 477 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
478 478
479 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 70, 70))); 479 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 70, 70)));
480 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 30, 70, 70))) ; 480 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 30, 70, 70))) ;
481 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 29, 70, 70))) ; 481 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 29, 70, 70))) ;
482 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(31, 30, 70, 70))) ; 482 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(31, 30, 70, 70))) ;
483 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 31, 70, 70))) ; 483 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 31, 70, 70))) ;
484 484
485 occlusion.useDefaultLayerClipRect(); 485 occlusion.useDefaultLayerClipRect();
486 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 70, 70))); 486 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 70, 70)));
487 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 30, 70, 70))) ; 487 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 30, 70, 70))) ;
(...skipping 29 matching lines...) Expand all
517 typename Types::ContentLayerType* layer1 = this->createDrawingLayer(pare nt, layerTransform, gfx::PointF(0, 0), gfx::Size(90, 90), true); 517 typename Types::ContentLayerType* layer1 = this->createDrawingLayer(pare nt, layerTransform, gfx::PointF(0, 0), gfx::Size(90, 90), true);
518 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(laye r1, layerTransform, gfx::PointF(0, 0), gfx::Size(50, 50), true); 518 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(laye r1, layerTransform, gfx::PointF(0, 0), gfx::Size(50, 50), true);
519 this->calcDrawEtc(parent); 519 this->calcDrawEtc(parent);
520 520
521 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 521 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
522 522
523 this->visitLayer(layer2, occlusion); 523 this->visitLayer(layer2, occlusion);
524 this->enterLayer(layer1, occlusion); 524 this->enterLayer(layer1, occlusion);
525 525
526 EXPECT_RECT_EQ(gfx::Rect(20, 20, 50, 50), occlusion.occlusionInScreenSpa ce().bounds()); 526 EXPECT_RECT_EQ(gfx::Rect(20, 20, 50, 50), occlusion.occlusionInScreenSpa ce().bounds());
527 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 527 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
528 EXPECT_RECT_EQ(gfx::Rect(20, 20, 50, 50), occlusion.occlusionInTargetSur face().bounds()); 528 EXPECT_RECT_EQ(gfx::Rect(20, 20, 50, 50), occlusion.occlusionInTargetSur face().bounds());
529 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 529 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
530 530
531 // This checks cases where the quads don't match their "containing" 531 // This checks cases where the quads don't match their "containing"
532 // layers, e.g. in terms of transforms or clip rect. This is typical for 532 // layers, e.g. in terms of transforms or clip rect. This is typical for
533 // DelegatedRendererLayer. 533 // DelegatedRendererLayer.
534 534
535 WebTransformationMatrix quadTransform; 535 WebTransformationMatrix quadTransform;
536 quadTransform.translate(30, 30); 536 quadTransform.translate(30, 30);
537 gfx::Rect clipRectInTarget(0, 0, 100, 100); 537 gfx::Rect clipRectInTarget(0, 0, 100, 100);
538 538
539 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, gfx::Rect(0, 0, 10, 10), quadTransform, false, clipRectInTarget).IsEmpty()); 539 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, gfx::Rect(0, 0, 10, 10), quadTransform, false, clipRectInTarget).IsEmpty());
(...skipping 21 matching lines...) Expand all
561 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, layerTransform, gfx::PointF(30, 30), gfx::Size(500, 500), true); 561 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, layerTransform, gfx::PointF(30, 30), gfx::Size(500, 500), true);
562 this->calcDrawEtc(parent); 562 this->calcDrawEtc(parent);
563 563
564 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 564 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
565 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); 565 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000));
566 566
567 this->visitLayer(layer, occlusion); 567 this->visitLayer(layer, occlusion);
568 this->enterLayer(parent, occlusion); 568 this->enterLayer(parent, occlusion);
569 569
570 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInScreenSpa ce().bounds()); 570 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInScreenSpa ce().bounds());
571 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 571 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
572 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInTargetSur face().bounds()); 572 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInTargetSur face().bounds());
573 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 573 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
574 574
575 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 70, 70))); 575 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 70, 70)));
576 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 30, 70, 70))) ; 576 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 30, 70, 70))) ;
577 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 29, 70, 70))) ; 577 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 29, 70, 70))) ;
578 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(31, 30, 70, 70))) ; 578 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(31, 30, 70, 70))) ;
579 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 31, 70, 70))) ; 579 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 31, 70, 70))) ;
580 580
581 occlusion.useDefaultLayerClipRect(); 581 occlusion.useDefaultLayerClipRect();
582 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 70, 70))); 582 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 70, 70)));
583 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 30, 70, 70))) ; 583 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 30, 70, 70))) ;
(...skipping 29 matching lines...) Expand all
613 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, layerTransform, gfx::PointF(30, 30), gfx::Size(500, 500), true); 613 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, layerTransform, gfx::PointF(30, 30), gfx::Size(500, 500), true);
614 this->calcDrawEtc(parent); 614 this->calcDrawEtc(parent);
615 615
616 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 616 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
617 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); 617 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000));
618 618
619 this->visitLayer(layer, occlusion); 619 this->visitLayer(layer, occlusion);
620 this->enterLayer(parent, occlusion); 620 this->enterLayer(parent, occlusion);
621 621
622 EXPECT_RECT_EQ(gfx::Rect(50, 50, 50, 50), occlusion.occlusionInScreenSpa ce().bounds()); 622 EXPECT_RECT_EQ(gfx::Rect(50, 50, 50, 50), occlusion.occlusionInScreenSpa ce().bounds());
623 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 623 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
624 EXPECT_RECT_EQ(gfx::Rect(50, 50, 50, 50), occlusion.occlusionInTargetSur face().bounds()); 624 EXPECT_RECT_EQ(gfx::Rect(50, 50, 50, 50), occlusion.occlusionInTargetSur face().bounds());
625 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 625 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
626 626
627 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(50, 50, 50, 50))); 627 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(50, 50, 50, 50)));
628 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(49, 50, 50, 50))) ; 628 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(49, 50, 50, 50))) ;
629 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(50, 49, 50, 50))) ; 629 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(50, 49, 50, 50))) ;
630 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(51, 50, 50, 50))) ; 630 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(51, 50, 50, 50))) ;
631 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(50, 51, 50, 50))) ; 631 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(50, 51, 50, 50))) ;
632 632
633 occlusion.useDefaultLayerClipRect(); 633 occlusion.useDefaultLayerClipRect();
634 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(50, 50, 50, 50))); 634 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(50, 50, 50, 50)));
635 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(49, 50, 50, 50))) ; 635 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(49, 50, 50, 50))) ;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
682 typename Types::ContentLayerType* layer = this->createDrawingLayer(child , this->identityMatrix, gfx::PointF(10, 10), gfx::Size(500, 500), true); 682 typename Types::ContentLayerType* layer = this->createDrawingLayer(child , this->identityMatrix, gfx::PointF(10, 10), gfx::Size(500, 500), true);
683 this->calcDrawEtc(parent); 683 this->calcDrawEtc(parent);
684 684
685 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 685 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
686 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); 686 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000));
687 687
688 this->visitLayer(layer, occlusion); 688 this->visitLayer(layer, occlusion);
689 this->enterContributingSurface(child, occlusion); 689 this->enterContributingSurface(child, occlusion);
690 690
691 EXPECT_RECT_EQ(gfx::Rect(30, 40, 70, 60), occlusion.occlusionInScreenSpa ce().bounds()); 691 EXPECT_RECT_EQ(gfx::Rect(30, 40, 70, 60), occlusion.occlusionInScreenSpa ce().bounds());
692 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 692 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
693 EXPECT_RECT_EQ(gfx::Rect(10, 430, 60, 70), occlusion.occlusionInTargetSu rface().bounds()); 693 EXPECT_RECT_EQ(gfx::Rect(10, 430, 60, 70), occlusion.occlusionInTargetSu rface().bounds());
694 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 694 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
695 695
696 this->leaveContributingSurface(child, occlusion); 696 this->leaveContributingSurface(child, occlusion);
697 this->enterLayer(parent, occlusion); 697 this->enterLayer(parent, occlusion);
698 698
699 EXPECT_RECT_EQ(gfx::Rect(30, 40, 70, 60), occlusion.occlusionInScreenSpa ce().bounds()); 699 EXPECT_RECT_EQ(gfx::Rect(30, 40, 70, 60), occlusion.occlusionInScreenSpa ce().bounds());
700 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 700 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
701 EXPECT_RECT_EQ(gfx::Rect(30, 40, 70, 60), occlusion.occlusionInTargetSur face().bounds()); 701 EXPECT_RECT_EQ(gfx::Rect(30, 40, 70, 60), occlusion.occlusionInTargetSur face().bounds());
702 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 702 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
703 703
704 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 40, 70, 60))); 704 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 40, 70, 60)));
705 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 40, 70, 60))) ; 705 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 40, 70, 60))) ;
706 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 39, 70, 60))) ; 706 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 39, 70, 60))) ;
707 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(31, 40, 70, 60))) ; 707 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(31, 40, 70, 60))) ;
708 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 41, 70, 60))) ; 708 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 41, 70, 60))) ;
709 709
710 occlusion.useDefaultLayerClipRect(); 710 occlusion.useDefaultLayerClipRect();
711 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 40, 70, 60))); 711 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 40, 70, 60)));
712 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 40, 70, 60))) ; 712 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 40, 70, 60))) ;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
764 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(laye r1, layer2Matrix, gfx::PointF(0, 0), gfx::Size(50, 50), true); 764 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(laye r1, layer2Matrix, gfx::PointF(0, 0), gfx::Size(50, 50), true);
765 typename Types::ContentLayerType* occluder = this->createDrawingLayer(pa rent, this->identityMatrix, gfx::PointF(100, 100), gfx::Size(500, 500), true); 765 typename Types::ContentLayerType* occluder = this->createDrawingLayer(pa rent, this->identityMatrix, gfx::PointF(100, 100), gfx::Size(500, 500), true);
766 this->calcDrawEtc(parent); 766 this->calcDrawEtc(parent);
767 767
768 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 768 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
769 769
770 this->visitLayer(occluder, occlusion); 770 this->visitLayer(occluder, occlusion);
771 this->enterLayer(layer2, occlusion); 771 this->enterLayer(layer2, occlusion);
772 772
773 EXPECT_RECT_EQ(gfx::Rect(100, 100, 100, 100), occlusion.occlusionInScree nSpace().bounds()); 773 EXPECT_RECT_EQ(gfx::Rect(100, 100, 100, 100), occlusion.occlusionInScree nSpace().bounds());
774 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 774 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
775 EXPECT_TRUE(occlusion.occlusionInTargetSurface().IsEmpty()); 775 EXPECT_TRUE(occlusion.occlusionInTargetSurface().IsEmpty());
776 EXPECT_EQ(0u, occlusion.occlusionInTargetSurface().rects().size()); 776 EXPECT_EQ(0u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
777 777
778 EXPECT_RECT_EQ(gfx::Rect(0, 0, 25, 25), occlusion.unoccludedLayerContent Rect(layer2, gfx::Rect(0, 0, 25, 25))); 778 EXPECT_RECT_EQ(gfx::Rect(0, 0, 25, 25), occlusion.unoccludedLayerContent Rect(layer2, gfx::Rect(0, 0, 25, 25)));
779 EXPECT_RECT_EQ(gfx::Rect(10, 25, 15, 25), occlusion.unoccludedLayerConte ntRect(layer2, gfx::Rect(10, 25, 25, 25))); 779 EXPECT_RECT_EQ(gfx::Rect(10, 25, 15, 25), occlusion.unoccludedLayerConte ntRect(layer2, gfx::Rect(10, 25, 25, 25)));
780 EXPECT_RECT_EQ(gfx::Rect(25, 10, 25, 15), occlusion.unoccludedLayerConte ntRect(layer2, gfx::Rect(25, 10, 25, 25))); 780 EXPECT_RECT_EQ(gfx::Rect(25, 10, 25, 15), occlusion.unoccludedLayerConte ntRect(layer2, gfx::Rect(25, 10, 25, 25)));
781 EXPECT_TRUE(occlusion.unoccludedLayerContentRect(layer2, gfx::Rect(25, 2 5, 25, 25)).IsEmpty()); 781 EXPECT_TRUE(occlusion.unoccludedLayerContentRect(layer2, gfx::Rect(25, 2 5, 25, 25)).IsEmpty());
782 } 782 }
783 }; 783 };
784 784
785 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestScaledRenderSurface); 785 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestScaledRenderSurface);
786 786
(...skipping 17 matching lines...) Expand all
804 // leaveToTargetRenderSurface, as the target surface has already been se en. 804 // leaveToTargetRenderSurface, as the target surface has already been se en.
805 typename Types::ContentLayerType* child2 = this->createDrawingLayer(pare nt, this->identityMatrix, gfx::PointF(30, 30), gfx::Size(60, 20), true); 805 typename Types::ContentLayerType* child2 = this->createDrawingLayer(pare nt, this->identityMatrix, gfx::PointF(30, 30), gfx::Size(60, 20), true);
806 this->calcDrawEtc(parent); 806 this->calcDrawEtc(parent);
807 807
808 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 808 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
809 occlusion.setLayerClipRect(gfx::Rect(-10, -10, 1000, 1000)); 809 occlusion.setLayerClipRect(gfx::Rect(-10, -10, 1000, 1000));
810 810
811 this->visitLayer(child2, occlusion); 811 this->visitLayer(child2, occlusion);
812 812
813 EXPECT_RECT_EQ(gfx::Rect(30, 30, 60, 20), occlusion.occlusionInScreenSpa ce().bounds()); 813 EXPECT_RECT_EQ(gfx::Rect(30, 30, 60, 20), occlusion.occlusionInScreenSpa ce().bounds());
814 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 814 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
815 EXPECT_RECT_EQ(gfx::Rect(30, 30, 60, 20), occlusion.occlusionInTargetSur face().bounds()); 815 EXPECT_RECT_EQ(gfx::Rect(30, 30, 60, 20), occlusion.occlusionInTargetSur face().bounds());
816 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 816 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
817 817
818 this->visitLayer(layer, occlusion); 818 this->visitLayer(layer, occlusion);
819 819
820 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInScreenSpa ce().bounds()); 820 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInScreenSpa ce().bounds());
821 EXPECT_EQ(2u, occlusion.occlusionInScreenSpace().rects().size()); 821 EXPECT_EQ(2u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
822 EXPECT_RECT_EQ(gfx::Rect(10, 430, 60, 70), occlusion.occlusionInTargetSu rface().bounds()); 822 EXPECT_RECT_EQ(gfx::Rect(10, 430, 60, 70), occlusion.occlusionInTargetSu rface().bounds());
823 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 823 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
824 824
825 this->enterContributingSurface(child, occlusion); 825 this->enterContributingSurface(child, occlusion);
826 826
827 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInScreenSpa ce().bounds()); 827 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInScreenSpa ce().bounds());
828 EXPECT_EQ(2u, occlusion.occlusionInScreenSpace().rects().size()); 828 EXPECT_EQ(2u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
829 EXPECT_RECT_EQ(gfx::Rect(10, 430, 60, 70), occlusion.occlusionInTargetSu rface().bounds()); 829 EXPECT_RECT_EQ(gfx::Rect(10, 430, 60, 70), occlusion.occlusionInTargetSu rface().bounds());
830 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 830 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
831 831
832 // Occlusion in |child2| should get merged with the |child| surface we a re leaving now. 832 // Occlusion in |child2| should get merged with the |child| surface we a re leaving now.
833 this->leaveContributingSurface(child, occlusion); 833 this->leaveContributingSurface(child, occlusion);
834 this->enterLayer(parent, occlusion); 834 this->enterLayer(parent, occlusion);
835 835
836 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInScreenSpa ce().bounds()); 836 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInScreenSpa ce().bounds());
837 EXPECT_EQ(2u, occlusion.occlusionInScreenSpace().rects().size()); 837 EXPECT_EQ(2u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
838 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInTargetSur face().bounds()); 838 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInTargetSur face().bounds());
839 EXPECT_EQ(2u, occlusion.occlusionInTargetSurface().rects().size()); 839 EXPECT_EQ(2u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
840 840
841 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 70, 70))) ; 841 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 70, 70))) ;
842 EXPECT_RECT_EQ(gfx::Rect(90, 30, 10, 10), occlusion.unoccludedLayerConte ntRect(parent, gfx::Rect(30, 30, 70, 70))); 842 EXPECT_RECT_EQ(gfx::Rect(90, 30, 10, 10), occlusion.unoccludedLayerConte ntRect(parent, gfx::Rect(30, 30, 70, 70)));
843 843
844 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 60, 10))); 844 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 60, 10)));
845 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 30, 60, 10))) ; 845 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 30, 60, 10))) ;
846 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 29, 60, 10))) ; 846 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 29, 60, 10))) ;
847 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(31, 30, 60, 10))) ; 847 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(31, 30, 60, 10))) ;
848 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 31, 60, 10))); 848 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 31, 60, 10)));
849 849
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
919 919
920 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 920 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
921 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); 921 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000));
922 922
923 gfx::Rect clippedLayerInChild = MathUtil::mapClippedRect(layerTransform, layer->visibleContentRect()); 923 gfx::Rect clippedLayerInChild = MathUtil::mapClippedRect(layerTransform, layer->visibleContentRect());
924 924
925 this->visitLayer(layer, occlusion); 925 this->visitLayer(layer, occlusion);
926 this->enterContributingSurface(child, occlusion); 926 this->enterContributingSurface(child, occlusion);
927 927
928 EXPECT_RECT_EQ(gfx::Rect(), occlusion.occlusionInScreenSpace().bounds()) ; 928 EXPECT_RECT_EQ(gfx::Rect(), occlusion.occlusionInScreenSpace().bounds()) ;
929 EXPECT_EQ(0u, occlusion.occlusionInScreenSpace().rects().size()); 929 EXPECT_EQ(0u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
930 EXPECT_RECT_EQ(clippedLayerInChild, occlusion.occlusionInTargetSurface() .bounds()); 930 EXPECT_RECT_EQ(clippedLayerInChild, occlusion.occlusionInTargetSurface() .bounds());
931 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 931 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
932 932
933 EXPECT_TRUE(occlusion.occludedLayer(child, clippedLayerInChild)); 933 EXPECT_TRUE(occlusion.occludedLayer(child, clippedLayerInChild));
934 EXPECT_TRUE(occlusion.unoccludedLayerContentRect(child, clippedLayerInCh ild).IsEmpty()); 934 EXPECT_TRUE(occlusion.unoccludedLayerContentRect(child, clippedLayerInCh ild).IsEmpty());
935 clippedLayerInChild.Offset(-1, 0); 935 clippedLayerInChild.Offset(-1, 0);
936 EXPECT_FALSE(occlusion.occludedLayer(child, clippedLayerInChild)); 936 EXPECT_FALSE(occlusion.occludedLayer(child, clippedLayerInChild));
937 EXPECT_FALSE(occlusion.unoccludedLayerContentRect(child, clippedLayerInC hild).IsEmpty()); 937 EXPECT_FALSE(occlusion.unoccludedLayerContentRect(child, clippedLayerInC hild).IsEmpty());
938 clippedLayerInChild.Offset(1, 0); 938 clippedLayerInChild.Offset(1, 0);
939 clippedLayerInChild.Offset(1, 0); 939 clippedLayerInChild.Offset(1, 0);
940 EXPECT_FALSE(occlusion.occludedLayer(child, clippedLayerInChild)); 940 EXPECT_FALSE(occlusion.occludedLayer(child, clippedLayerInChild));
941 EXPECT_FALSE(occlusion.unoccludedLayerContentRect(child, clippedLayerInC hild).IsEmpty()); 941 EXPECT_FALSE(occlusion.unoccludedLayerContentRect(child, clippedLayerInC hild).IsEmpty());
942 clippedLayerInChild.Offset(-1, 0); 942 clippedLayerInChild.Offset(-1, 0);
943 clippedLayerInChild.Offset(0, -1); 943 clippedLayerInChild.Offset(0, -1);
944 EXPECT_FALSE(occlusion.occludedLayer(child, clippedLayerInChild)); 944 EXPECT_FALSE(occlusion.occludedLayer(child, clippedLayerInChild));
945 EXPECT_FALSE(occlusion.unoccludedLayerContentRect(child, clippedLayerInC hild).IsEmpty()); 945 EXPECT_FALSE(occlusion.unoccludedLayerContentRect(child, clippedLayerInC hild).IsEmpty());
946 clippedLayerInChild.Offset(0, 1); 946 clippedLayerInChild.Offset(0, 1);
947 clippedLayerInChild.Offset(0, 1); 947 clippedLayerInChild.Offset(0, 1);
948 EXPECT_FALSE(occlusion.occludedLayer(child, clippedLayerInChild)); 948 EXPECT_FALSE(occlusion.occludedLayer(child, clippedLayerInChild));
949 EXPECT_FALSE(occlusion.unoccludedLayerContentRect(child, clippedLayerInC hild).IsEmpty()); 949 EXPECT_FALSE(occlusion.unoccludedLayerContentRect(child, clippedLayerInC hild).IsEmpty());
950 clippedLayerInChild.Offset(0, -1); 950 clippedLayerInChild.Offset(0, -1);
951 951
952 this->leaveContributingSurface(child, occlusion); 952 this->leaveContributingSurface(child, occlusion);
953 this->enterLayer(parent, occlusion); 953 this->enterLayer(parent, occlusion);
954 954
955 EXPECT_RECT_EQ(gfx::Rect(), occlusion.occlusionInScreenSpace().bounds()) ; 955 EXPECT_RECT_EQ(gfx::Rect(), occlusion.occlusionInScreenSpace().bounds()) ;
956 EXPECT_EQ(0u, occlusion.occlusionInScreenSpace().rects().size()); 956 EXPECT_EQ(0u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
957 EXPECT_RECT_EQ(gfx::Rect(), occlusion.occlusionInTargetSurface().bounds( )); 957 EXPECT_RECT_EQ(gfx::Rect(), occlusion.occlusionInTargetSurface().bounds( ));
958 EXPECT_EQ(0u, occlusion.occlusionInTargetSurface().rects().size()); 958 EXPECT_EQ(0u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
959 959
960 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(75, 55, 1, 1))); 960 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(75, 55, 1, 1)));
961 EXPECT_RECT_EQ(gfx::Rect(75, 55, 1, 1), occlusion.unoccludedLayerContent Rect(parent, gfx::Rect(75, 55, 1, 1))); 961 EXPECT_RECT_EQ(gfx::Rect(75, 55, 1, 1), occlusion.unoccludedLayerContent Rect(parent, gfx::Rect(75, 55, 1, 1)));
962 } 962 }
963 }; 963 };
964 964
965 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceRotatedOffAxis); 965 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceRotatedOffAxis);
966 966
967 template<class Types> 967 template<class Types>
968 class OcclusionTrackerTestSurfaceWithTwoOpaqueChildren : public OcclusionTracker Test<Types> { 968 class OcclusionTrackerTestSurfaceWithTwoOpaqueChildren : public OcclusionTracker Test<Types> {
(...skipping 15 matching lines...) Expand all
984 this->calcDrawEtc(parent); 984 this->calcDrawEtc(parent);
985 985
986 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 986 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
987 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); 987 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000));
988 988
989 this->visitLayer(layer2, occlusion); 989 this->visitLayer(layer2, occlusion);
990 this->visitLayer(layer1, occlusion); 990 this->visitLayer(layer1, occlusion);
991 this->enterContributingSurface(child, occlusion); 991 this->enterContributingSurface(child, occlusion);
992 992
993 EXPECT_RECT_EQ(gfx::Rect(30, 40, 70, 60), occlusion.occlusionInScreenSpa ce().bounds()); 993 EXPECT_RECT_EQ(gfx::Rect(30, 40, 70, 60), occlusion.occlusionInScreenSpa ce().bounds());
994 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 994 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
995 EXPECT_RECT_EQ(gfx::Rect(10, 430, 60, 70), occlusion.occlusionInTargetSu rface().bounds()); 995 EXPECT_RECT_EQ(gfx::Rect(10, 430, 60, 70), occlusion.occlusionInTargetSu rface().bounds());
996 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 996 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
997 997
998 EXPECT_TRUE(occlusion.occludedLayer(child, gfx::Rect(10, 430, 60, 70))); 998 EXPECT_TRUE(occlusion.occludedLayer(child, gfx::Rect(10, 430, 60, 70)));
999 EXPECT_FALSE(occlusion.occludedLayer(child, gfx::Rect(9, 430, 60, 70))); 999 EXPECT_FALSE(occlusion.occludedLayer(child, gfx::Rect(9, 430, 60, 70)));
1000 EXPECT_FALSE(occlusion.occludedLayer(child, gfx::Rect(10, 429, 60, 70))) ; 1000 EXPECT_FALSE(occlusion.occludedLayer(child, gfx::Rect(10, 429, 60, 70))) ;
1001 EXPECT_FALSE(occlusion.occludedLayer(child, gfx::Rect(11, 430, 60, 70))) ; 1001 EXPECT_FALSE(occlusion.occludedLayer(child, gfx::Rect(11, 430, 60, 70))) ;
1002 EXPECT_FALSE(occlusion.occludedLayer(child, gfx::Rect(10, 431, 60, 70))) ; 1002 EXPECT_FALSE(occlusion.occludedLayer(child, gfx::Rect(10, 431, 60, 70))) ;
1003 1003
1004 EXPECT_TRUE(occlusion.unoccludedLayerContentRect(child, gfx::Rect(10, 43 0, 60, 70)).IsEmpty()); 1004 EXPECT_TRUE(occlusion.unoccludedLayerContentRect(child, gfx::Rect(10, 43 0, 60, 70)).IsEmpty());
1005 EXPECT_RECT_EQ(gfx::Rect(9, 430, 1, 70), occlusion.unoccludedLayerConten tRect(child, gfx::Rect(9, 430, 60, 70))); 1005 EXPECT_RECT_EQ(gfx::Rect(9, 430, 1, 70), occlusion.unoccludedLayerConten tRect(child, gfx::Rect(9, 430, 60, 70)));
1006 EXPECT_RECT_EQ(gfx::Rect(10, 429, 60, 1), occlusion.unoccludedLayerConte ntRect(child, gfx::Rect(10, 429, 60, 70))); 1006 EXPECT_RECT_EQ(gfx::Rect(10, 429, 60, 1), occlusion.unoccludedLayerConte ntRect(child, gfx::Rect(10, 429, 60, 70)));
1007 EXPECT_RECT_EQ(gfx::Rect(70, 430, 1, 70), occlusion.unoccludedLayerConte ntRect(child, gfx::Rect(11, 430, 60, 70))); 1007 EXPECT_RECT_EQ(gfx::Rect(70, 430, 1, 70), occlusion.unoccludedLayerConte ntRect(child, gfx::Rect(11, 430, 60, 70)));
1008 EXPECT_RECT_EQ(gfx::Rect(10, 500, 60, 1), occlusion.unoccludedLayerConte ntRect(child, gfx::Rect(10, 431, 60, 70))); 1008 EXPECT_RECT_EQ(gfx::Rect(10, 500, 60, 1), occlusion.unoccludedLayerConte ntRect(child, gfx::Rect(10, 431, 60, 70)));
1009 1009
1010 this->leaveContributingSurface(child, occlusion); 1010 this->leaveContributingSurface(child, occlusion);
1011 this->enterLayer(parent, occlusion); 1011 this->enterLayer(parent, occlusion);
1012 1012
1013 EXPECT_RECT_EQ(gfx::Rect(30, 40, 70, 60), occlusion.occlusionInScreenSpa ce().bounds()); 1013 EXPECT_RECT_EQ(gfx::Rect(30, 40, 70, 60), occlusion.occlusionInScreenSpa ce().bounds());
1014 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1014 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
1015 EXPECT_RECT_EQ(gfx::Rect(30, 40, 70, 60), occlusion.occlusionInTargetSur face().bounds()); 1015 EXPECT_RECT_EQ(gfx::Rect(30, 40, 70, 60), occlusion.occlusionInTargetSur face().bounds());
1016 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 1016 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
1017 1017
1018 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 40, 70, 60))); 1018 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 40, 70, 60)));
1019 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 40, 70, 60))) ; 1019 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 40, 70, 60))) ;
1020 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 39, 70, 60))) ; 1020 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 39, 70, 60))) ;
1021 1021
1022 EXPECT_TRUE(occlusion.unoccludedLayerContentRect(parent, gfx::Rect(30, 4 0, 70, 60)).IsEmpty()); 1022 EXPECT_TRUE(occlusion.unoccludedLayerContentRect(parent, gfx::Rect(30, 4 0, 70, 60)).IsEmpty());
1023 EXPECT_RECT_EQ(gfx::Rect(29, 40, 1, 60), occlusion.unoccludedLayerConten tRect(parent, gfx::Rect(29, 40, 70, 60))); 1023 EXPECT_RECT_EQ(gfx::Rect(29, 40, 1, 60), occlusion.unoccludedLayerConten tRect(parent, gfx::Rect(29, 40, 70, 60)));
1024 EXPECT_RECT_EQ(gfx::Rect(30, 39, 70, 1), occlusion.unoccludedLayerConten tRect(parent, gfx::Rect(30, 39, 70, 60))); 1024 EXPECT_RECT_EQ(gfx::Rect(30, 39, 70, 1), occlusion.unoccludedLayerConten tRect(parent, gfx::Rect(30, 39, 70, 60)));
1025 EXPECT_RECT_EQ(gfx::Rect(100, 40, 1, 60), occlusion.unoccludedLayerConte ntRect(parent, gfx::Rect(31, 40, 70, 60))); 1025 EXPECT_RECT_EQ(gfx::Rect(100, 40, 1, 60), occlusion.unoccludedLayerConte ntRect(parent, gfx::Rect(31, 40, 70, 60)));
1026 EXPECT_RECT_EQ(gfx::Rect(30, 100, 70, 1), occlusion.unoccludedLayerConte ntRect(parent, gfx::Rect(30, 41, 70, 60))); 1026 EXPECT_RECT_EQ(gfx::Rect(30, 100, 70, 1), occlusion.unoccludedLayerConte ntRect(parent, gfx::Rect(30, 41, 70, 60)));
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1073 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(chil d2, this->identityMatrix, gfx::PointF(-10, -10), gfx::Size(510, 510), true); 1073 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(chil d2, this->identityMatrix, gfx::PointF(-10, -10), gfx::Size(510, 510), true);
1074 this->calcDrawEtc(parent); 1074 this->calcDrawEtc(parent);
1075 1075
1076 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 1076 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
1077 occlusion.setLayerClipRect(gfx::Rect(-20, -20, 1000, 1000)); 1077 occlusion.setLayerClipRect(gfx::Rect(-20, -20, 1000, 1000));
1078 1078
1079 this->visitLayer(layer2, occlusion); 1079 this->visitLayer(layer2, occlusion);
1080 this->enterContributingSurface(child2, occlusion); 1080 this->enterContributingSurface(child2, occlusion);
1081 1081
1082 EXPECT_RECT_EQ(gfx::Rect(20, 30, 80, 70), occlusion.occlusionInScreenSpa ce().bounds()); 1082 EXPECT_RECT_EQ(gfx::Rect(20, 30, 80, 70), occlusion.occlusionInScreenSpa ce().bounds());
1083 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1083 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
1084 EXPECT_RECT_EQ(gfx::Rect(-10, 420, 70, 80), occlusion.occlusionInTargetS urface().bounds()); 1084 EXPECT_RECT_EQ(gfx::Rect(-10, 420, 70, 80), occlusion.occlusionInTargetS urface().bounds());
1085 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 1085 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
1086 1086
1087 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 80)) ); 1087 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 80)) );
1088 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-11, 420, 70, 80) )); 1088 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-11, 420, 70, 80) ));
1089 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 419, 70, 80) )); 1089 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 419, 70, 80) ));
1090 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 71, 80) )); 1090 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 71, 80) ));
1091 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 81) )); 1091 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 81) ));
1092 1092
1093 occlusion.useDefaultLayerClipRect(); 1093 occlusion.useDefaultLayerClipRect();
1094 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 80)) ); 1094 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 80)) );
1095 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-11, 420, 70, 80)) ); 1095 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-11, 420, 70, 80)) );
1096 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 419, 70, 80)) ); 1096 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 419, 70, 80)) );
1097 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 71, 80)) ); 1097 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 71, 80)) );
1098 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 81)) ); 1098 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 81)) );
1099 occlusion.setLayerClipRect(gfx::Rect(-20, -20, 1000, 1000)); 1099 occlusion.setLayerClipRect(gfx::Rect(-20, -20, 1000, 1000));
1100 1100
1101 // There is nothing above child2's surface in the z-order. 1101 // There is nothing above child2's surface in the z-order.
1102 EXPECT_RECT_EQ(gfx::Rect(-10, 420, 70, 80), occlusion.unoccludedContribu tingSurfaceContentRect(child2, false, gfx::Rect(-10, 420, 70, 80))); 1102 EXPECT_RECT_EQ(gfx::Rect(-10, 420, 70, 80), occlusion.unoccludedContribu tingSurfaceContentRect(child2, false, gfx::Rect(-10, 420, 70, 80)));
1103 1103
1104 this->leaveContributingSurface(child2, occlusion); 1104 this->leaveContributingSurface(child2, occlusion);
1105 this->visitLayer(layer1, occlusion); 1105 this->visitLayer(layer1, occlusion);
1106 this->enterContributingSurface(child1, occlusion); 1106 this->enterContributingSurface(child1, occlusion);
1107 1107
1108 EXPECT_RECT_EQ(gfx::Rect(20, 20, 80, 80), occlusion.occlusionInScreenSpa ce().bounds()); 1108 EXPECT_RECT_EQ(gfx::Rect(20, 20, 80, 80), occlusion.occlusionInScreenSpa ce().bounds());
1109 EXPECT_EQ(2u, occlusion.occlusionInScreenSpace().rects().size()); 1109 EXPECT_EQ(2u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
1110 EXPECT_RECT_EQ(gfx::Rect(-10, 430, 80, 70), occlusion.occlusionInTargetS urface().bounds()); 1110 EXPECT_RECT_EQ(gfx::Rect(-10, 430, 80, 70), occlusion.occlusionInTargetS urface().bounds());
1111 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 1111 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
1112 1112
1113 EXPECT_TRUE(occlusion.occludedLayer(child1, gfx::Rect(-10, 430, 80, 70)) ); 1113 EXPECT_TRUE(occlusion.occludedLayer(child1, gfx::Rect(-10, 430, 80, 70)) );
1114 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(-11, 430, 80, 70) )); 1114 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(-11, 430, 80, 70) ));
1115 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(-10, 429, 80, 70) )); 1115 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(-10, 429, 80, 70) ));
1116 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(-10, 430, 81, 70) )); 1116 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(-10, 430, 81, 70) ));
1117 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(-10, 430, 80, 71) )); 1117 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(-10, 430, 80, 71) ));
1118 1118
1119 // child2's contents will occlude child1 below it. 1119 // child2's contents will occlude child1 below it.
1120 EXPECT_RECT_EQ(gfx::Rect(-10, 430, 10, 70), occlusion.unoccludedContribu tingSurfaceContentRect(child1, false, gfx::Rect(-10, 430, 80, 70))); 1120 EXPECT_RECT_EQ(gfx::Rect(-10, 430, 10, 70), occlusion.unoccludedContribu tingSurfaceContentRect(child1, false, gfx::Rect(-10, 430, 80, 70)));
1121 1121
1122 this->leaveContributingSurface(child1, occlusion); 1122 this->leaveContributingSurface(child1, occlusion);
1123 this->enterLayer(parent, occlusion); 1123 this->enterLayer(parent, occlusion);
1124 1124
1125 EXPECT_RECT_EQ(gfx::Rect(20, 20, 80, 80), occlusion.occlusionInScreenSpa ce().bounds()); 1125 EXPECT_RECT_EQ(gfx::Rect(20, 20, 80, 80), occlusion.occlusionInScreenSpa ce().bounds());
1126 EXPECT_EQ(2u, occlusion.occlusionInScreenSpace().rects().size()); 1126 EXPECT_EQ(2u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
1127 EXPECT_RECT_EQ(gfx::Rect(20, 20, 80, 80), occlusion.occlusionInTargetSur face().bounds()); 1127 EXPECT_RECT_EQ(gfx::Rect(20, 20, 80, 80), occlusion.occlusionInTargetSur face().bounds());
1128 EXPECT_EQ(2u, occlusion.occlusionInTargetSurface().rects().size()); 1128 EXPECT_EQ(2u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
1129 1129
1130 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(20, 20, 80, 80))) ; 1130 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(20, 20, 80, 80))) ;
1131 1131
1132 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 20, 70, 80))); 1132 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 20, 70, 80)));
1133 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 20, 70, 80))) ; 1133 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 20, 70, 80))) ;
1134 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 19, 70, 80))) ; 1134 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 19, 70, 80))) ;
1135 1135
1136 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(20, 30, 80, 70))); 1136 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(20, 30, 80, 70)));
1137 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(19, 30, 80, 70))) ; 1137 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(19, 30, 80, 70))) ;
1138 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(20, 29, 80, 70))) ; 1138 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(20, 29, 80, 70))) ;
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1189 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(chil d2, this->identityMatrix, gfx::PointF(-10, -10), gfx::Size(510, 510), true); 1189 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(chil d2, this->identityMatrix, gfx::PointF(-10, -10), gfx::Size(510, 510), true);
1190 this->calcDrawEtc(parent); 1190 this->calcDrawEtc(parent);
1191 1191
1192 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 1192 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
1193 occlusion.setLayerClipRect(gfx::Rect(-30, -30, 1000, 1000)); 1193 occlusion.setLayerClipRect(gfx::Rect(-30, -30, 1000, 1000));
1194 1194
1195 this->visitLayer(layer2, occlusion); 1195 this->visitLayer(layer2, occlusion);
1196 this->enterLayer(child2, occlusion); 1196 this->enterLayer(child2, occlusion);
1197 1197
1198 EXPECT_RECT_EQ(gfx::Rect(20, 30, 80, 70), occlusion.occlusionInScreenSpa ce().bounds()); 1198 EXPECT_RECT_EQ(gfx::Rect(20, 30, 80, 70), occlusion.occlusionInScreenSpa ce().bounds());
1199 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1199 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
1200 EXPECT_RECT_EQ(gfx::Rect(-10, 420, 70, 80), occlusion.occlusionInTargetS urface().bounds()); 1200 EXPECT_RECT_EQ(gfx::Rect(-10, 420, 70, 80), occlusion.occlusionInTargetS urface().bounds());
1201 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 1201 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
1202 1202
1203 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 80)) ); 1203 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 80)) );
1204 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-11, 420, 70, 80) )); 1204 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-11, 420, 70, 80) ));
1205 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 419, 70, 80) )); 1205 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 419, 70, 80) ));
1206 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 71, 80) )); 1206 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 71, 80) ));
1207 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 81) )); 1207 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 81) ));
1208 1208
1209 this->leaveLayer(child2, occlusion); 1209 this->leaveLayer(child2, occlusion);
1210 this->enterContributingSurface(child2, occlusion); 1210 this->enterContributingSurface(child2, occlusion);
1211 1211
1212 // There is nothing above child2's surface in the z-order. 1212 // There is nothing above child2's surface in the z-order.
1213 EXPECT_RECT_EQ(gfx::Rect(-10, 420, 70, 80), occlusion.unoccludedContribu tingSurfaceContentRect(child2, false, gfx::Rect(-10, 420, 70, 80))); 1213 EXPECT_RECT_EQ(gfx::Rect(-10, 420, 70, 80), occlusion.unoccludedContribu tingSurfaceContentRect(child2, false, gfx::Rect(-10, 420, 70, 80)));
1214 1214
1215 this->leaveContributingSurface(child2, occlusion); 1215 this->leaveContributingSurface(child2, occlusion);
1216 this->visitLayer(layer1, occlusion); 1216 this->visitLayer(layer1, occlusion);
1217 this->enterContributingSurface(child1, occlusion); 1217 this->enterContributingSurface(child1, occlusion);
1218 1218
1219 EXPECT_RECT_EQ(gfx::Rect(10, 20, 90, 80), occlusion.occlusionInScreenSpa ce().bounds()); 1219 EXPECT_RECT_EQ(gfx::Rect(10, 20, 90, 80), occlusion.occlusionInScreenSpa ce().bounds());
1220 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1220 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
1221 EXPECT_RECT_EQ(gfx::Rect(420, -20, 80, 90), occlusion.occlusionInTargetS urface().bounds()); 1221 EXPECT_RECT_EQ(gfx::Rect(420, -20, 80, 90), occlusion.occlusionInTargetS urface().bounds());
1222 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 1222 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
1223 1223
1224 EXPECT_TRUE(occlusion.occludedLayer(child1, gfx::Rect(420, -20, 80, 90)) ); 1224 EXPECT_TRUE(occlusion.occludedLayer(child1, gfx::Rect(420, -20, 80, 90)) );
1225 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(419, -20, 80, 90) )); 1225 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(419, -20, 80, 90) ));
1226 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(420, -21, 80, 90) )); 1226 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(420, -21, 80, 90) ));
1227 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(420, -19, 80, 90) )); 1227 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(420, -19, 80, 90) ));
1228 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(421, -20, 80, 90) )); 1228 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(421, -20, 80, 90) ));
1229 1229
1230 // child2's contents will occlude child1 below it. 1230 // child2's contents will occlude child1 below it.
1231 EXPECT_RECT_EQ(gfx::Rect(420, -20, 80, 90), occlusion.unoccludedContribu tingSurfaceContentRect(child1, false, gfx::Rect(420, -20, 80, 90))); 1231 EXPECT_RECT_EQ(gfx::Rect(420, -20, 80, 90), occlusion.unoccludedContribu tingSurfaceContentRect(child1, false, gfx::Rect(420, -20, 80, 90)));
1232 EXPECT_RECT_EQ(gfx::Rect(490, -10, 10, 80), occlusion.unoccludedContribu tingSurfaceContentRect(child1, false, gfx::Rect(420, -10, 80, 90))); 1232 EXPECT_RECT_EQ(gfx::Rect(490, -10, 10, 80), occlusion.unoccludedContribu tingSurfaceContentRect(child1, false, gfx::Rect(420, -10, 80, 90)));
1233 EXPECT_RECT_EQ(gfx::Rect(420, -20, 70, 10), occlusion.unoccludedContribu tingSurfaceContentRect(child1, false, gfx::Rect(420, -20, 70, 90))); 1233 EXPECT_RECT_EQ(gfx::Rect(420, -20, 70, 10), occlusion.unoccludedContribu tingSurfaceContentRect(child1, false, gfx::Rect(420, -20, 70, 90)));
1234 1234
1235 this->leaveContributingSurface(child1, occlusion); 1235 this->leaveContributingSurface(child1, occlusion);
1236 this->enterLayer(parent, occlusion); 1236 this->enterLayer(parent, occlusion);
1237 1237
1238 EXPECT_RECT_EQ(gfx::Rect(10, 20, 90, 80), occlusion.occlusionInScreenSpa ce().bounds()); 1238 EXPECT_RECT_EQ(gfx::Rect(10, 20, 90, 80), occlusion.occlusionInScreenSpa ce().bounds());
1239 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1239 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
1240 EXPECT_RECT_EQ(gfx::Rect(10, 20, 90, 80), occlusion.occlusionInTargetSur face().bounds()); 1240 EXPECT_RECT_EQ(gfx::Rect(10, 20, 90, 80), occlusion.occlusionInTargetSur face().bounds());
1241 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 1241 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
1242 1242
1243 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(10, 20, 90, 80))); 1243 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(10, 20, 90, 80)));
1244 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(9, 20, 90, 80))); 1244 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(9, 20, 90, 80)));
1245 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(10, 19, 90, 80))) ; 1245 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(10, 19, 90, 80))) ;
1246 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(11, 20, 90, 80))) ; 1246 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(11, 20, 90, 80))) ;
1247 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(10, 21, 90, 80))) ; 1247 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(10, 21, 90, 80))) ;
1248 1248
1249 /* Justification for the above occlusion: 1249 /* Justification for the above occlusion:
1250 100 1250 100
1251 +---------------------+ 1251 +---------------------+
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1318 // And has nothing to contribute to its parent surface. 1318 // And has nothing to contribute to its parent surface.
1319 this->leaveContributingSurface(opacityLayer, occlusion); 1319 this->leaveContributingSurface(opacityLayer, occlusion);
1320 EXPECT_TRUE(occlusion.occlusionInScreenSpace().IsEmpty()); 1320 EXPECT_TRUE(occlusion.occlusionInScreenSpace().IsEmpty());
1321 EXPECT_TRUE(occlusion.occlusionInTargetSurface().IsEmpty()); 1321 EXPECT_TRUE(occlusion.occlusionInTargetSurface().IsEmpty());
1322 1322
1323 // Opaque layer will contribute to occlusion. 1323 // Opaque layer will contribute to occlusion.
1324 this->visitLayer(opaqueLayer, occlusion); 1324 this->visitLayer(opaqueLayer, occlusion);
1325 this->enterContributingSurface(opaqueLayer, occlusion); 1325 this->enterContributingSurface(opaqueLayer, occlusion);
1326 1326
1327 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInScreenSpa ce().bounds()); 1327 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInScreenSpa ce().bounds());
1328 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1328 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
1329 EXPECT_RECT_EQ(gfx::Rect(0, 430, 70, 70), occlusion.occlusionInTargetSur face().bounds()); 1329 EXPECT_RECT_EQ(gfx::Rect(0, 430, 70, 70), occlusion.occlusionInTargetSur face().bounds());
1330 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 1330 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
1331 1331
1332 // And it gets translated to the parent surface. 1332 // And it gets translated to the parent surface.
1333 this->leaveContributingSurface(opaqueLayer, occlusion); 1333 this->leaveContributingSurface(opaqueLayer, occlusion);
1334 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInScreenSpa ce().bounds()); 1334 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInScreenSpa ce().bounds());
1335 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1335 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
1336 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInTargetSur face().bounds()); 1336 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInTargetSur face().bounds());
1337 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 1337 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
1338 1338
1339 // The blur layer needs to throw away any occlusion from outside its sub tree. 1339 // The blur layer needs to throw away any occlusion from outside its sub tree.
1340 this->enterLayer(blurLayer, occlusion); 1340 this->enterLayer(blurLayer, occlusion);
1341 EXPECT_TRUE(occlusion.occlusionInScreenSpace().IsEmpty()); 1341 EXPECT_TRUE(occlusion.occlusionInScreenSpace().IsEmpty());
1342 EXPECT_TRUE(occlusion.occlusionInTargetSurface().IsEmpty()); 1342 EXPECT_TRUE(occlusion.occlusionInTargetSurface().IsEmpty());
1343 1343
1344 // And it won't contribute to occlusion. 1344 // And it won't contribute to occlusion.
1345 this->leaveLayer(blurLayer, occlusion); 1345 this->leaveLayer(blurLayer, occlusion);
1346 this->enterContributingSurface(blurLayer, occlusion); 1346 this->enterContributingSurface(blurLayer, occlusion);
1347 EXPECT_TRUE(occlusion.occlusionInScreenSpace().IsEmpty()); 1347 EXPECT_TRUE(occlusion.occlusionInScreenSpace().IsEmpty());
1348 EXPECT_TRUE(occlusion.occlusionInTargetSurface().IsEmpty()); 1348 EXPECT_TRUE(occlusion.occlusionInTargetSurface().IsEmpty());
1349 1349
1350 // But the opaque layer's occlusion is preserved on the parent. 1350 // But the opaque layer's occlusion is preserved on the parent.
1351 this->leaveContributingSurface(blurLayer, occlusion); 1351 this->leaveContributingSurface(blurLayer, occlusion);
1352 this->enterLayer(parent, occlusion); 1352 this->enterLayer(parent, occlusion);
1353 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInScreenSpa ce().bounds()); 1353 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInScreenSpa ce().bounds());
1354 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1354 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
1355 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInTargetSur face().bounds()); 1355 EXPECT_RECT_EQ(gfx::Rect(30, 30, 70, 70), occlusion.occlusionInTargetSur face().bounds());
1356 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 1356 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
1357 } 1357 }
1358 }; 1358 };
1359 1359
1360 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestFilters); 1360 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestFilters);
1361 1361
1362 template<class Types> 1362 template<class Types>
1363 class OcclusionTrackerTestReplicaDoesOcclude : public OcclusionTrackerTest<Types > { 1363 class OcclusionTrackerTestReplicaDoesOcclude : public OcclusionTrackerTest<Types > {
1364 protected: 1364 protected:
1365 OcclusionTrackerTestReplicaDoesOcclude(bool opaqueLayers) : OcclusionTracker Test<Types>(opaqueLayers) {} 1365 OcclusionTrackerTestReplicaDoesOcclude(bool opaqueLayers) : OcclusionTracker Test<Types>(opaqueLayers) {}
1366 void runMyTest() 1366 void runMyTest()
1367 { 1367 {
1368 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 200)); 1368 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 200));
1369 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, gfx::PointF(0, 100), gfx::Size(50, 50), true); 1369 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, gfx::PointF(0, 100), gfx::Size(50, 50), true);
1370 this->createReplicaLayer(surface, this->identityMatrix, gfx::PointF(50, 50), gfx::Size()); 1370 this->createReplicaLayer(surface, this->identityMatrix, gfx::PointF(50, 50), gfx::Size());
1371 this->calcDrawEtc(parent); 1371 this->calcDrawEtc(parent);
1372 1372
1373 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 1373 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
1374 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); 1374 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000));
1375 1375
1376 this->visitLayer(surface, occlusion); 1376 this->visitLayer(surface, occlusion);
1377 1377
1378 EXPECT_RECT_EQ(gfx::Rect(0, 100, 50, 50), occlusion.occlusionInScreenSpa ce().bounds()); 1378 EXPECT_RECT_EQ(gfx::Rect(0, 100, 50, 50), occlusion.occlusionInScreenSpa ce().bounds());
1379 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1379 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
1380 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 50), occlusion.occlusionInTargetSurfa ce().bounds()); 1380 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 50), occlusion.occlusionInTargetSurfa ce().bounds());
1381 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 1381 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
1382 1382
1383 this->visitContributingSurface(surface, occlusion); 1383 this->visitContributingSurface(surface, occlusion);
1384 this->enterLayer(parent, occlusion); 1384 this->enterLayer(parent, occlusion);
1385 1385
1386 // The surface and replica should both be occluding the parent. 1386 // The surface and replica should both be occluding the parent.
1387 EXPECT_RECT_EQ(gfx::Rect(0, 100, 100, 100), occlusion.occlusionInTargetS urface().bounds()); 1387 EXPECT_RECT_EQ(gfx::Rect(0, 100, 100, 100), occlusion.occlusionInTargetS urface().bounds());
1388 EXPECT_EQ(2u, occlusion.occlusionInTargetSurface().rects().size()); 1388 EXPECT_EQ(2u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
1389 } 1389 }
1390 }; 1390 };
1391 1391
1392 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReplicaDoesOcclude); 1392 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReplicaDoesOcclude);
1393 1393
1394 template<class Types> 1394 template<class Types>
1395 class OcclusionTrackerTestReplicaWithClipping : public OcclusionTrackerTest<Type s> { 1395 class OcclusionTrackerTestReplicaWithClipping : public OcclusionTrackerTest<Type s> {
1396 protected: 1396 protected:
1397 OcclusionTrackerTestReplicaWithClipping(bool opaqueLayers) : OcclusionTracke rTest<Types>(opaqueLayers) {} 1397 OcclusionTrackerTestReplicaWithClipping(bool opaqueLayers) : OcclusionTracke rTest<Types>(opaqueLayers) {}
1398 void runMyTest() 1398 void runMyTest()
1399 { 1399 {
1400 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 170)); 1400 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 170));
1401 parent->setMasksToBounds(true); 1401 parent->setMasksToBounds(true);
1402 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, gfx::PointF(0, 100), gfx::Size(50, 50), true); 1402 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, gfx::PointF(0, 100), gfx::Size(50, 50), true);
1403 this->createReplicaLayer(surface, this->identityMatrix, gfx::PointF(50, 50), gfx::Size()); 1403 this->createReplicaLayer(surface, this->identityMatrix, gfx::PointF(50, 50), gfx::Size());
1404 this->calcDrawEtc(parent); 1404 this->calcDrawEtc(parent);
1405 1405
1406 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 1406 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
1407 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); 1407 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000));
1408 1408
1409 this->visitLayer(surface, occlusion); 1409 this->visitLayer(surface, occlusion);
1410 1410
1411 EXPECT_RECT_EQ(gfx::Rect(0, 100, 50, 50), occlusion.occlusionInScreenSpa ce().bounds()); 1411 EXPECT_RECT_EQ(gfx::Rect(0, 100, 50, 50), occlusion.occlusionInScreenSpa ce().bounds());
1412 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1412 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
1413 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 50), occlusion.occlusionInTargetSurfa ce().bounds()); 1413 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 50), occlusion.occlusionInTargetSurfa ce().bounds());
1414 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 1414 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
1415 1415
1416 this->visitContributingSurface(surface, occlusion); 1416 this->visitContributingSurface(surface, occlusion);
1417 this->enterLayer(parent, occlusion); 1417 this->enterLayer(parent, occlusion);
1418 1418
1419 // The surface and replica should both be occluding the parent. 1419 // The surface and replica should both be occluding the parent.
1420 EXPECT_RECT_EQ(gfx::Rect(0, 100, 100, 70), occlusion.occlusionInTargetSu rface().bounds()); 1420 EXPECT_RECT_EQ(gfx::Rect(0, 100, 100, 70), occlusion.occlusionInTargetSu rface().bounds());
1421 EXPECT_EQ(2u, occlusion.occlusionInTargetSurface().rects().size()); 1421 EXPECT_EQ(2u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
1422 } 1422 }
1423 }; 1423 };
1424 1424
1425 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReplicaWithClipping); 1425 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReplicaWithClipping);
1426 1426
1427 template<class Types> 1427 template<class Types>
1428 class OcclusionTrackerTestReplicaWithMask : public OcclusionTrackerTest<Types> { 1428 class OcclusionTrackerTestReplicaWithMask : public OcclusionTrackerTest<Types> {
1429 protected: 1429 protected:
1430 OcclusionTrackerTestReplicaWithMask(bool opaqueLayers) : OcclusionTrackerTes t<Types>(opaqueLayers) {} 1430 OcclusionTrackerTestReplicaWithMask(bool opaqueLayers) : OcclusionTrackerTes t<Types>(opaqueLayers) {}
1431 void runMyTest() 1431 void runMyTest()
1432 { 1432 {
1433 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 200)); 1433 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 200));
1434 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, gfx::PointF(0, 100), gfx::Size(50, 50), true); 1434 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, gfx::PointF(0, 100), gfx::Size(50, 50), true);
1435 typename Types::LayerType* replica = this->createReplicaLayer(surface, t his->identityMatrix, gfx::PointF(50, 50), gfx::Size()); 1435 typename Types::LayerType* replica = this->createReplicaLayer(surface, t his->identityMatrix, gfx::PointF(50, 50), gfx::Size());
1436 this->createMaskLayer(replica, gfx::Size(10, 10)); 1436 this->createMaskLayer(replica, gfx::Size(10, 10));
1437 this->calcDrawEtc(parent); 1437 this->calcDrawEtc(parent);
1438 1438
1439 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 1439 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
1440 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); 1440 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000));
1441 1441
1442 this->visitLayer(surface, occlusion); 1442 this->visitLayer(surface, occlusion);
1443 1443
1444 EXPECT_RECT_EQ(gfx::Rect(0, 100, 50, 50), occlusion.occlusionInScreenSpa ce().bounds()); 1444 EXPECT_RECT_EQ(gfx::Rect(0, 100, 50, 50), occlusion.occlusionInScreenSpa ce().bounds());
1445 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1445 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
1446 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 50), occlusion.occlusionInTargetSurfa ce().bounds()); 1446 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 50), occlusion.occlusionInTargetSurfa ce().bounds());
1447 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 1447 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
1448 1448
1449 this->visitContributingSurface(surface, occlusion); 1449 this->visitContributingSurface(surface, occlusion);
1450 this->enterLayer(parent, occlusion); 1450 this->enterLayer(parent, occlusion);
1451 1451
1452 // The replica should not be occluding the parent, since it has a mask a pplied to it. 1452 // The replica should not be occluding the parent, since it has a mask a pplied to it.
1453 EXPECT_RECT_EQ(gfx::Rect(0, 100, 50, 50), occlusion.occlusionInTargetSur face().bounds()); 1453 EXPECT_RECT_EQ(gfx::Rect(0, 100, 50, 50), occlusion.occlusionInTargetSur face().bounds());
1454 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 1454 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
1455 } 1455 }
1456 }; 1456 };
1457 1457
1458 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReplicaWithMask); 1458 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReplicaWithMask);
1459 1459
1460 template<class Types> 1460 template<class Types>
1461 class OcclusionTrackerTestLayerClipRectOutsideChild : public OcclusionTrackerTes t<Types> { 1461 class OcclusionTrackerTestLayerClipRectOutsideChild : public OcclusionTrackerTes t<Types> {
1462 protected: 1462 protected:
1463 OcclusionTrackerTestLayerClipRectOutsideChild(bool opaqueLayers) : Occlusion TrackerTest<Types>(opaqueLayers) {} 1463 OcclusionTrackerTestLayerClipRectOutsideChild(bool opaqueLayers) : Occlusion TrackerTest<Types>(opaqueLayers) {}
1464 void runMyTest() 1464 void runMyTest()
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
1852 // Test without any clip rect. 1852 // Test without any clip rect.
1853 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); 1853 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000));
1854 EXPECT_FALSE(occlusion.occludedLayer(layer, gfx::Rect(200, 100, 100, 100 ))); 1854 EXPECT_FALSE(occlusion.occludedLayer(layer, gfx::Rect(200, 100, 100, 100 )));
1855 occlusion.useDefaultLayerClipRect(); 1855 occlusion.useDefaultLayerClipRect();
1856 1856
1857 this->leaveLayer(layer, occlusion); 1857 this->leaveLayer(layer, occlusion);
1858 this->visitContributingSurface(layer, occlusion); 1858 this->visitContributingSurface(layer, occlusion);
1859 this->enterLayer(parent, occlusion); 1859 this->enterLayer(parent, occlusion);
1860 1860
1861 EXPECT_TRUE(occlusion.occlusionInScreenSpace().bounds().IsEmpty()); 1861 EXPECT_TRUE(occlusion.occlusionInScreenSpace().bounds().IsEmpty());
1862 EXPECT_EQ(0u, occlusion.occlusionInScreenSpace().rects().size()); 1862 EXPECT_EQ(0u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
1863 } 1863 }
1864 }; 1864 };
1865 1865
1866 MAIN_AND_IMPL_THREAD_TEST(OcclusionTrackerTestOpaqueContentsRegionEmpty); 1866 MAIN_AND_IMPL_THREAD_TEST(OcclusionTrackerTestOpaqueContentsRegionEmpty);
1867 1867
1868 template<class Types> 1868 template<class Types>
1869 class OcclusionTrackerTestOpaqueContentsRegionNonEmpty : public OcclusionTracker Test<Types> { 1869 class OcclusionTrackerTestOpaqueContentsRegionNonEmpty : public OcclusionTracker Test<Types> {
1870 protected: 1870 protected:
1871 OcclusionTrackerTestOpaqueContentsRegionNonEmpty(bool opaqueLayers) : Occlus ionTrackerTest<Types>(opaqueLayers) {} 1871 OcclusionTrackerTestOpaqueContentsRegionNonEmpty(bool opaqueLayers) : Occlus ionTrackerTest<Types>(opaqueLayers) {}
1872 void runMyTest() 1872 void runMyTest()
1873 { 1873 {
1874 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, gfx::PointF(0, 0), gfx::Size(300, 300)); 1874 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, gfx::PointF(0, 0), gfx::Size(300, 300));
1875 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, this->identityMatrix, gfx::PointF(100, 100), gfx::Size(200, 200), false); 1875 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, this->identityMatrix, gfx::PointF(100, 100), gfx::Size(200, 200), false);
1876 this->calcDrawEtc(parent); 1876 this->calcDrawEtc(parent);
1877 1877
1878 { 1878 {
1879 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Typ es::RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 1879 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Typ es::RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
1880 layer->setOpaqueContentsRect(gfx::Rect(0, 0, 100, 100)); 1880 layer->setOpaqueContentsRect(gfx::Rect(0, 0, 100, 100));
1881 1881
1882 this->resetLayerIterator(); 1882 this->resetLayerIterator();
1883 this->visitLayer(layer, occlusion); 1883 this->visitLayer(layer, occlusion);
1884 this->enterLayer(parent, occlusion); 1884 this->enterLayer(parent, occlusion);
1885 1885
1886 EXPECT_RECT_EQ(gfx::Rect(100, 100, 100, 100), occlusion.occlusionInS creenSpace().bounds()); 1886 EXPECT_RECT_EQ(gfx::Rect(100, 100, 100, 100), occlusion.occlusionInS creenSpace().bounds());
1887 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1887 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).s ize());
1888 1888
1889 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(0, 100, 100, 100))); 1889 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(0, 100, 100, 100)));
1890 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(100, 100, 100, 100))); 1890 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(100, 100, 100, 100)));
1891 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(200, 200, 100 , 100))); 1891 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(200, 200, 100 , 100)));
1892 } 1892 }
1893 1893
1894 { 1894 {
1895 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Typ es::RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 1895 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Typ es::RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
1896 layer->setOpaqueContentsRect(gfx::Rect(20, 20, 180, 180)); 1896 layer->setOpaqueContentsRect(gfx::Rect(20, 20, 180, 180));
1897 1897
1898 this->resetLayerIterator(); 1898 this->resetLayerIterator();
1899 this->visitLayer(layer, occlusion); 1899 this->visitLayer(layer, occlusion);
1900 this->enterLayer(parent, occlusion); 1900 this->enterLayer(parent, occlusion);
1901 1901
1902 EXPECT_RECT_EQ(gfx::Rect(120, 120, 180, 180), occlusion.occlusionInS creenSpace().bounds()); 1902 EXPECT_RECT_EQ(gfx::Rect(120, 120, 180, 180), occlusion.occlusionInS creenSpace().bounds());
1903 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1903 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).s ize());
1904 1904
1905 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(0, 100, 100, 100))); 1905 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(0, 100, 100, 100)));
1906 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(100, 100, 100 , 100))); 1906 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(100, 100, 100 , 100)));
1907 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(200, 200, 100, 100))); 1907 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(200, 200, 100, 100)));
1908 } 1908 }
1909 1909
1910 { 1910 {
1911 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Typ es::RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 1911 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Typ es::RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
1912 layer->setOpaqueContentsRect(gfx::Rect(150, 150, 100, 100)); 1912 layer->setOpaqueContentsRect(gfx::Rect(150, 150, 100, 100));
1913 1913
1914 this->resetLayerIterator(); 1914 this->resetLayerIterator();
1915 this->visitLayer(layer, occlusion); 1915 this->visitLayer(layer, occlusion);
1916 this->enterLayer(parent, occlusion); 1916 this->enterLayer(parent, occlusion);
1917 1917
1918 EXPECT_RECT_EQ(gfx::Rect(250, 250, 50, 50), occlusion.occlusionInScr eenSpace().bounds()); 1918 EXPECT_RECT_EQ(gfx::Rect(250, 250, 50, 50), occlusion.occlusionInScr eenSpace().bounds());
1919 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 1919 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).s ize());
1920 1920
1921 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(0, 100, 100, 100))); 1921 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(0, 100, 100, 100)));
1922 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(100, 100, 100 , 100))); 1922 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(100, 100, 100 , 100)));
1923 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(200, 200, 100 , 100))); 1923 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(200, 200, 100 , 100)));
1924 } 1924 }
1925 } 1925 }
1926 }; 1926 };
1927 1927
1928 MAIN_AND_IMPL_THREAD_TEST(OcclusionTrackerTestOpaqueContentsRegionNonEmpty); 1928 MAIN_AND_IMPL_THREAD_TEST(OcclusionTrackerTestOpaqueContentsRegionNonEmpty);
1929 1929
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
2069 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, transform, gfx::PointF(0, 0), gfx::Size(100, 100), true); 2069 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren t, transform, gfx::PointF(0, 0), gfx::Size(100, 100), true);
2070 parent->setPreserves3D(true); 2070 parent->setPreserves3D(true);
2071 layer->setPreserves3D(true); 2071 layer->setPreserves3D(true);
2072 this->calcDrawEtc(parent); 2072 this->calcDrawEtc(parent);
2073 2073
2074 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 2074 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
2075 2075
2076 // The |layer| is entirely behind the camera and should not occlude. 2076 // The |layer| is entirely behind the camera and should not occlude.
2077 this->visitLayer(layer, occlusion); 2077 this->visitLayer(layer, occlusion);
2078 this->enterLayer(parent, occlusion); 2078 this->enterLayer(parent, occlusion);
2079 EXPECT_EQ(0u, occlusion.occlusionInTargetSurface().rects().size()); 2079 EXPECT_EQ(0u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2080 EXPECT_EQ(0u, occlusion.occlusionInScreenSpace().rects().size()); 2080 EXPECT_EQ(0u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2081 } 2081 }
2082 }; 2082 };
2083 2083
2084 // This test requires accumulating occlusion of 3d layers, which are skipped by the occlusion tracker on the main thread. So this test should run on the impl th read. 2084 // This test requires accumulating occlusion of 3d layers, which are skipped by the occlusion tracker on the main thread. So this test should run on the impl th read.
2085 IMPL_THREAD_TEST(OcclusionTrackerTestLayerBehindCameraDoesNotOcclude); 2085 IMPL_THREAD_TEST(OcclusionTrackerTestLayerBehindCameraDoesNotOcclude);
2086 2086
2087 template<class Types> 2087 template<class Types>
2088 class OcclusionTrackerTestLargePixelsOccludeInsideClipRect : public OcclusionTra ckerTest<Types> { 2088 class OcclusionTrackerTestLargePixelsOccludeInsideClipRect : public OcclusionTra ckerTest<Types> {
2089 protected: 2089 protected:
2090 OcclusionTrackerTestLargePixelsOccludeInsideClipRect(bool opaqueLayers) : Oc clusionTrackerTest<Types>(opaqueLayers) {} 2090 OcclusionTrackerTestLargePixelsOccludeInsideClipRect(bool opaqueLayers) : Oc clusionTrackerTest<Types>(opaqueLayers) {}
(...skipping 12 matching lines...) Expand all
2103 layer->setPreserves3D(true); 2103 layer->setPreserves3D(true);
2104 this->calcDrawEtc(parent); 2104 this->calcDrawEtc(parent);
2105 2105
2106 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 2106 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
2107 2107
2108 // This is very close to the camera, so pixels in its visibleContentRect will actually go outside of the layer's clipRect. 2108 // This is very close to the camera, so pixels in its visibleContentRect will actually go outside of the layer's clipRect.
2109 // Ensure that those pixels don't occlude things outside the clipRect. 2109 // Ensure that those pixels don't occlude things outside the clipRect.
2110 this->visitLayer(layer, occlusion); 2110 this->visitLayer(layer, occlusion);
2111 this->enterLayer(parent, occlusion); 2111 this->enterLayer(parent, occlusion);
2112 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 100), occlusion.occlusionInTargetSur face().bounds()); 2112 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 100), occlusion.occlusionInTargetSur face().bounds());
2113 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2113 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2114 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 100), occlusion.occlusionInScreenSpa ce().bounds()); 2114 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 100), occlusion.occlusionInScreenSpa ce().bounds());
2115 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2115 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2116 } 2116 }
2117 }; 2117 };
2118 2118
2119 // This test requires accumulating occlusion of 3d layers, which are skipped by the occlusion tracker on the main thread. So this test should run on the impl th read. 2119 // This test requires accumulating occlusion of 3d layers, which are skipped by the occlusion tracker on the main thread. So this test should run on the impl th read.
2120 IMPL_THREAD_TEST(OcclusionTrackerTestLargePixelsOccludeInsideClipRect); 2120 IMPL_THREAD_TEST(OcclusionTrackerTestLargePixelsOccludeInsideClipRect);
2121 2121
2122 template<class Types> 2122 template<class Types>
2123 class OcclusionTrackerTestAnimationOpacity1OnMainThread : public OcclusionTracke rTest<Types> { 2123 class OcclusionTrackerTestAnimationOpacity1OnMainThread : public OcclusionTracke rTest<Types> {
2124 protected: 2124 protected:
2125 OcclusionTrackerTestAnimationOpacity1OnMainThread(bool opaqueLayers) : Occlu sionTrackerTest<Types>(opaqueLayers) {} 2125 OcclusionTrackerTestAnimationOpacity1OnMainThread(bool opaqueLayers) : Occlu sionTrackerTest<Types>(opaqueLayers) {}
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
2252 EXPECT_TRUE(surface->screenSpaceTransformIsAnimating()); 2252 EXPECT_TRUE(surface->screenSpaceTransformIsAnimating());
2253 EXPECT_TRUE(surfaceChild->drawTransformIsAnimating()); 2253 EXPECT_TRUE(surfaceChild->drawTransformIsAnimating());
2254 EXPECT_TRUE(surfaceChild->screenSpaceTransformIsAnimating()); 2254 EXPECT_TRUE(surfaceChild->screenSpaceTransformIsAnimating());
2255 2255
2256 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 2256 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
2257 2257
2258 this->visitLayer(surface2, occlusion); 2258 this->visitLayer(surface2, occlusion);
2259 this->enterContributingSurface(surface2, occlusion); 2259 this->enterContributingSurface(surface2, occlusion);
2260 2260
2261 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 300), occlusion.occlusionInScreenSpac e().bounds()); 2261 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 300), occlusion.occlusionInScreenSpac e().bounds());
2262 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2262 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2263 2263
2264 this->leaveContributingSurface(surface2, occlusion); 2264 this->leaveContributingSurface(surface2, occlusion);
2265 this->enterLayer(surfaceChild2, occlusion); 2265 this->enterLayer(surfaceChild2, occlusion);
2266 2266
2267 // surfaceChild2 is moving in screen space but not relative to its targe t, so occlusion should happen in its target space only. 2267 // surfaceChild2 is moving in screen space but not relative to its targe t, so occlusion should happen in its target space only.
2268 // It also means that things occluding in screen space (e.g. surface2) c annot occlude this layer. 2268 // It also means that things occluding in screen space (e.g. surface2) c annot occlude this layer.
2269 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 300), occlusion.unoccludedLayerConte ntRect(surfaceChild2, gfx::Rect(0, 0, 100, 300))); 2269 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 300), occlusion.unoccludedLayerConte ntRect(surfaceChild2, gfx::Rect(0, 0, 100, 300)));
2270 EXPECT_FALSE(occlusion.occludedLayer(surfaceChild, gfx::Rect(0, 0, 50, 3 00))); 2270 EXPECT_FALSE(occlusion.occludedLayer(surfaceChild, gfx::Rect(0, 0, 50, 3 00)));
2271 2271
2272 this->leaveLayer(surfaceChild2, occlusion); 2272 this->leaveLayer(surfaceChild2, occlusion);
2273 this->enterLayer(surfaceChild, occlusion); 2273 this->enterLayer(surfaceChild, occlusion);
2274 EXPECT_FALSE(occlusion.occludedLayer(surfaceChild, gfx::Rect(0, 0, 100, 300))); 2274 EXPECT_FALSE(occlusion.occludedLayer(surfaceChild, gfx::Rect(0, 0, 100, 300)));
2275 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 300), occlusion.occlusionInScreenSpac e().bounds()); 2275 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 300), occlusion.occlusionInScreenSpac e().bounds());
2276 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2276 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2277 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 300), occlusion.occlusionInTargetSur face().bounds()); 2277 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 300), occlusion.occlusionInTargetSur face().bounds());
2278 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2278 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2279 EXPECT_RECT_EQ(gfx::Rect(100, 0, 200, 300), occlusion.unoccludedLayerCon tentRect(surface, gfx::Rect(0, 0, 300, 300))); 2279 EXPECT_RECT_EQ(gfx::Rect(100, 0, 200, 300), occlusion.unoccludedLayerCon tentRect(surface, gfx::Rect(0, 0, 300, 300)));
2280 2280
2281 // The surfaceChild is occluded by the surfaceChild2, but is moving rela tive its target and the screen, so it 2281 // The surfaceChild is occluded by the surfaceChild2, but is moving rela tive its target and the screen, so it
2282 // can't be occluded. 2282 // can't be occluded.
2283 EXPECT_RECT_EQ(gfx::Rect(0, 0, 200, 300), occlusion.unoccludedLayerConte ntRect(surfaceChild, gfx::Rect(0, 0, 200, 300))); 2283 EXPECT_RECT_EQ(gfx::Rect(0, 0, 200, 300), occlusion.unoccludedLayerConte ntRect(surfaceChild, gfx::Rect(0, 0, 200, 300)));
2284 EXPECT_FALSE(occlusion.occludedLayer(surfaceChild, gfx::Rect(0, 0, 50, 3 00))); 2284 EXPECT_FALSE(occlusion.occludedLayer(surfaceChild, gfx::Rect(0, 0, 50, 3 00)));
2285 2285
2286 this->leaveLayer(surfaceChild, occlusion); 2286 this->leaveLayer(surfaceChild, occlusion);
2287 this->enterLayer(surface, occlusion); 2287 this->enterLayer(surface, occlusion);
2288 // The surfaceChild is moving in screen space but not relative to its ta rget, so occlusion should happen in its target space only. 2288 // The surfaceChild is moving in screen space but not relative to its ta rget, so occlusion should happen in its target space only.
2289 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 300), occlusion.occlusionInScreenSpac e().bounds()); 2289 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 300), occlusion.occlusionInScreenSpac e().bounds());
2290 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2290 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2291 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 300), occlusion.occlusionInTargetSur face().bounds()); 2291 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 300), occlusion.occlusionInTargetSur face().bounds());
2292 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2292 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2293 EXPECT_RECT_EQ(gfx::Rect(100, 0, 200, 300), occlusion.unoccludedLayerCon tentRect(surface, gfx::Rect(0, 0, 300, 300))); 2293 EXPECT_RECT_EQ(gfx::Rect(100, 0, 200, 300), occlusion.unoccludedLayerCon tentRect(surface, gfx::Rect(0, 0, 300, 300)));
2294 2294
2295 this->leaveLayer(surface, occlusion); 2295 this->leaveLayer(surface, occlusion);
2296 // The surface's owning layer is moving in screen space but not relative to its target, so occlusion should happen in its target space only. 2296 // The surface's owning layer is moving in screen space but not relative to its target, so occlusion should happen in its target space only.
2297 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 300), occlusion.occlusionInScreenSpac e().bounds()); 2297 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 300), occlusion.occlusionInScreenSpac e().bounds());
2298 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2298 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2299 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 300), occlusion.occlusionInTargetSur face().bounds()); 2299 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 300), occlusion.occlusionInTargetSur face().bounds());
2300 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2300 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2301 EXPECT_RECT_EQ(gfx::Rect(0, 0, 0, 0), occlusion.unoccludedLayerContentRe ct(surface, gfx::Rect(0, 0, 300, 300))); 2301 EXPECT_RECT_EQ(gfx::Rect(0, 0, 0, 0), occlusion.unoccludedLayerContentRe ct(surface, gfx::Rect(0, 0, 300, 300)));
2302 2302
2303 this->enterContributingSurface(surface, occlusion); 2303 this->enterContributingSurface(surface, occlusion);
2304 // The contributing |surface| is animating so it can't be occluded. 2304 // The contributing |surface| is animating so it can't be occluded.
2305 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 300), occlusion.unoccludedContributi ngSurfaceContentRect(surface, false, gfx::Rect(0, 0, 300, 300))); 2305 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 300), occlusion.unoccludedContributi ngSurfaceContentRect(surface, false, gfx::Rect(0, 0, 300, 300)));
2306 this->leaveContributingSurface(surface, occlusion); 2306 this->leaveContributingSurface(surface, occlusion);
2307 2307
2308 this->enterLayer(layer, occlusion); 2308 this->enterLayer(layer, occlusion);
2309 // The |surface| is moving in the screen and in its target, so all occlu sion within the surface is lost when leaving it. 2309 // The |surface| is moving in the screen and in its target, so all occlu sion within the surface is lost when leaving it.
2310 EXPECT_RECT_EQ(gfx::Rect(50, 0, 250, 300), occlusion.unoccludedLayerCont entRect(parent, gfx::Rect(0, 0, 300, 300))); 2310 EXPECT_RECT_EQ(gfx::Rect(50, 0, 250, 300), occlusion.unoccludedLayerCont entRect(parent, gfx::Rect(0, 0, 300, 300)));
(...skipping 24 matching lines...) Expand all
2335 surface->setOpaqueContentsRect(gfx::Rect(0, 0, 200, 200)); 2335 surface->setOpaqueContentsRect(gfx::Rect(0, 0, 200, 200));
2336 surface2->setOpaqueContentsRect(gfx::Rect(0, 0, 200, 200)); 2336 surface2->setOpaqueContentsRect(gfx::Rect(0, 0, 200, 200));
2337 this->calcDrawEtc(parent); 2337 this->calcDrawEtc(parent);
2338 2338
2339 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 2339 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
2340 2340
2341 this->visitLayer(surface2, occlusion); 2341 this->visitLayer(surface2, occlusion);
2342 this->visitContributingSurface(surface2, occlusion); 2342 this->visitContributingSurface(surface2, occlusion);
2343 2343
2344 EXPECT_RECT_EQ(gfx::Rect(50, 50, 200, 200), occlusion.occlusionInScreenS pace().bounds()); 2344 EXPECT_RECT_EQ(gfx::Rect(50, 50, 200, 200), occlusion.occlusionInScreenS pace().bounds());
2345 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2345 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2346 EXPECT_RECT_EQ(gfx::Rect(50, 50, 200, 200), occlusion.occlusionInTargetS urface().bounds()); 2346 EXPECT_RECT_EQ(gfx::Rect(50, 50, 200, 200), occlusion.occlusionInTargetS urface().bounds());
2347 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2347 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2348 2348
2349 // Clear any stored occlusion. 2349 // Clear any stored occlusion.
2350 occlusion.setOcclusionInScreenSpace(Region()); 2350 occlusion.setOcclusionInScreenSpace(Region());
2351 occlusion.setOcclusionInTargetSurface(Region()); 2351 occlusion.setOcclusionInTargetSurface(Region());
2352 2352
2353 this->visitLayer(surface, occlusion); 2353 this->visitLayer(surface, occlusion);
2354 this->visitContributingSurface(surface, occlusion); 2354 this->visitContributingSurface(surface, occlusion);
2355 2355
2356 EXPECT_RECT_EQ(gfx::Rect(0, 0, 400, 400), occlusion.occlusionInScreenSpa ce().bounds()); 2356 EXPECT_RECT_EQ(gfx::Rect(0, 0, 400, 400), occlusion.occlusionInScreenSpa ce().bounds());
2357 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2357 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2358 EXPECT_RECT_EQ(gfx::Rect(0, 0, 400, 400), occlusion.occlusionInTargetSur face().bounds()); 2358 EXPECT_RECT_EQ(gfx::Rect(0, 0, 400, 400), occlusion.occlusionInTargetSur face().bounds());
2359 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2359 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2360 } 2360 }
2361 }; 2361 };
2362 2362
2363 MAIN_AND_IMPL_THREAD_TEST(OcclusionTrackerTestSurfaceOcclusionTranslatesToParent ); 2363 MAIN_AND_IMPL_THREAD_TEST(OcclusionTrackerTestSurfaceOcclusionTranslatesToParent );
2364 2364
2365 template<class Types> 2365 template<class Types>
2366 class OcclusionTrackerTestSurfaceOcclusionTranslatesWithClipping : public Occlus ionTrackerTest<Types> { 2366 class OcclusionTrackerTestSurfaceOcclusionTranslatesWithClipping : public Occlus ionTrackerTest<Types> {
2367 protected: 2367 protected:
2368 OcclusionTrackerTestSurfaceOcclusionTranslatesWithClipping(bool opaqueLayers ) : OcclusionTrackerTest<Types>(opaqueLayers) {} 2368 OcclusionTrackerTestSurfaceOcclusionTranslatesWithClipping(bool opaqueLayers ) : OcclusionTrackerTest<Types>(opaqueLayers) {}
2369 void runMyTest() 2369 void runMyTest()
2370 { 2370 {
2371 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, gfx::PointF(0, 0), gfx::Size(300, 300)); 2371 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, gfx::PointF(0, 0), gfx::Size(300, 300));
2372 parent->setMasksToBounds(true); 2372 parent->setMasksToBounds(true);
2373 typename Types::ContentLayerType* surface = this->createDrawingSurface(p arent, this->identityMatrix, gfx::PointF(0, 0), gfx::Size(500, 300), false); 2373 typename Types::ContentLayerType* surface = this->createDrawingSurface(p arent, this->identityMatrix, gfx::PointF(0, 0), gfx::Size(500, 300), false);
2374 surface->setOpaqueContentsRect(gfx::Rect(0, 0, 400, 200)); 2374 surface->setOpaqueContentsRect(gfx::Rect(0, 0, 400, 200));
2375 this->calcDrawEtc(parent); 2375 this->calcDrawEtc(parent);
2376 2376
2377 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 2377 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
2378 2378
2379 this->visitLayer(surface, occlusion); 2379 this->visitLayer(surface, occlusion);
2380 this->visitContributingSurface(surface, occlusion); 2380 this->visitContributingSurface(surface, occlusion);
2381 2381
2382 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 200), occlusion.occlusionInScreenSpa ce().bounds()); 2382 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 200), occlusion.occlusionInScreenSpa ce().bounds());
2383 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2383 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2384 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 200), occlusion.occlusionInTargetSur face().bounds()); 2384 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 200), occlusion.occlusionInTargetSur face().bounds());
2385 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2385 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2386 } 2386 }
2387 }; 2387 };
2388 2388
2389 MAIN_AND_IMPL_THREAD_TEST(OcclusionTrackerTestSurfaceOcclusionTranslatesWithClip ping); 2389 MAIN_AND_IMPL_THREAD_TEST(OcclusionTrackerTestSurfaceOcclusionTranslatesWithClip ping);
2390 2390
2391 template<class Types> 2391 template<class Types>
2392 class OcclusionTrackerTestReplicaOccluded : public OcclusionTrackerTest<Types> { 2392 class OcclusionTrackerTestReplicaOccluded : public OcclusionTrackerTest<Types> {
2393 protected: 2393 protected:
2394 OcclusionTrackerTestReplicaOccluded(bool opaqueLayers) : OcclusionTrackerTes t<Types>(opaqueLayers) {} 2394 OcclusionTrackerTestReplicaOccluded(bool opaqueLayers) : OcclusionTrackerTes t<Types>(opaqueLayers) {}
2395 void runMyTest() 2395 void runMyTest()
2396 { 2396 {
2397 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 200)); 2397 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 200));
2398 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 100), true); 2398 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 100), true);
2399 this->createReplicaLayer(surface, this->identityMatrix, gfx::PointF(0, 1 00), gfx::Size(100, 100)); 2399 this->createReplicaLayer(surface, this->identityMatrix, gfx::PointF(0, 1 00), gfx::Size(100, 100));
2400 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th is->identityMatrix, gfx::PointF(0, 100), gfx::Size(100, 100), true); 2400 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th is->identityMatrix, gfx::PointF(0, 100), gfx::Size(100, 100), true);
2401 this->calcDrawEtc(parent); 2401 this->calcDrawEtc(parent);
2402 2402
2403 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 2403 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
2404 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); 2404 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000));
2405 2405
2406 // |topmost| occludes the replica, but not the surface itself. 2406 // |topmost| occludes the replica, but not the surface itself.
2407 this->visitLayer(topmost, occlusion); 2407 this->visitLayer(topmost, occlusion);
2408 2408
2409 EXPECT_RECT_EQ(gfx::Rect(0, 100, 100, 100), occlusion.occlusionInScreenS pace().bounds()); 2409 EXPECT_RECT_EQ(gfx::Rect(0, 100, 100, 100), occlusion.occlusionInScreenS pace().bounds());
2410 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2410 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2411 EXPECT_RECT_EQ(gfx::Rect(0, 100, 100, 100), occlusion.occlusionInTargetS urface().bounds()); 2411 EXPECT_RECT_EQ(gfx::Rect(0, 100, 100, 100), occlusion.occlusionInTargetS urface().bounds());
2412 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2412 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2413 2413
2414 this->visitLayer(surface, occlusion); 2414 this->visitLayer(surface, occlusion);
2415 2415
2416 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 200), occlusion.occlusionInScreenSpa ce().bounds()); 2416 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 200), occlusion.occlusionInScreenSpa ce().bounds());
2417 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2417 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2418 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 100), occlusion.occlusionInTargetSur face().bounds()); 2418 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 100), occlusion.occlusionInTargetSur face().bounds());
2419 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2419 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2420 2420
2421 this->enterContributingSurface(surface, occlusion); 2421 this->enterContributingSurface(surface, occlusion);
2422 2422
2423 // Surface is not occluded so it shouldn't think it is. 2423 // Surface is not occluded so it shouldn't think it is.
2424 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 100), occlusion.unoccludedContributi ngSurfaceContentRect(surface, false, gfx::Rect(0, 0, 100, 100))); 2424 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 100), occlusion.unoccludedContributi ngSurfaceContentRect(surface, false, gfx::Rect(0, 0, 100, 100)));
2425 } 2425 }
2426 }; 2426 };
2427 2427
2428 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReplicaOccluded); 2428 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReplicaOccluded);
2429 2429
2430 template<class Types> 2430 template<class Types>
2431 class OcclusionTrackerTestSurfaceWithReplicaUnoccluded : public OcclusionTracker Test<Types> { 2431 class OcclusionTrackerTestSurfaceWithReplicaUnoccluded : public OcclusionTracker Test<Types> {
2432 protected: 2432 protected:
2433 OcclusionTrackerTestSurfaceWithReplicaUnoccluded(bool opaqueLayers) : Occlus ionTrackerTest<Types>(opaqueLayers) {} 2433 OcclusionTrackerTestSurfaceWithReplicaUnoccluded(bool opaqueLayers) : Occlus ionTrackerTest<Types>(opaqueLayers) {}
2434 void runMyTest() 2434 void runMyTest()
2435 { 2435 {
2436 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 200)); 2436 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 200));
2437 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 100), true); 2437 typename Types::LayerType* surface = this->createDrawingSurface(parent, this->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 100), true);
2438 this->createReplicaLayer(surface, this->identityMatrix, gfx::PointF(0, 1 00), gfx::Size(100, 100)); 2438 this->createReplicaLayer(surface, this->identityMatrix, gfx::PointF(0, 1 00), gfx::Size(100, 100));
2439 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th is->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 110), true); 2439 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th is->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 110), true);
2440 this->calcDrawEtc(parent); 2440 this->calcDrawEtc(parent);
2441 2441
2442 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 2442 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
2443 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); 2443 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000));
2444 2444
2445 // |topmost| occludes the surface, but not the entire surface's replica. 2445 // |topmost| occludes the surface, but not the entire surface's replica.
2446 this->visitLayer(topmost, occlusion); 2446 this->visitLayer(topmost, occlusion);
2447 2447
2448 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 110), occlusion.occlusionInScreenSpa ce().bounds()); 2448 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 110), occlusion.occlusionInScreenSpa ce().bounds());
2449 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2449 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2450 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 110), occlusion.occlusionInTargetSur face().bounds()); 2450 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 110), occlusion.occlusionInTargetSur face().bounds());
2451 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2451 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2452 2452
2453 this->visitLayer(surface, occlusion); 2453 this->visitLayer(surface, occlusion);
2454 2454
2455 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 110), occlusion.occlusionInScreenSpa ce().bounds()); 2455 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 110), occlusion.occlusionInScreenSpa ce().bounds());
2456 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2456 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2457 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 100), occlusion.occlusionInTargetSur face().bounds()); 2457 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 100), occlusion.occlusionInTargetSur face().bounds());
2458 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2458 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2459 2459
2460 this->enterContributingSurface(surface, occlusion); 2460 this->enterContributingSurface(surface, occlusion);
2461 2461
2462 // Surface is occluded, but only the top 10px of the replica. 2462 // Surface is occluded, but only the top 10px of the replica.
2463 EXPECT_RECT_EQ(gfx::Rect(0, 0, 0, 0), occlusion.unoccludedContributingSu rfaceContentRect(surface, false, gfx::Rect(0, 0, 100, 100))); 2463 EXPECT_RECT_EQ(gfx::Rect(0, 0, 0, 0), occlusion.unoccludedContributingSu rfaceContentRect(surface, false, gfx::Rect(0, 0, 100, 100)));
2464 EXPECT_RECT_EQ(gfx::Rect(0, 10, 100, 90), occlusion.unoccludedContributi ngSurfaceContentRect(surface, true, gfx::Rect(0, 0, 100, 100))); 2464 EXPECT_RECT_EQ(gfx::Rect(0, 10, 100, 90), occlusion.unoccludedContributi ngSurfaceContentRect(surface, true, gfx::Rect(0, 0, 100, 100)));
2465 } 2465 }
2466 }; 2466 };
2467 2467
2468 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceWithReplicaUnoccluded); 2468 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceWithReplicaUnoccluded);
(...skipping 12 matching lines...) Expand all
2481 this->calcDrawEtc(parent); 2481 this->calcDrawEtc(parent);
2482 2482
2483 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 2483 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
2484 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); 2484 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000));
2485 2485
2486 // These occlude the surface and replica differently, so we can test eac h one. 2486 // These occlude the surface and replica differently, so we can test eac h one.
2487 this->visitLayer(overReplica, occlusion); 2487 this->visitLayer(overReplica, occlusion);
2488 this->visitLayer(overSurface, occlusion); 2488 this->visitLayer(overSurface, occlusion);
2489 2489
2490 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 200), occlusion.occlusionInScreenSpac e().bounds()); 2490 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 200), occlusion.occlusionInScreenSpac e().bounds());
2491 EXPECT_EQ(2u, occlusion.occlusionInScreenSpace().rects().size()); 2491 EXPECT_EQ(2u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2492 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 200), occlusion.occlusionInTargetSurf ace().bounds()); 2492 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 200), occlusion.occlusionInTargetSurf ace().bounds());
2493 EXPECT_EQ(2u, occlusion.occlusionInTargetSurface().rects().size()); 2493 EXPECT_EQ(2u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2494 2494
2495 this->visitLayer(surface, occlusion); 2495 this->visitLayer(surface, occlusion);
2496 2496
2497 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 200), occlusion.occlusionInScreenSpa ce().bounds()); 2497 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 200), occlusion.occlusionInScreenSpa ce().bounds());
2498 EXPECT_EQ(2u, occlusion.occlusionInScreenSpace().rects().size()); 2498 EXPECT_EQ(2u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2499 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 100), occlusion.occlusionInTargetSur face().bounds()); 2499 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 100), occlusion.occlusionInTargetSur face().bounds());
2500 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2500 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2501 2501
2502 this->enterContributingSurface(surface, occlusion); 2502 this->enterContributingSurface(surface, occlusion);
2503 2503
2504 // Surface and replica are occluded different amounts. 2504 // Surface and replica are occluded different amounts.
2505 EXPECT_RECT_EQ(gfx::Rect(40, 0, 60, 100), occlusion.unoccludedContributi ngSurfaceContentRect(surface, false, gfx::Rect(0, 0, 100, 100))); 2505 EXPECT_RECT_EQ(gfx::Rect(40, 0, 60, 100), occlusion.unoccludedContributi ngSurfaceContentRect(surface, false, gfx::Rect(0, 0, 100, 100)));
2506 EXPECT_RECT_EQ(gfx::Rect(50, 0, 50, 100), occlusion.unoccludedContributi ngSurfaceContentRect(surface, true, gfx::Rect(0, 0, 100, 100))); 2506 EXPECT_RECT_EQ(gfx::Rect(50, 0, 50, 100), occlusion.unoccludedContributi ngSurfaceContentRect(surface, true, gfx::Rect(0, 0, 100, 100)));
2507 } 2507 }
2508 }; 2508 };
2509 2509
2510 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceAndReplicaOccludedDifferent ly); 2510 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceAndReplicaOccludedDifferent ly);
(...skipping 11 matching lines...) Expand all
2522 typename Types::LayerType* surfaceChild = this->createDrawingSurface(sur face, this->identityMatrix, gfx::PointF(0, 10), gfx::Size(100, 50), true); 2522 typename Types::LayerType* surfaceChild = this->createDrawingSurface(sur face, this->identityMatrix, gfx::PointF(0, 10), gfx::Size(100, 50), true);
2523 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th is->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 50), true); 2523 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th is->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 50), true);
2524 this->calcDrawEtc(parent); 2524 this->calcDrawEtc(parent);
2525 2525
2526 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(-100, -100, 1000, 1000)); 2526 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(-100, -100, 1000, 1000));
2527 2527
2528 // |topmost| occludes everything partially so we know occlusion is happe ning at all. 2528 // |topmost| occludes everything partially so we know occlusion is happe ning at all.
2529 this->visitLayer(topmost, occlusion); 2529 this->visitLayer(topmost, occlusion);
2530 2530
2531 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 50), occlusion.occlusionInScreenSpac e().bounds()); 2531 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 50), occlusion.occlusionInScreenSpac e().bounds());
2532 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2532 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2533 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 50), occlusion.occlusionInTargetSurf ace().bounds()); 2533 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 50), occlusion.occlusionInTargetSurf ace().bounds());
2534 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2534 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2535 2535
2536 this->visitLayer(surfaceChild, occlusion); 2536 this->visitLayer(surfaceChild, occlusion);
2537 2537
2538 // surfaceChild increases the occlusion in the screen by a narrow sliver . 2538 // surfaceChild increases the occlusion in the screen by a narrow sliver .
2539 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 60), occlusion.occlusionInScreenSpac e().bounds()); 2539 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 60), occlusion.occlusionInScreenSpac e().bounds());
2540 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2540 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2541 // In its own surface, surfaceChild is at 0,0 as is its occlusion. 2541 // In its own surface, surfaceChild is at 0,0 as is its occlusion.
2542 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 50), occlusion.occlusionInTargetSurf ace().bounds()); 2542 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 50), occlusion.occlusionInTargetSurf ace().bounds());
2543 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2543 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2544 2544
2545 // The root layer always has a clipRect. So the parent of |surface| has a clipRect. However, the owning layer for |surface| does not 2545 // The root layer always has a clipRect. So the parent of |surface| has a clipRect. However, the owning layer for |surface| does not
2546 // mask to bounds, so it doesn't have a clipRect of its own. Thus the pa rent of |surfaceChild| exercises different code paths 2546 // mask to bounds, so it doesn't have a clipRect of its own. Thus the pa rent of |surfaceChild| exercises different code paths
2547 // as its parent does not have a clipRect. 2547 // as its parent does not have a clipRect.
2548 2548
2549 this->enterContributingSurface(surfaceChild, occlusion); 2549 this->enterContributingSurface(surfaceChild, occlusion);
2550 // The surfaceChild's parent does not have a clipRect as it owns a rende r surface. Make sure the unoccluded rect 2550 // The surfaceChild's parent does not have a clipRect as it owns a rende r surface. Make sure the unoccluded rect
2551 // does not get clipped away inappropriately. 2551 // does not get clipped away inappropriately.
2552 EXPECT_RECT_EQ(gfx::Rect(0, 40, 100, 10), occlusion.unoccludedContributi ngSurfaceContentRect(surfaceChild, false, gfx::Rect(0, 0, 100, 50))); 2552 EXPECT_RECT_EQ(gfx::Rect(0, 40, 100, 10), occlusion.unoccludedContributi ngSurfaceContentRect(surfaceChild, false, gfx::Rect(0, 0, 100, 50)));
2553 this->leaveContributingSurface(surfaceChild, occlusion); 2553 this->leaveContributingSurface(surfaceChild, occlusion);
2554 2554
2555 // When the surfaceChild's occlusion is transformed up to its parent, ma ke sure it is not clipped away inappropriately also. 2555 // When the surfaceChild's occlusion is transformed up to its parent, ma ke sure it is not clipped away inappropriately also.
2556 this->enterLayer(surface, occlusion); 2556 this->enterLayer(surface, occlusion);
2557 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 60), occlusion.occlusionInScreenSpac e().bounds()); 2557 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 60), occlusion.occlusionInScreenSpac e().bounds());
2558 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2558 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2559 EXPECT_RECT_EQ(gfx::Rect(0, 10, 100, 50), occlusion.occlusionInTargetSur face().bounds()); 2559 EXPECT_RECT_EQ(gfx::Rect(0, 10, 100, 50), occlusion.occlusionInTargetSur face().bounds());
2560 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2560 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2561 this->leaveLayer(surface, occlusion); 2561 this->leaveLayer(surface, occlusion);
2562 2562
2563 this->enterContributingSurface(surface, occlusion); 2563 this->enterContributingSurface(surface, occlusion);
2564 // The surface's parent does have a clipRect as it is the root layer. 2564 // The surface's parent does have a clipRect as it is the root layer.
2565 EXPECT_RECT_EQ(gfx::Rect(0, 50, 100, 50), occlusion.unoccludedContributi ngSurfaceContentRect(surface, false, gfx::Rect(0, 0, 100, 100))); 2565 EXPECT_RECT_EQ(gfx::Rect(0, 50, 100, 50), occlusion.unoccludedContributi ngSurfaceContentRect(surface, false, gfx::Rect(0, 0, 100, 100)));
2566 } 2566 }
2567 }; 2567 };
2568 2568
2569 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceChildOfSurface); 2569 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceChildOfSurface);
2570 2570
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
2623 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th is->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 50), true); 2623 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th is->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 50), true);
2624 this->calcDrawEtc(parent); 2624 this->calcDrawEtc(parent);
2625 2625
2626 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 2626 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
2627 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); 2627 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000));
2628 2628
2629 // |topmost| occludes everything partially so we know occlusion is happe ning at all. 2629 // |topmost| occludes everything partially so we know occlusion is happe ning at all.
2630 this->visitLayer(topmost, occlusion); 2630 this->visitLayer(topmost, occlusion);
2631 2631
2632 EXPECT_RECT_EQ(gfx::Rect(0, 0, 80, 50), occlusion.occlusionInScreenSpace ().bounds()); 2632 EXPECT_RECT_EQ(gfx::Rect(0, 0, 80, 50), occlusion.occlusionInScreenSpace ().bounds());
2633 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2633 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2634 EXPECT_RECT_EQ(gfx::Rect(0, 0, 80, 50), occlusion.occlusionInTargetSurfa ce().bounds()); 2634 EXPECT_RECT_EQ(gfx::Rect(0, 0, 80, 50), occlusion.occlusionInTargetSurfa ce().bounds());
2635 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2635 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2636 2636
2637 // surfaceChild is not opaque and does not occlude, so we have a non-emp ty unoccluded area on surface. 2637 // surfaceChild is not opaque and does not occlude, so we have a non-emp ty unoccluded area on surface.
2638 this->visitLayer(surfaceChild, occlusion); 2638 this->visitLayer(surfaceChild, occlusion);
2639 2639
2640 EXPECT_RECT_EQ(gfx::Rect(0, 0, 80, 50), occlusion.occlusionInScreenSpace ().bounds()); 2640 EXPECT_RECT_EQ(gfx::Rect(0, 0, 80, 50), occlusion.occlusionInScreenSpace ().bounds());
2641 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2641 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2642 EXPECT_RECT_EQ(gfx::Rect(0, 0, 0, 0), occlusion.occlusionInTargetSurface ().bounds()); 2642 EXPECT_RECT_EQ(gfx::Rect(0, 0, 0, 0), occlusion.occlusionInTargetSurface ().bounds());
2643 EXPECT_EQ(0u, occlusion.occlusionInTargetSurface().rects().size()); 2643 EXPECT_EQ(0u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2644 2644
2645 // The root layer always has a clipRect. So the parent of |surface| has a clipRect. However, the owning layer for |surface| does not 2645 // The root layer always has a clipRect. So the parent of |surface| has a clipRect. However, the owning layer for |surface| does not
2646 // mask to bounds, so it doesn't have a clipRect of its own. Thus the pa rent of |surfaceChild| exercises different code paths 2646 // mask to bounds, so it doesn't have a clipRect of its own. Thus the pa rent of |surfaceChild| exercises different code paths
2647 // as its parent does not have a clipRect. 2647 // as its parent does not have a clipRect.
2648 2648
2649 this->enterContributingSurface(surfaceChild, occlusion); 2649 this->enterContributingSurface(surfaceChild, occlusion);
2650 // The surfaceChild's parent does not have a clipRect as it owns a rende r surface. 2650 // The surfaceChild's parent does not have a clipRect as it owns a rende r surface.
2651 EXPECT_RECT_EQ(gfx::Rect(0, 50, 80, 50), occlusion.unoccludedContributin gSurfaceContentRect(surfaceChild, false, gfx::Rect(0, 0, 100, 100))); 2651 EXPECT_RECT_EQ(gfx::Rect(0, 50, 80, 50), occlusion.unoccludedContributin gSurfaceContentRect(surfaceChild, false, gfx::Rect(0, 0, 100, 100)));
2652 this->leaveContributingSurface(surfaceChild, occlusion); 2652 this->leaveContributingSurface(surfaceChild, occlusion);
2653 2653
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2697 2697
2698 // These layers occlude pixels directly beside the filteredSurface. Beca use filtered surface blends pixels in a radius, it will 2698 // These layers occlude pixels directly beside the filteredSurface. Beca use filtered surface blends pixels in a radius, it will
2699 // need to see some of the pixels (up to radius far) underneath the occl udingLayers. 2699 // need to see some of the pixels (up to radius far) underneath the occl udingLayers.
2700 this->visitLayer(occludingLayer5, occlusion); 2700 this->visitLayer(occludingLayer5, occlusion);
2701 this->visitLayer(occludingLayer4, occlusion); 2701 this->visitLayer(occludingLayer4, occlusion);
2702 this->visitLayer(occludingLayer3, occlusion); 2702 this->visitLayer(occludingLayer3, occlusion);
2703 this->visitLayer(occludingLayer2, occlusion); 2703 this->visitLayer(occludingLayer2, occlusion);
2704 this->visitLayer(occludingLayer1, occlusion); 2704 this->visitLayer(occludingLayer1, occlusion);
2705 2705
2706 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 150), occlusion.occlusionInScreenSpa ce().bounds()); 2706 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 150), occlusion.occlusionInScreenSpa ce().bounds());
2707 EXPECT_EQ(5u, occlusion.occlusionInScreenSpace().rects().size()); 2707 EXPECT_EQ(5u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2708 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 150), occlusion.occlusionInTargetSur face().bounds()); 2708 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 150), occlusion.occlusionInTargetSur face().bounds());
2709 EXPECT_EQ(5u, occlusion.occlusionInTargetSurface().rects().size()); 2709 EXPECT_EQ(5u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2710 2710
2711 // Everything outside the surface/replica is occluded but the surface/re plica itself is not. 2711 // Everything outside the surface/replica is occluded but the surface/re plica itself is not.
2712 this->enterLayer(filteredSurface, occlusion); 2712 this->enterLayer(filteredSurface, occlusion);
2713 EXPECT_RECT_EQ(gfx::Rect(1, 0, 99, 100), occlusion.unoccludedLayerConten tRect(filteredSurface, gfx::Rect(1, 0, 100, 100))); 2713 EXPECT_RECT_EQ(gfx::Rect(1, 0, 99, 100), occlusion.unoccludedLayerConten tRect(filteredSurface, gfx::Rect(1, 0, 100, 100)));
2714 EXPECT_RECT_EQ(gfx::Rect(0, 1, 100, 99), occlusion.unoccludedLayerConten tRect(filteredSurface, gfx::Rect(0, 1, 100, 100))); 2714 EXPECT_RECT_EQ(gfx::Rect(0, 1, 100, 99), occlusion.unoccludedLayerConten tRect(filteredSurface, gfx::Rect(0, 1, 100, 100)));
2715 EXPECT_RECT_EQ(gfx::Rect(0, 0, 99, 100), occlusion.unoccludedLayerConten tRect(filteredSurface, gfx::Rect(-1, 0, 100, 100))); 2715 EXPECT_RECT_EQ(gfx::Rect(0, 0, 99, 100), occlusion.unoccludedLayerConten tRect(filteredSurface, gfx::Rect(-1, 0, 100, 100)));
2716 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 99), occlusion.unoccludedLayerConten tRect(filteredSurface, gfx::Rect(0, -1, 100, 100))); 2716 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 99), occlusion.unoccludedLayerConten tRect(filteredSurface, gfx::Rect(0, -1, 100, 100)));
2717 2717
2718 EXPECT_RECT_EQ(gfx::Rect(300 + 1, 0, 99, 100), occlusion.unoccludedLayer ContentRect(filteredSurface, gfx::Rect(300 + 1, 0, 100, 100))); 2718 EXPECT_RECT_EQ(gfx::Rect(300 + 1, 0, 99, 100), occlusion.unoccludedLayer ContentRect(filteredSurface, gfx::Rect(300 + 1, 0, 100, 100)));
2719 EXPECT_RECT_EQ(gfx::Rect(300 + 0, 1, 100, 99), occlusion.unoccludedLayer ContentRect(filteredSurface, gfx::Rect(300 + 0, 1, 100, 100))); 2719 EXPECT_RECT_EQ(gfx::Rect(300 + 0, 1, 100, 99), occlusion.unoccludedLayer ContentRect(filteredSurface, gfx::Rect(300 + 0, 1, 100, 100)));
2720 EXPECT_RECT_EQ(gfx::Rect(300 + 0, 0, 99, 100), occlusion.unoccludedLayer ContentRect(filteredSurface, gfx::Rect(300 - 1, 0, 100, 100))); 2720 EXPECT_RECT_EQ(gfx::Rect(300 + 0, 0, 99, 100), occlusion.unoccludedLayer ContentRect(filteredSurface, gfx::Rect(300 - 1, 0, 100, 100)));
2721 EXPECT_RECT_EQ(gfx::Rect(300 + 0, 0, 100, 99), occlusion.unoccludedLayer ContentRect(filteredSurface, gfx::Rect(300 + 0, -1, 100, 100))); 2721 EXPECT_RECT_EQ(gfx::Rect(300 + 0, 0, 100, 99), occlusion.unoccludedLayer ContentRect(filteredSurface, gfx::Rect(300 + 0, -1, 100, 100)));
2722 this->leaveLayer(filteredSurface, occlusion); 2722 this->leaveLayer(filteredSurface, occlusion);
2723 2723
2724 // The filtered layer/replica does not occlude. 2724 // The filtered layer/replica does not occlude.
2725 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 150), occlusion.occlusionInScreenSpa ce().bounds()); 2725 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 150), occlusion.occlusionInScreenSpa ce().bounds());
2726 EXPECT_EQ(5u, occlusion.occlusionInScreenSpace().rects().size()); 2726 EXPECT_EQ(5u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2727 EXPECT_RECT_EQ(gfx::Rect(0, 0, 0, 0), occlusion.occlusionInTargetSurface ().bounds()); 2727 EXPECT_RECT_EQ(gfx::Rect(0, 0, 0, 0), occlusion.occlusionInTargetSurface ().bounds());
2728 EXPECT_EQ(0u, occlusion.occlusionInTargetSurface().rects().size()); 2728 EXPECT_EQ(0u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2729 2729
2730 // The surface has a background blur, so it needs pixels that are curren tly considered occluded in order to be drawn. So the pixels 2730 // The surface has a background blur, so it needs pixels that are curren tly considered occluded in order to be drawn. So the pixels
2731 // it needs should be removed some the occluded area so that when we get to the parent they are drawn. 2731 // it needs should be removed some the occluded area so that when we get to the parent they are drawn.
2732 this->visitContributingSurface(filteredSurface, occlusion); 2732 this->visitContributingSurface(filteredSurface, occlusion);
2733 2733
2734 this->enterLayer(parent, occlusion); 2734 this->enterLayer(parent, occlusion);
2735 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 150), occlusion.occlusionInScreenSpa ce().bounds()); 2735 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 150), occlusion.occlusionInScreenSpa ce().bounds());
2736 EXPECT_EQ(5u, occlusion.occlusionInScreenSpace().rects().size()); 2736 EXPECT_EQ(5u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2737 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 150), occlusion.occlusionInTargetSur face().bounds()); 2737 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 150), occlusion.occlusionInTargetSur face().bounds());
2738 EXPECT_EQ(5u, occlusion.occlusionInTargetSurface().rects().size()); 2738 EXPECT_EQ(5u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2739 2739
2740 gfx::Rect outsetRect; 2740 gfx::Rect outsetRect;
2741 gfx::Rect testRect; 2741 gfx::Rect testRect;
2742 2742
2743 // Nothing in the blur outsets for the filteredSurface is occluded. 2743 // Nothing in the blur outsets for the filteredSurface is occluded.
2744 outsetRect = gfx::Rect(50 - outsetLeft, 50 - outsetTop, 50 + outsetLeft + outsetRight, 50 + outsetTop + outsetBottom); 2744 outsetRect = gfx::Rect(50 - outsetLeft, 50 - outsetTop, 50 + outsetLeft + outsetRight, 50 + outsetTop + outsetBottom);
2745 testRect = outsetRect; 2745 testRect = outsetRect;
2746 EXPECT_RECT_EQ(outsetRect, occlusion.unoccludedLayerContentRect(parent, testRect)); 2746 EXPECT_RECT_EQ(outsetRect, occlusion.unoccludedLayerContentRect(parent, testRect));
2747 2747
2748 // Stuff outside the blur outsets is still occluded though. 2748 // Stuff outside the blur outsets is still occluded though.
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
2809 int outsetTop, outsetRight, outsetBottom, outsetLeft; 2809 int outsetTop, outsetRight, outsetBottom, outsetLeft;
2810 filters.getOutsets(outsetTop, outsetRight, outsetBottom, outsetLeft); 2810 filters.getOutsets(outsetTop, outsetRight, outsetBottom, outsetLeft);
2811 2811
2812 this->calcDrawEtc(root); 2812 this->calcDrawEtc(root);
2813 2813
2814 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 2814 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
2815 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); 2815 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000));
2816 2816
2817 this->visitLayer(occludingLayerAbove, occlusion); 2817 this->visitLayer(occludingLayerAbove, occlusion);
2818 EXPECT_RECT_EQ(gfx::Rect(100 / 2, 100 / 2, 50 / 2, 50 / 2), occlusion.oc clusionInScreenSpace().bounds()); 2818 EXPECT_RECT_EQ(gfx::Rect(100 / 2, 100 / 2, 50 / 2, 50 / 2), occlusion.oc clusionInScreenSpace().bounds());
2819 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2819 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2820 EXPECT_RECT_EQ(gfx::Rect(100 / 2, 100 / 2, 50 / 2, 50 / 2), occlusion.oc clusionInTargetSurface().bounds()); 2820 EXPECT_RECT_EQ(gfx::Rect(100 / 2, 100 / 2, 50 / 2, 50 / 2), occlusion.oc clusionInTargetSurface().bounds());
2821 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2821 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2822 2822
2823 this->visitLayer(filteredSurface2, occlusion); 2823 this->visitLayer(filteredSurface2, occlusion);
2824 this->visitContributingSurface(filteredSurface2, occlusion); 2824 this->visitContributingSurface(filteredSurface2, occlusion);
2825 this->visitLayer(filteredSurface1, occlusion); 2825 this->visitLayer(filteredSurface1, occlusion);
2826 this->visitContributingSurface(filteredSurface1, occlusion); 2826 this->visitContributingSurface(filteredSurface1, occlusion);
2827 2827
2828 ASSERT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 2828 ASSERT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2829 ASSERT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 2829 ASSERT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2830 2830
2831 // Test expectations in the target. 2831 // Test expectations in the target.
2832 gfx::Rect expectedOcclusion = gfx::Rect(100 / 2 + outsetRight * 2, 100 / 2 + outsetBottom * 2, 50 / 2 - (outsetLeft + outsetRight) * 2, 50 / 2 - (outset Top + outsetBottom) * 2); 2832 gfx::Rect expectedOcclusion = gfx::Rect(100 / 2 + outsetRight * 2, 100 / 2 + outsetBottom * 2, 50 / 2 - (outsetLeft + outsetRight) * 2, 50 / 2 - (outset Top + outsetBottom) * 2);
2833 EXPECT_RECT_EQ(expectedOcclusion, occlusion.occlusionInTargetSurface().r ects()[0]); 2833 EXPECT_RECT_EQ(expectedOcclusion, Region::Iterator(occlusion.occlusionIn TargetSurface()).rect());
2834 2834
2835 // Test expectations in the screen are the same as in the target, as the render surface is 1:1 with the screen. 2835 // Test expectations in the screen are the same as in the target, as the render surface is 1:1 with the screen.
2836 EXPECT_RECT_EQ(expectedOcclusion, occlusion.occlusionInScreenSpace().rec ts()[0]); 2836 EXPECT_RECT_EQ(expectedOcclusion, Region::Iterator(occlusion.occlusionIn ScreenSpace()).rect());
2837 } 2837 }
2838 }; 2838 };
2839 2839
2840 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestTwoBackgroundFiltersReduceOcclusio nTwice); 2840 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestTwoBackgroundFiltersReduceOcclusio nTwice);
2841 2841
2842 template<class Types> 2842 template<class Types>
2843 class OcclusionTrackerTestDontOccludePixelsNeededForBackgroundFilterWithClip : p ublic OcclusionTrackerTest<Types> { 2843 class OcclusionTrackerTestDontOccludePixelsNeededForBackgroundFilterWithClip : p ublic OcclusionTrackerTest<Types> {
2844 protected: 2844 protected:
2845 OcclusionTrackerTestDontOccludePixelsNeededForBackgroundFilterWithClip(bool opaqueLayers) : OcclusionTrackerTest<Types>(opaqueLayers) {} 2845 OcclusionTrackerTestDontOccludePixelsNeededForBackgroundFilterWithClip(bool opaqueLayers) : OcclusionTrackerTest<Types>(opaqueLayers) {}
2846 void runMyTest() 2846 void runMyTest()
(...skipping 28 matching lines...) Expand all
2875 2875
2876 // These layers occlude pixels directly beside the filteredSurface. Beca use filtered surface blends pixels in a radius, it will 2876 // These layers occlude pixels directly beside the filteredSurface. Beca use filtered surface blends pixels in a radius, it will
2877 // need to see some of the pixels (up to radius far) underneath the occl udingLayers. 2877 // need to see some of the pixels (up to radius far) underneath the occl udingLayers.
2878 this->visitLayer(occludingLayer5, occlusion); 2878 this->visitLayer(occludingLayer5, occlusion);
2879 this->visitLayer(occludingLayer4, occlusion); 2879 this->visitLayer(occludingLayer4, occlusion);
2880 this->visitLayer(occludingLayer3, occlusion); 2880 this->visitLayer(occludingLayer3, occlusion);
2881 this->visitLayer(occludingLayer2, occlusion); 2881 this->visitLayer(occludingLayer2, occlusion);
2882 this->visitLayer(occludingLayer1, occlusion); 2882 this->visitLayer(occludingLayer1, occlusion);
2883 2883
2884 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 150), occlusion.occlusionInScreenSpa ce().bounds()); 2884 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 150), occlusion.occlusionInScreenSpa ce().bounds());
2885 EXPECT_EQ(5u, occlusion.occlusionInScreenSpace().rects().size()); 2885 EXPECT_EQ(5u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2886 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 150), occlusion.occlusionInTargetSur face().bounds()); 2886 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 150), occlusion.occlusionInTargetSur face().bounds());
2887 EXPECT_EQ(5u, occlusion.occlusionInTargetSurface().rects().size()); 2887 EXPECT_EQ(5u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2888 2888
2889 // Everything outside the surface/replica is occluded but the surface/re plica itself is not. 2889 // Everything outside the surface/replica is occluded but the surface/re plica itself is not.
2890 this->enterLayer(filteredSurface, occlusion); 2890 this->enterLayer(filteredSurface, occlusion);
2891 EXPECT_RECT_EQ(gfx::Rect(1, 0, 49, 50), occlusion.unoccludedLayerContent Rect(filteredSurface, gfx::Rect(1, 0, 50, 50))); 2891 EXPECT_RECT_EQ(gfx::Rect(1, 0, 49, 50), occlusion.unoccludedLayerContent Rect(filteredSurface, gfx::Rect(1, 0, 50, 50)));
2892 EXPECT_RECT_EQ(gfx::Rect(0, 1, 50, 49), occlusion.unoccludedLayerContent Rect(filteredSurface, gfx::Rect(0, 1, 50, 50))); 2892 EXPECT_RECT_EQ(gfx::Rect(0, 1, 50, 49), occlusion.unoccludedLayerContent Rect(filteredSurface, gfx::Rect(0, 1, 50, 50)));
2893 EXPECT_RECT_EQ(gfx::Rect(0, 0, 49, 50), occlusion.unoccludedLayerContent Rect(filteredSurface, gfx::Rect(-1, 0, 50, 50))); 2893 EXPECT_RECT_EQ(gfx::Rect(0, 0, 49, 50), occlusion.unoccludedLayerContent Rect(filteredSurface, gfx::Rect(-1, 0, 50, 50)));
2894 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 49), occlusion.unoccludedLayerContent Rect(filteredSurface, gfx::Rect(0, -1, 50, 50))); 2894 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 49), occlusion.unoccludedLayerContent Rect(filteredSurface, gfx::Rect(0, -1, 50, 50)));
2895 2895
2896 EXPECT_RECT_EQ(gfx::Rect(150 + 1, 0, 49, 50), occlusion.unoccludedLayerC ontentRect(filteredSurface, gfx::Rect(150 + 1, 0, 50, 50))); 2896 EXPECT_RECT_EQ(gfx::Rect(150 + 1, 0, 49, 50), occlusion.unoccludedLayerC ontentRect(filteredSurface, gfx::Rect(150 + 1, 0, 50, 50)));
2897 EXPECT_RECT_EQ(gfx::Rect(150 + 0, 1, 50, 49), occlusion.unoccludedLayerC ontentRect(filteredSurface, gfx::Rect(150 + 0, 1, 50, 50))); 2897 EXPECT_RECT_EQ(gfx::Rect(150 + 0, 1, 50, 49), occlusion.unoccludedLayerC ontentRect(filteredSurface, gfx::Rect(150 + 0, 1, 50, 50)));
2898 EXPECT_RECT_EQ(gfx::Rect(150 + 0, 0, 49, 50), occlusion.unoccludedLayerC ontentRect(filteredSurface, gfx::Rect(150 - 1, 0, 50, 50))); 2898 EXPECT_RECT_EQ(gfx::Rect(150 + 0, 0, 49, 50), occlusion.unoccludedLayerC ontentRect(filteredSurface, gfx::Rect(150 - 1, 0, 50, 50)));
2899 EXPECT_RECT_EQ(gfx::Rect(150 + 0, 0, 50, 49), occlusion.unoccludedLayerC ontentRect(filteredSurface, gfx::Rect(150 + 0, -1, 50, 50))); 2899 EXPECT_RECT_EQ(gfx::Rect(150 + 0, 0, 50, 49), occlusion.unoccludedLayerC ontentRect(filteredSurface, gfx::Rect(150 + 0, -1, 50, 50)));
2900 this->leaveLayer(filteredSurface, occlusion); 2900 this->leaveLayer(filteredSurface, occlusion);
2901 2901
2902 // The filtered layer/replica does not occlude. 2902 // The filtered layer/replica does not occlude.
2903 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 150), occlusion.occlusionInScreenSpa ce().bounds()); 2903 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 150), occlusion.occlusionInScreenSpa ce().bounds());
2904 EXPECT_EQ(5u, occlusion.occlusionInScreenSpace().rects().size()); 2904 EXPECT_EQ(5u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2905 EXPECT_RECT_EQ(gfx::Rect(0, 0, 0, 0), occlusion.occlusionInTargetSurface ().bounds()); 2905 EXPECT_RECT_EQ(gfx::Rect(0, 0, 0, 0), occlusion.occlusionInTargetSurface ().bounds());
2906 EXPECT_EQ(0u, occlusion.occlusionInTargetSurface().rects().size()); 2906 EXPECT_EQ(0u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
2907 2907
2908 // The surface has a background blur, so it needs pixels that are curren tly considered occluded in order to be drawn. So the pixels 2908 // The surface has a background blur, so it needs pixels that are curren tly considered occluded in order to be drawn. So the pixels
2909 // it needs should be removed some the occluded area so that when we get to the parent they are drawn. 2909 // it needs should be removed some the occluded area so that when we get to the parent they are drawn.
2910 this->visitContributingSurface(filteredSurface, occlusion); 2910 this->visitContributingSurface(filteredSurface, occlusion);
2911 2911
2912 this->enterContributingSurface(clippingSurface, occlusion); 2912 this->enterContributingSurface(clippingSurface, occlusion);
2913 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 150), occlusion.occlusionInScreenSpa ce().bounds()); 2913 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 150), occlusion.occlusionInScreenSpa ce().bounds());
2914 EXPECT_EQ(5u, occlusion.occlusionInScreenSpace().rects().size()); 2914 EXPECT_EQ(5u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
2915 2915
2916 gfx::Rect outsetRect; 2916 gfx::Rect outsetRect;
2917 gfx::Rect clippedOutsetRect; 2917 gfx::Rect clippedOutsetRect;
2918 gfx::Rect testRect; 2918 gfx::Rect testRect;
2919 2919
2920 // Nothing in the (clipped) blur outsets for the filteredSurface is occl uded. 2920 // Nothing in the (clipped) blur outsets for the filteredSurface is occl uded.
2921 outsetRect = gfx::Rect(50 - outsetLeft, 50 - outsetTop, 50 + outsetLeft + outsetRight, 50 + outsetTop + outsetBottom); 2921 outsetRect = gfx::Rect(50 - outsetLeft, 50 - outsetTop, 50 + outsetLeft + outsetRight, 50 + outsetTop + outsetBottom);
2922 clippedOutsetRect = gfx::IntersectRects(outsetRect, gfx::Rect(0 - outset Left, 0 - outsetTop, 300 + outsetLeft + outsetRight, 70 + outsetTop + outsetBott om)); 2922 clippedOutsetRect = gfx::IntersectRects(outsetRect, gfx::Rect(0 - outset Left, 0 - outsetTop, 300 + outsetLeft + outsetRight, 70 + outsetTop + outsetBott om));
2923 testRect = outsetRect; 2923 testRect = outsetRect;
2924 EXPECT_RECT_EQ(clippedOutsetRect, occlusion.unoccludedLayerContentRect(c lippingSurface, testRect)); 2924 EXPECT_RECT_EQ(clippedOutsetRect, occlusion.unoccludedLayerContentRect(c lippingSurface, testRect));
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
2996 this->visitLayer(behindReplicaLayer, occlusion); 2996 this->visitLayer(behindReplicaLayer, occlusion);
2997 this->visitLayer(behindSurfaceLayer, occlusion); 2997 this->visitLayer(behindSurfaceLayer, occlusion);
2998 2998
2999 // The layers behind the surface are not blurred, and their occlusion do es not change, until we leave the surface. 2999 // The layers behind the surface are not blurred, and their occlusion do es not change, until we leave the surface.
3000 // So it should not be modified by the filter here. 3000 // So it should not be modified by the filter here.
3001 gfx::Rect occlusionBehindSurface = gfx::Rect(60, 60, 30, 30); 3001 gfx::Rect occlusionBehindSurface = gfx::Rect(60, 60, 30, 30);
3002 gfx::Rect occlusionBehindReplica = gfx::Rect(210, 60, 30, 30); 3002 gfx::Rect occlusionBehindReplica = gfx::Rect(210, 60, 30, 30);
3003 3003
3004 gfx::Rect expectedOpaqueBounds = gfx::UnionRects(occlusionBehindSurface, occlusionBehindReplica); 3004 gfx::Rect expectedOpaqueBounds = gfx::UnionRects(occlusionBehindSurface, occlusionBehindReplica);
3005 EXPECT_RECT_EQ(expectedOpaqueBounds, occlusion.occlusionInScreenSpace(). bounds()); 3005 EXPECT_RECT_EQ(expectedOpaqueBounds, occlusion.occlusionInScreenSpace(). bounds());
3006 EXPECT_EQ(2u, occlusion.occlusionInScreenSpace().rects().size()); 3006 EXPECT_EQ(2u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
3007 EXPECT_RECT_EQ(expectedOpaqueBounds, occlusion.occlusionInTargetSurface( ).bounds()); 3007 EXPECT_RECT_EQ(expectedOpaqueBounds, occlusion.occlusionInTargetSurface( ).bounds());
3008 EXPECT_EQ(2u, occlusion.occlusionInTargetSurface().rects().size()); 3008 EXPECT_EQ(2u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
3009 } 3009 }
3010 }; 3010 };
3011 3011
3012 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestDontReduceOcclusionBelowBackground Filter); 3012 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestDontReduceOcclusionBelowBackground Filter);
3013 3013
3014 template<class Types> 3014 template<class Types>
3015 class OcclusionTrackerTestDontReduceOcclusionIfBackgroundFilterIsOccluded : publ ic OcclusionTrackerTest<Types> { 3015 class OcclusionTrackerTestDontReduceOcclusionIfBackgroundFilterIsOccluded : publ ic OcclusionTrackerTest<Types> {
3016 protected: 3016 protected:
3017 OcclusionTrackerTestDontReduceOcclusionIfBackgroundFilterIsOccluded(bool opa queLayers) : OcclusionTrackerTest<Types>(opaqueLayers) {} 3017 OcclusionTrackerTestDontReduceOcclusionIfBackgroundFilterIsOccluded(bool opa queLayers) : OcclusionTrackerTest<Types>(opaqueLayers) {}
3018 void runMyTest() 3018 void runMyTest()
(...skipping 26 matching lines...) Expand all
3045 // The surface has a background blur, so it blurs non-opaque pixels belo w it. 3045 // The surface has a background blur, so it blurs non-opaque pixels belo w it.
3046 this->visitLayer(filteredSurface, occlusion); 3046 this->visitLayer(filteredSurface, occlusion);
3047 this->visitContributingSurface(filteredSurface, occlusion); 3047 this->visitContributingSurface(filteredSurface, occlusion);
3048 3048
3049 // The filter is completely occluded, so it should not blur anything and reduce any occlusion. 3049 // The filter is completely occluded, so it should not blur anything and reduce any occlusion.
3050 gfx::Rect occlusionAboveSurface = gfx::Rect(50, 50, 50, 50); 3050 gfx::Rect occlusionAboveSurface = gfx::Rect(50, 50, 50, 50);
3051 gfx::Rect occlusionAboveReplica = gfx::Rect(200, 50, 50, 50); 3051 gfx::Rect occlusionAboveReplica = gfx::Rect(200, 50, 50, 50);
3052 3052
3053 gfx::Rect expectedOpaqueBounds = gfx::UnionRects(occlusionAboveSurface, occlusionAboveReplica); 3053 gfx::Rect expectedOpaqueBounds = gfx::UnionRects(occlusionAboveSurface, occlusionAboveReplica);
3054 EXPECT_RECT_EQ(expectedOpaqueBounds, occlusion.occlusionInScreenSpace(). bounds()); 3054 EXPECT_RECT_EQ(expectedOpaqueBounds, occlusion.occlusionInScreenSpace(). bounds());
3055 EXPECT_EQ(2u, occlusion.occlusionInScreenSpace().rects().size()); 3055 EXPECT_EQ(2u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
3056 EXPECT_RECT_EQ(expectedOpaqueBounds, occlusion.occlusionInTargetSurface( ).bounds()); 3056 EXPECT_RECT_EQ(expectedOpaqueBounds, occlusion.occlusionInTargetSurface( ).bounds());
3057 EXPECT_EQ(2u, occlusion.occlusionInTargetSurface().rects().size()); 3057 EXPECT_EQ(2u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
3058 } 3058 }
3059 }; 3059 };
3060 3060
3061 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestDontReduceOcclusionIfBackgroundFil terIsOccluded); 3061 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestDontReduceOcclusionIfBackgroundFil terIsOccluded);
3062 3062
3063 template<class Types> 3063 template<class Types>
3064 class OcclusionTrackerTestReduceOcclusionWhenBackgroundFilterIsPartiallyOccluded : public OcclusionTrackerTest<Types> { 3064 class OcclusionTrackerTestReduceOcclusionWhenBackgroundFilterIsPartiallyOccluded : public OcclusionTrackerTest<Types> {
3065 protected: 3065 protected:
3066 OcclusionTrackerTestReduceOcclusionWhenBackgroundFilterIsPartiallyOccluded(b ool opaqueLayers) : OcclusionTrackerTest<Types>(opaqueLayers) {} 3066 OcclusionTrackerTestReduceOcclusionWhenBackgroundFilterIsPartiallyOccluded(b ool opaqueLayers) : OcclusionTrackerTest<Types>(opaqueLayers) {}
3067 void runMyTest() 3067 void runMyTest()
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
3111 gfx::Rect occlusionAboveReplica = gfx::Rect(200, 50, 30 - outsetLeft, 50 ); 3111 gfx::Rect occlusionAboveReplica = gfx::Rect(200, 50, 30 - outsetLeft, 50 );
3112 gfx::Rect occlusionBesideSurface = gfx::Rect(90, 40, 10, 10); 3112 gfx::Rect occlusionBesideSurface = gfx::Rect(90, 40, 10, 10);
3113 gfx::Rect occlusionBesideReplica = gfx::Rect(200, 40, 10, 10); 3113 gfx::Rect occlusionBesideReplica = gfx::Rect(200, 40, 10, 10);
3114 3114
3115 Region expectedOcclusion; 3115 Region expectedOcclusion;
3116 expectedOcclusion.Union(occlusionAboveSurface); 3116 expectedOcclusion.Union(occlusionAboveSurface);
3117 expectedOcclusion.Union(occlusionAboveReplica); 3117 expectedOcclusion.Union(occlusionAboveReplica);
3118 expectedOcclusion.Union(occlusionBesideSurface); 3118 expectedOcclusion.Union(occlusionBesideSurface);
3119 expectedOcclusion.Union(occlusionBesideReplica); 3119 expectedOcclusion.Union(occlusionBesideReplica);
3120 3120
3121 ASSERT_EQ(expectedOcclusion.rects().size(), occlusion.occlusionInTargetS urface().rects().size()); 3121 ASSERT_EQ(Region::Iterator(expectedOcclusion).size(), Region::Iterator(o cclusion.occlusionInTargetSurface()).size());
3122 ASSERT_EQ(expectedOcclusion.rects().size(), occlusion.occlusionInScreenS pace().rects().size()); 3122 ASSERT_EQ(Region::Iterator(expectedOcclusion).size(), Region::Iterator(o cclusion.occlusionInScreenSpace()).size());
3123 3123
3124 for (size_t i = 0; i < expectedOcclusion.rects().size(); ++i) { 3124 Region::Iterator expectedRects(expectedOcclusion);
3125 cc::IntRect expectedRect = expectedOcclusion.rects()[i]; 3125 Region::Iterator screenSpaceRects(occlusion.occlusionInScreenSpace());
3126 cc::IntRect screenRect = occlusion.occlusionInScreenSpace().rects()[ i]; 3126 Region::Iterator targetSurfaceRects(occlusion.occlusionInTargetSurface() );
3127 cc::IntRect targetRect = occlusion.occlusionInTargetSurface().rects( )[i]; 3127 for (; expectedRects.has_rect(); expectedRects.next(), screenSpaceRects. next(), targetSurfaceRects.next()) {
3128 EXPECT_EQ(expectedRect, screenRect); 3128 ASSERT_TRUE(screenSpaceRects.has_rect());
3129 EXPECT_EQ(expectedRect, targetRect); 3129 ASSERT_TRUE(targetSurfaceRects.has_rect());
3130 EXPECT_EQ(expectedRects.rect(), screenSpaceRects.rect());
3131 EXPECT_EQ(expectedRects.rect(), targetSurfaceRects.rect());
3130 } 3132 }
3131 } 3133 }
3132 }; 3134 };
3133 3135
3134 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReduceOcclusionWhenBackgroundFilte rIsPartiallyOccluded); 3136 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReduceOcclusionWhenBackgroundFilte rIsPartiallyOccluded);
3135 3137
3136 template<class Types> 3138 template<class Types>
3137 class OcclusionTrackerTestMinimumTrackingSize : public OcclusionTrackerTest<Type s> { 3139 class OcclusionTrackerTestMinimumTrackingSize : public OcclusionTrackerTest<Type s> {
3138 protected: 3140 protected:
3139 OcclusionTrackerTestMinimumTrackingSize(bool opaqueLayers) : OcclusionTracke rTest<Types>(opaqueLayers) {} 3141 OcclusionTrackerTestMinimumTrackingSize(bool opaqueLayers) : OcclusionTracke rTest<Types>(opaqueLayers) {}
3140 void runMyTest() 3142 void runMyTest()
3141 { 3143 {
3142 gfx::Size trackingSize(100, 100); 3144 gfx::Size trackingSize(100, 100);
3143 gfx::Size belowTrackingSize(99, 99); 3145 gfx::Size belowTrackingSize(99, 99);
3144 3146
3145 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, gfx::PointF(0, 0), gfx::Size(400, 400)); 3147 typename Types::ContentLayerType* parent = this->createRoot(this->identi tyMatrix, gfx::PointF(0, 0), gfx::Size(400, 400));
3146 typename Types::LayerType* large = this->createDrawingLayer(parent, this ->identityMatrix, gfx::PointF(0, 0), trackingSize, true); 3148 typename Types::LayerType* large = this->createDrawingLayer(parent, this ->identityMatrix, gfx::PointF(0, 0), trackingSize, true);
3147 typename Types::LayerType* small = this->createDrawingLayer(parent, this ->identityMatrix, gfx::PointF(0, 0), belowTrackingSize, true); 3149 typename Types::LayerType* small = this->createDrawingLayer(parent, this ->identityMatrix, gfx::PointF(0, 0), belowTrackingSize, true);
3148 this->calcDrawEtc(parent); 3150 this->calcDrawEtc(parent);
3149 3151
3150 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); 3152 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types:: RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000));
3151 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); 3153 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000));
3152 occlusion.setMinimumTrackingSize(trackingSize); 3154 occlusion.setMinimumTrackingSize(trackingSize);
3153 3155
3154 // The small layer is not tracked because it is too small. 3156 // The small layer is not tracked because it is too small.
3155 this->visitLayer(small, occlusion); 3157 this->visitLayer(small, occlusion);
3156 3158
3157 EXPECT_RECT_EQ(gfx::Rect(), occlusion.occlusionInScreenSpace().bounds()) ; 3159 EXPECT_RECT_EQ(gfx::Rect(), occlusion.occlusionInScreenSpace().bounds()) ;
3158 EXPECT_EQ(0u, occlusion.occlusionInScreenSpace().rects().size()); 3160 EXPECT_EQ(0u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
3159 EXPECT_RECT_EQ(gfx::Rect(), occlusion.occlusionInTargetSurface().bounds( )); 3161 EXPECT_RECT_EQ(gfx::Rect(), occlusion.occlusionInTargetSurface().bounds( ));
3160 EXPECT_EQ(0u, occlusion.occlusionInTargetSurface().rects().size()); 3162 EXPECT_EQ(0u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
3161 3163
3162 // The large layer is tracked as it is large enough. 3164 // The large layer is tracked as it is large enough.
3163 this->visitLayer(large, occlusion); 3165 this->visitLayer(large, occlusion);
3164 3166
3165 EXPECT_RECT_EQ(gfx::Rect(gfx::Point(), trackingSize), occlusion.occlusio nInScreenSpace().bounds()); 3167 EXPECT_RECT_EQ(gfx::Rect(gfx::Point(), trackingSize), occlusion.occlusio nInScreenSpace().bounds());
3166 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 3168 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInScreenSpace()).size( ));
3167 EXPECT_RECT_EQ(gfx::Rect(gfx::Point(), trackingSize), occlusion.occlusio nInTargetSurface().bounds()); 3169 EXPECT_RECT_EQ(gfx::Rect(gfx::Point(), trackingSize), occlusion.occlusio nInTargetSurface().bounds());
3168 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 3170 EXPECT_EQ(1u, Region::Iterator(occlusion.occlusionInTargetSurface()).siz e());
3169 } 3171 }
3170 }; 3172 };
3171 3173
3172 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestMinimumTrackingSize); 3174 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestMinimumTrackingSize);
3173 3175
3174 } // namespace 3176 } // namespace
OLDNEW
« no previous file with comments | « cc/occlusion_tracker.cc ('k') | cc/render_pass.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698