| OLD | NEW |
| 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 "cc/occlusion_tracker.h" | 5 #include "cc/occlusion_tracker.h" |
| 6 | 6 |
| 7 #include <public/WebFilterOperation.h> | 7 #include <public/WebFilterOperation.h> |
| 8 #include <public/WebFilterOperations.h> | 8 #include <public/WebFilterOperations.h> |
| 9 | 9 |
| 10 #include "cc/layer.h" | 10 #include "cc/layer.h" |
| (...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 485 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 100)); | 485 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 100)); |
| 486 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren
t, this->identityMatrix, gfx::PointF(30, 30), gfx::Size(500, 500), true); | 486 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren
t, this->identityMatrix, gfx::PointF(30, 30), gfx::Size(500, 500), true); |
| 487 this->calcDrawEtc(parent); | 487 this->calcDrawEtc(parent); |
| 488 | 488 |
| 489 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 489 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 490 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); | 490 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); |
| 491 | 491 |
| 492 this->visitLayer(layer, occlusion); | 492 this->visitLayer(layer, occlusion); |
| 493 this->enterLayer(parent, occlusion); | 493 this->enterLayer(parent, occlusion); |
| 494 | 494 |
| 495 EXPECT_EQ(gfx::Rect(30, 30, 70, 70).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 495 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 496 EXPECT_EQ(gfx::Rect(30, 30, 70, 70).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 496 EXPECT_EQ(gfx::Rect(30, 30, 70, 70).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 497 | 497 |
| 498 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 70, 70))); | 498 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 70, 70))); |
| 499 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 30, 70, 70)))
; | 499 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 30, 70, 70)))
; |
| 500 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 29, 70, 70)))
; | 500 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 29, 70, 70)))
; |
| 501 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(31, 30, 70, 70)))
; | 501 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(31, 30, 70, 70)))
; |
| 502 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 31, 70, 70)))
; | 502 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 31, 70, 70)))
; |
| 503 | 503 |
| 504 occlusion.useDefaultLayerClipRect(); | 504 occlusion.useDefaultLayerClipRect(); |
| 505 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 70, 70))); | 505 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 70, 70))); |
| 506 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 30, 70, 70)))
; | 506 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 30, 70, 70)))
; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 535 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::Point(0, 0), gfx::Size(100, 100)); | 535 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::Point(0, 0), gfx::Size(100, 100)); |
| 536 typename Types::ContentLayerType* layer1 = this->createDrawingLayer(pare
nt, layerTransform, gfx::PointF(0, 0), gfx::Size(90, 90), true); | 536 typename Types::ContentLayerType* layer1 = this->createDrawingLayer(pare
nt, layerTransform, gfx::PointF(0, 0), gfx::Size(90, 90), true); |
| 537 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(laye
r1, layerTransform, gfx::PointF(0, 0), gfx::Size(50, 50), true); | 537 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(laye
r1, layerTransform, gfx::PointF(0, 0), gfx::Size(50, 50), true); |
| 538 this->calcDrawEtc(parent); | 538 this->calcDrawEtc(parent); |
| 539 | 539 |
| 540 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 540 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 541 | 541 |
| 542 this->visitLayer(layer2, occlusion); | 542 this->visitLayer(layer2, occlusion); |
| 543 this->enterLayer(layer1, occlusion); | 543 this->enterLayer(layer1, occlusion); |
| 544 | 544 |
| 545 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 545 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 546 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 546 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 547 | 547 |
| 548 // This checks cases where the quads don't match their "containing" | 548 // This checks cases where the quads don't match their "containing" |
| 549 // layers, e.g. in terms of transforms or clip rect. This is typical for | 549 // layers, e.g. in terms of transforms or clip rect. This is typical for |
| 550 // DelegatedRendererLayer. | 550 // DelegatedRendererLayer. |
| 551 | 551 |
| 552 gfx::Transform quadTransform; | 552 gfx::Transform quadTransform; |
| 553 quadTransform.Translate(30, 30); | 553 quadTransform.Translate(30, 30); |
| 554 gfx::Rect clipRectInTarget(0, 0, 100, 100); | 554 gfx::Rect clipRectInTarget(0, 0, 100, 100); |
| 555 | 555 |
| 556 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, gfx::Rect(0, 0, 10,
10), quadTransform, false, clipRectInTarget).IsEmpty()); | 556 EXPECT_TRUE(occlusion.unoccludedContentRect(parent, gfx::Rect(0, 0, 10,
10), quadTransform, false, clipRectInTarget).IsEmpty()); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 577 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 100)); | 577 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 100)); |
| 578 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren
t, layerTransform, gfx::PointF(30, 30), gfx::Size(500, 500), true); | 578 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren
t, layerTransform, gfx::PointF(30, 30), gfx::Size(500, 500), true); |
| 579 this->calcDrawEtc(parent); | 579 this->calcDrawEtc(parent); |
| 580 | 580 |
| 581 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 581 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 582 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); | 582 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); |
| 583 | 583 |
| 584 this->visitLayer(layer, occlusion); | 584 this->visitLayer(layer, occlusion); |
| 585 this->enterLayer(parent, occlusion); | 585 this->enterLayer(parent, occlusion); |
| 586 | 586 |
| 587 EXPECT_EQ(gfx::Rect(30, 30, 70, 70).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 587 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 588 EXPECT_EQ(gfx::Rect(30, 30, 70, 70).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 588 EXPECT_EQ(gfx::Rect(30, 30, 70, 70).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 589 | 589 |
| 590 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 70, 70))); | 590 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 70, 70))); |
| 591 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 30, 70, 70)))
; | 591 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 30, 70, 70)))
; |
| 592 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 29, 70, 70)))
; | 592 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 29, 70, 70)))
; |
| 593 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(31, 30, 70, 70)))
; | 593 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(31, 30, 70, 70)))
; |
| 594 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 31, 70, 70)))
; | 594 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 31, 70, 70)))
; |
| 595 | 595 |
| 596 occlusion.useDefaultLayerClipRect(); | 596 occlusion.useDefaultLayerClipRect(); |
| 597 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 70, 70))); | 597 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 70, 70))); |
| 598 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 30, 70, 70)))
; | 598 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 30, 70, 70)))
; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 627 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 100)); | 627 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 100)); |
| 628 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren
t, layerTransform, gfx::PointF(30, 30), gfx::Size(500, 500), true); | 628 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren
t, layerTransform, gfx::PointF(30, 30), gfx::Size(500, 500), true); |
| 629 this->calcDrawEtc(parent); | 629 this->calcDrawEtc(parent); |
| 630 | 630 |
| 631 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 631 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 632 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); | 632 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); |
| 633 | 633 |
| 634 this->visitLayer(layer, occlusion); | 634 this->visitLayer(layer, occlusion); |
| 635 this->enterLayer(parent, occlusion); | 635 this->enterLayer(parent, occlusion); |
| 636 | 636 |
| 637 EXPECT_EQ(gfx::Rect(50, 50, 50, 50).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 637 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 638 EXPECT_EQ(gfx::Rect(50, 50, 50, 50).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 638 EXPECT_EQ(gfx::Rect(50, 50, 50, 50).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 639 | 639 |
| 640 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(50, 50, 50, 50))); | 640 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(50, 50, 50, 50))); |
| 641 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(49, 50, 50, 50)))
; | 641 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(49, 50, 50, 50)))
; |
| 642 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(50, 49, 50, 50)))
; | 642 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(50, 49, 50, 50)))
; |
| 643 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(51, 50, 50, 50)))
; | 643 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(51, 50, 50, 50)))
; |
| 644 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(50, 51, 50, 50)))
; | 644 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(50, 51, 50, 50)))
; |
| 645 | 645 |
| 646 occlusion.useDefaultLayerClipRect(); | 646 occlusion.useDefaultLayerClipRect(); |
| 647 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(50, 50, 50, 50))); | 647 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(50, 50, 50, 50))); |
| 648 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(49, 50, 50, 50)))
; | 648 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(49, 50, 50, 50)))
; |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 694 child->setMasksToBounds(true); | 694 child->setMasksToBounds(true); |
| 695 typename Types::ContentLayerType* layer = this->createDrawingLayer(child
, this->identityMatrix, gfx::PointF(10, 10), gfx::Size(500, 500), true); | 695 typename Types::ContentLayerType* layer = this->createDrawingLayer(child
, this->identityMatrix, gfx::PointF(10, 10), gfx::Size(500, 500), true); |
| 696 this->calcDrawEtc(parent); | 696 this->calcDrawEtc(parent); |
| 697 | 697 |
| 698 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 698 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 699 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); | 699 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); |
| 700 | 700 |
| 701 this->visitLayer(layer, occlusion); | 701 this->visitLayer(layer, occlusion); |
| 702 this->enterContributingSurface(child, occlusion); | 702 this->enterContributingSurface(child, occlusion); |
| 703 | 703 |
| 704 EXPECT_EQ(gfx::Rect(30, 40, 70, 60).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 704 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 705 EXPECT_EQ(gfx::Rect(10, 430, 60, 70).ToString(), occlusion.occlusionInTa
rgetSurface().ToString()); | 705 EXPECT_EQ(gfx::Rect(10, 430, 60, 70).ToString(), occlusion.occlusionFrom
InsideTarget().ToString()); |
| 706 | 706 |
| 707 this->leaveContributingSurface(child, occlusion); | 707 this->leaveContributingSurface(child, occlusion); |
| 708 this->enterLayer(parent, occlusion); | 708 this->enterLayer(parent, occlusion); |
| 709 | 709 |
| 710 EXPECT_EQ(gfx::Rect(30, 40, 70, 60).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 710 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 711 EXPECT_EQ(gfx::Rect(30, 40, 70, 60).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 711 EXPECT_EQ(gfx::Rect(30, 40, 70, 60).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 712 | 712 |
| 713 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 40, 70, 60))); | 713 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 40, 70, 60))); |
| 714 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 40, 70, 60)))
; | 714 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 40, 70, 60)))
; |
| 715 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 39, 70, 60)))
; | 715 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 39, 70, 60)))
; |
| 716 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(31, 40, 70, 60)))
; | 716 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(31, 40, 70, 60)))
; |
| 717 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 41, 70, 60)))
; | 717 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 41, 70, 60)))
; |
| 718 | 718 |
| 719 occlusion.useDefaultLayerClipRect(); | 719 occlusion.useDefaultLayerClipRect(); |
| 720 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 40, 70, 60))); | 720 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 40, 70, 60))); |
| 721 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 40, 70, 60)))
; | 721 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 40, 70, 60)))
; |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 772 layer2Matrix.Translate(25, 25); | 772 layer2Matrix.Translate(25, 25); |
| 773 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(laye
r1, layer2Matrix, gfx::PointF(0, 0), gfx::Size(50, 50), true); | 773 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(laye
r1, layer2Matrix, gfx::PointF(0, 0), gfx::Size(50, 50), true); |
| 774 typename Types::ContentLayerType* occluder = this->createDrawingLayer(pa
rent, this->identityMatrix, gfx::PointF(100, 100), gfx::Size(500, 500), true); | 774 typename Types::ContentLayerType* occluder = this->createDrawingLayer(pa
rent, this->identityMatrix, gfx::PointF(100, 100), gfx::Size(500, 500), true); |
| 775 this->calcDrawEtc(parent); | 775 this->calcDrawEtc(parent); |
| 776 | 776 |
| 777 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 777 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 778 | 778 |
| 779 this->visitLayer(occluder, occlusion); | 779 this->visitLayer(occluder, occlusion); |
| 780 this->enterLayer(layer2, occlusion); | 780 this->enterLayer(layer2, occlusion); |
| 781 | 781 |
| 782 EXPECT_EQ(gfx::Rect(100, 100, 100, 100).ToString(), occlusion.occlusionI
nScreenSpace().ToString()); | 782 EXPECT_EQ(gfx::Rect(100, 100, 100, 100).ToString(), occlusion.occlusionF
romOutsideTarget().ToString()); |
| 783 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionInTargetSurface().T
oString()); | 783 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromInsideTarget().
ToString()); |
| 784 | 784 |
| 785 EXPECT_RECT_EQ(gfx::Rect(0, 0, 25, 25), occlusion.unoccludedLayerContent
Rect(layer2, gfx::Rect(0, 0, 25, 25))); | 785 EXPECT_RECT_EQ(gfx::Rect(0, 0, 25, 25), occlusion.unoccludedLayerContent
Rect(layer2, gfx::Rect(0, 0, 25, 25))); |
| 786 EXPECT_RECT_EQ(gfx::Rect(10, 25, 15, 25), occlusion.unoccludedLayerConte
ntRect(layer2, gfx::Rect(10, 25, 25, 25))); | 786 EXPECT_RECT_EQ(gfx::Rect(10, 25, 15, 25), occlusion.unoccludedLayerConte
ntRect(layer2, gfx::Rect(10, 25, 25, 25))); |
| 787 EXPECT_RECT_EQ(gfx::Rect(25, 10, 25, 15), occlusion.unoccludedLayerConte
ntRect(layer2, gfx::Rect(25, 10, 25, 25))); | 787 EXPECT_RECT_EQ(gfx::Rect(25, 10, 25, 15), occlusion.unoccludedLayerConte
ntRect(layer2, gfx::Rect(25, 10, 25, 25))); |
| 788 EXPECT_TRUE(occlusion.unoccludedLayerContentRect(layer2, gfx::Rect(25, 2
5, 25, 25)).IsEmpty()); | 788 EXPECT_TRUE(occlusion.unoccludedLayerContentRect(layer2, gfx::Rect(25, 2
5, 25, 25)).IsEmpty()); |
| 789 } | 789 } |
| 790 }; | 790 }; |
| 791 | 791 |
| 792 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestScaledRenderSurface); | 792 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestScaledRenderSurface); |
| 793 | 793 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 810 // |child2| makes |parent|'s surface get considered by OcclusionTracker
first, instead of |child|'s. This exercises different code in | 810 // |child2| makes |parent|'s surface get considered by OcclusionTracker
first, instead of |child|'s. This exercises different code in |
| 811 // leaveToTargetRenderSurface, as the target surface has already been se
en. | 811 // leaveToTargetRenderSurface, as the target surface has already been se
en. |
| 812 typename Types::ContentLayerType* child2 = this->createDrawingLayer(pare
nt, this->identityMatrix, gfx::PointF(30, 30), gfx::Size(60, 20), true); | 812 typename Types::ContentLayerType* child2 = this->createDrawingLayer(pare
nt, this->identityMatrix, gfx::PointF(30, 30), gfx::Size(60, 20), true); |
| 813 this->calcDrawEtc(parent); | 813 this->calcDrawEtc(parent); |
| 814 | 814 |
| 815 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 815 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 816 occlusion.setLayerClipRect(gfx::Rect(-10, -10, 1000, 1000)); | 816 occlusion.setLayerClipRect(gfx::Rect(-10, -10, 1000, 1000)); |
| 817 | 817 |
| 818 this->visitLayer(child2, occlusion); | 818 this->visitLayer(child2, occlusion); |
| 819 | 819 |
| 820 EXPECT_EQ(gfx::Rect(30, 30, 60, 20).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 820 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 821 EXPECT_EQ(gfx::Rect(30, 30, 60, 20).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 821 EXPECT_EQ(gfx::Rect(30, 30, 60, 20).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 822 | 822 |
| 823 this->visitLayer(layer, occlusion); | 823 this->visitLayer(layer, occlusion); |
| 824 | 824 |
| 825 EXPECT_EQ(UnionRegions(gfx::Rect(30, 30, 60, 10), gfx::Rect(30, 40, 70,
60)).ToString(), occlusion.occlusionInScreenSpace().ToString()); | 825 EXPECT_EQ(gfx::Rect(0, 440, 20, 60).ToString(), occlusion.occlusionFromO
utsideTarget().ToString()); |
| 826 EXPECT_EQ(gfx::Rect(10, 430, 60, 70).ToString(), occlusion.occlusionInTa
rgetSurface().ToString()); | 826 EXPECT_EQ(gfx::Rect(10, 430, 60, 70).ToString(), occlusion.occlusionFrom
InsideTarget().ToString()); |
| 827 | 827 |
| 828 this->enterContributingSurface(child, occlusion); | 828 this->enterContributingSurface(child, occlusion); |
| 829 | 829 |
| 830 EXPECT_EQ(UnionRegions(gfx::Rect(30, 30, 60, 10), gfx::Rect(30, 40, 70,
60)).ToString(), occlusion.occlusionInScreenSpace().ToString()); | 830 EXPECT_EQ(gfx::Rect(0, 440, 20, 60).ToString(), occlusion.occlusionFromO
utsideTarget().ToString()); |
| 831 EXPECT_EQ(gfx::Rect(10, 430, 60, 70).ToString(), occlusion.occlusionInTa
rgetSurface().ToString()); | 831 EXPECT_EQ(gfx::Rect(10, 430, 60, 70).ToString(), occlusion.occlusionFrom
InsideTarget().ToString()); |
| 832 | 832 |
| 833 // Occlusion in |child2| should get merged with the |child| surface we a
re leaving now. | 833 // Occlusion in |child2| should get merged with the |child| surface we a
re leaving now. |
| 834 this->leaveContributingSurface(child, occlusion); | 834 this->leaveContributingSurface(child, occlusion); |
| 835 this->enterLayer(parent, occlusion); | 835 this->enterLayer(parent, occlusion); |
| 836 | 836 |
| 837 EXPECT_EQ(UnionRegions(gfx::Rect(30, 30, 60, 10), gfx::Rect(30, 40, 70,
60)).ToString(), occlusion.occlusionInScreenSpace().ToString()); | 837 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 838 EXPECT_EQ(UnionRegions(gfx::Rect(30, 30, 60, 10), gfx::Rect(30, 40, 70,
60)).ToString(), occlusion.occlusionInTargetSurface().ToString()); | 838 EXPECT_EQ(UnionRegions(gfx::Rect(30, 30, 60, 10), gfx::Rect(30, 40, 70,
60)).ToString(), occlusion.occlusionFromInsideTarget().ToString()); |
| 839 | 839 |
| 840 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 70, 70)))
; | 840 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 70, 70)))
; |
| 841 EXPECT_RECT_EQ(gfx::Rect(90, 30, 10, 10), occlusion.unoccludedLayerConte
ntRect(parent, gfx::Rect(30, 30, 70, 70))); | 841 EXPECT_RECT_EQ(gfx::Rect(90, 30, 10, 10), occlusion.unoccludedLayerConte
ntRect(parent, gfx::Rect(30, 30, 70, 70))); |
| 842 | 842 |
| 843 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 60, 10))); | 843 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 30, 60, 10))); |
| 844 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 30, 60, 10)))
; | 844 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 30, 60, 10)))
; |
| 845 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 29, 60, 10)))
; | 845 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 29, 60, 10)))
; |
| 846 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(31, 30, 60, 10)))
; | 846 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(31, 30, 60, 10)))
; |
| 847 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 31, 60, 10))); | 847 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 31, 60, 10))); |
| 848 | 848 |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 917 this->calcDrawEtc(parent); | 917 this->calcDrawEtc(parent); |
| 918 | 918 |
| 919 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 919 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 920 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); | 920 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); |
| 921 | 921 |
| 922 gfx::Rect clippedLayerInChild = MathUtil::mapClippedRect(layerTransform,
layer->visibleContentRect()); | 922 gfx::Rect clippedLayerInChild = MathUtil::mapClippedRect(layerTransform,
layer->visibleContentRect()); |
| 923 | 923 |
| 924 this->visitLayer(layer, occlusion); | 924 this->visitLayer(layer, occlusion); |
| 925 this->enterContributingSurface(child, occlusion); | 925 this->enterContributingSurface(child, occlusion); |
| 926 | 926 |
| 927 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionInScreenSpace().ToS
tring()); | 927 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 928 EXPECT_EQ(clippedLayerInChild.ToString(), occlusion.occlusionInTargetSur
face().ToString()); | 928 EXPECT_EQ(clippedLayerInChild.ToString(), occlusion.occlusionFromInsideT
arget().ToString()); |
| 929 | 929 |
| 930 EXPECT_TRUE(occlusion.occludedLayer(child, clippedLayerInChild)); | 930 EXPECT_TRUE(occlusion.occludedLayer(child, clippedLayerInChild)); |
| 931 EXPECT_TRUE(occlusion.unoccludedLayerContentRect(child, clippedLayerInCh
ild).IsEmpty()); | 931 EXPECT_TRUE(occlusion.unoccludedLayerContentRect(child, clippedLayerInCh
ild).IsEmpty()); |
| 932 clippedLayerInChild += gfx::Vector2d(-1, 0); | 932 clippedLayerInChild += gfx::Vector2d(-1, 0); |
| 933 EXPECT_FALSE(occlusion.occludedLayer(child, clippedLayerInChild)); | 933 EXPECT_FALSE(occlusion.occludedLayer(child, clippedLayerInChild)); |
| 934 EXPECT_FALSE(occlusion.unoccludedLayerContentRect(child, clippedLayerInC
hild).IsEmpty()); | 934 EXPECT_FALSE(occlusion.unoccludedLayerContentRect(child, clippedLayerInC
hild).IsEmpty()); |
| 935 clippedLayerInChild += gfx::Vector2d(1, 0); | 935 clippedLayerInChild += gfx::Vector2d(1, 0); |
| 936 clippedLayerInChild += gfx::Vector2d(1, 0); | 936 clippedLayerInChild += gfx::Vector2d(1, 0); |
| 937 EXPECT_FALSE(occlusion.occludedLayer(child, clippedLayerInChild)); | 937 EXPECT_FALSE(occlusion.occludedLayer(child, clippedLayerInChild)); |
| 938 EXPECT_FALSE(occlusion.unoccludedLayerContentRect(child, clippedLayerInC
hild).IsEmpty()); | 938 EXPECT_FALSE(occlusion.unoccludedLayerContentRect(child, clippedLayerInC
hild).IsEmpty()); |
| 939 clippedLayerInChild += gfx::Vector2d(-1, 0); | 939 clippedLayerInChild += gfx::Vector2d(-1, 0); |
| 940 clippedLayerInChild += gfx::Vector2d(0, -1); | 940 clippedLayerInChild += gfx::Vector2d(0, -1); |
| 941 EXPECT_FALSE(occlusion.occludedLayer(child, clippedLayerInChild)); | 941 EXPECT_FALSE(occlusion.occludedLayer(child, clippedLayerInChild)); |
| 942 EXPECT_FALSE(occlusion.unoccludedLayerContentRect(child, clippedLayerInC
hild).IsEmpty()); | 942 EXPECT_FALSE(occlusion.unoccludedLayerContentRect(child, clippedLayerInC
hild).IsEmpty()); |
| 943 clippedLayerInChild += gfx::Vector2d(0, 1); | 943 clippedLayerInChild += gfx::Vector2d(0, 1); |
| 944 clippedLayerInChild += gfx::Vector2d(0, 1); | 944 clippedLayerInChild += gfx::Vector2d(0, 1); |
| 945 EXPECT_FALSE(occlusion.occludedLayer(child, clippedLayerInChild)); | 945 EXPECT_FALSE(occlusion.occludedLayer(child, clippedLayerInChild)); |
| 946 EXPECT_FALSE(occlusion.unoccludedLayerContentRect(child, clippedLayerInC
hild).IsEmpty()); | 946 EXPECT_FALSE(occlusion.unoccludedLayerContentRect(child, clippedLayerInC
hild).IsEmpty()); |
| 947 clippedLayerInChild += gfx::Vector2d(0, -1); | 947 clippedLayerInChild += gfx::Vector2d(0, -1); |
| 948 | 948 |
| 949 this->leaveContributingSurface(child, occlusion); | 949 this->leaveContributingSurface(child, occlusion); |
| 950 this->enterLayer(parent, occlusion); | 950 this->enterLayer(parent, occlusion); |
| 951 | 951 |
| 952 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionInScreenSpace().ToS
tring()); | 952 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 953 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionInTargetSurface().T
oString()); | 953 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromInsideTarget().
ToString()); |
| 954 | 954 |
| 955 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(75, 55, 1, 1))); | 955 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(75, 55, 1, 1))); |
| 956 EXPECT_RECT_EQ(gfx::Rect(75, 55, 1, 1), occlusion.unoccludedLayerContent
Rect(parent, gfx::Rect(75, 55, 1, 1))); | 956 EXPECT_RECT_EQ(gfx::Rect(75, 55, 1, 1), occlusion.unoccludedLayerContent
Rect(parent, gfx::Rect(75, 55, 1, 1))); |
| 957 } | 957 } |
| 958 }; | 958 }; |
| 959 | 959 |
| 960 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceRotatedOffAxis); | 960 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceRotatedOffAxis); |
| 961 | 961 |
| 962 template<class Types> | 962 template<class Types> |
| 963 class OcclusionTrackerTestSurfaceWithTwoOpaqueChildren : public OcclusionTracker
Test<Types> { | 963 class OcclusionTrackerTestSurfaceWithTwoOpaqueChildren : public OcclusionTracker
Test<Types> { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 978 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(chil
d, this->identityMatrix, gfx::PointF(10, 450), gfx::Size(500, 60), true); | 978 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(chil
d, this->identityMatrix, gfx::PointF(10, 450), gfx::Size(500, 60), true); |
| 979 this->calcDrawEtc(parent); | 979 this->calcDrawEtc(parent); |
| 980 | 980 |
| 981 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 981 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 982 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); | 982 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); |
| 983 | 983 |
| 984 this->visitLayer(layer2, occlusion); | 984 this->visitLayer(layer2, occlusion); |
| 985 this->visitLayer(layer1, occlusion); | 985 this->visitLayer(layer1, occlusion); |
| 986 this->enterContributingSurface(child, occlusion); | 986 this->enterContributingSurface(child, occlusion); |
| 987 | 987 |
| 988 EXPECT_EQ(gfx::Rect(30, 40, 70, 60).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 988 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 989 EXPECT_EQ(gfx::Rect(10, 430, 60, 70).ToString(), occlusion.occlusionInTa
rgetSurface().ToString()); | 989 EXPECT_EQ(gfx::Rect(10, 430, 60, 70).ToString(), occlusion.occlusionFrom
InsideTarget().ToString()); |
| 990 | 990 |
| 991 EXPECT_TRUE(occlusion.occludedLayer(child, gfx::Rect(10, 430, 60, 70))); | 991 EXPECT_TRUE(occlusion.occludedLayer(child, gfx::Rect(10, 430, 60, 70))); |
| 992 EXPECT_FALSE(occlusion.occludedLayer(child, gfx::Rect(9, 430, 60, 70))); | 992 EXPECT_FALSE(occlusion.occludedLayer(child, gfx::Rect(9, 430, 60, 70))); |
| 993 EXPECT_FALSE(occlusion.occludedLayer(child, gfx::Rect(10, 429, 60, 70)))
; | 993 EXPECT_FALSE(occlusion.occludedLayer(child, gfx::Rect(10, 429, 60, 70)))
; |
| 994 EXPECT_FALSE(occlusion.occludedLayer(child, gfx::Rect(11, 430, 60, 70)))
; | 994 EXPECT_FALSE(occlusion.occludedLayer(child, gfx::Rect(11, 430, 60, 70)))
; |
| 995 EXPECT_FALSE(occlusion.occludedLayer(child, gfx::Rect(10, 431, 60, 70)))
; | 995 EXPECT_FALSE(occlusion.occludedLayer(child, gfx::Rect(10, 431, 60, 70)))
; |
| 996 | 996 |
| 997 EXPECT_TRUE(occlusion.unoccludedLayerContentRect(child, gfx::Rect(10, 43
0, 60, 70)).IsEmpty()); | 997 EXPECT_TRUE(occlusion.unoccludedLayerContentRect(child, gfx::Rect(10, 43
0, 60, 70)).IsEmpty()); |
| 998 EXPECT_RECT_EQ(gfx::Rect(9, 430, 1, 70), occlusion.unoccludedLayerConten
tRect(child, gfx::Rect(9, 430, 60, 70))); | 998 EXPECT_RECT_EQ(gfx::Rect(9, 430, 1, 70), occlusion.unoccludedLayerConten
tRect(child, gfx::Rect(9, 430, 60, 70))); |
| 999 EXPECT_RECT_EQ(gfx::Rect(10, 429, 60, 1), occlusion.unoccludedLayerConte
ntRect(child, gfx::Rect(10, 429, 60, 70))); | 999 EXPECT_RECT_EQ(gfx::Rect(10, 429, 60, 1), occlusion.unoccludedLayerConte
ntRect(child, gfx::Rect(10, 429, 60, 70))); |
| 1000 EXPECT_RECT_EQ(gfx::Rect(70, 430, 1, 70), occlusion.unoccludedLayerConte
ntRect(child, gfx::Rect(11, 430, 60, 70))); | 1000 EXPECT_RECT_EQ(gfx::Rect(70, 430, 1, 70), occlusion.unoccludedLayerConte
ntRect(child, gfx::Rect(11, 430, 60, 70))); |
| 1001 EXPECT_RECT_EQ(gfx::Rect(10, 500, 60, 1), occlusion.unoccludedLayerConte
ntRect(child, gfx::Rect(10, 431, 60, 70))); | 1001 EXPECT_RECT_EQ(gfx::Rect(10, 500, 60, 1), occlusion.unoccludedLayerConte
ntRect(child, gfx::Rect(10, 431, 60, 70))); |
| 1002 | 1002 |
| 1003 this->leaveContributingSurface(child, occlusion); | 1003 this->leaveContributingSurface(child, occlusion); |
| 1004 this->enterLayer(parent, occlusion); | 1004 this->enterLayer(parent, occlusion); |
| 1005 | 1005 |
| 1006 EXPECT_EQ(gfx::Rect(30, 40, 70, 60).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 1006 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 1007 EXPECT_EQ(gfx::Rect(30, 40, 70, 60).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 1007 EXPECT_EQ(gfx::Rect(30, 40, 70, 60).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 1008 | 1008 |
| 1009 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 40, 70, 60))); | 1009 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 40, 70, 60))); |
| 1010 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 40, 70, 60)))
; | 1010 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 40, 70, 60)))
; |
| 1011 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 39, 70, 60)))
; | 1011 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 39, 70, 60)))
; |
| 1012 | 1012 |
| 1013 EXPECT_TRUE(occlusion.unoccludedLayerContentRect(parent, gfx::Rect(30, 4
0, 70, 60)).IsEmpty()); | 1013 EXPECT_TRUE(occlusion.unoccludedLayerContentRect(parent, gfx::Rect(30, 4
0, 70, 60)).IsEmpty()); |
| 1014 EXPECT_RECT_EQ(gfx::Rect(29, 40, 1, 60), occlusion.unoccludedLayerConten
tRect(parent, gfx::Rect(29, 40, 70, 60))); | 1014 EXPECT_RECT_EQ(gfx::Rect(29, 40, 1, 60), occlusion.unoccludedLayerConten
tRect(parent, gfx::Rect(29, 40, 70, 60))); |
| 1015 EXPECT_RECT_EQ(gfx::Rect(30, 39, 70, 1), occlusion.unoccludedLayerConten
tRect(parent, gfx::Rect(30, 39, 70, 60))); | 1015 EXPECT_RECT_EQ(gfx::Rect(30, 39, 70, 1), occlusion.unoccludedLayerConten
tRect(parent, gfx::Rect(30, 39, 70, 60))); |
| 1016 EXPECT_RECT_EQ(gfx::Rect(100, 40, 1, 60), occlusion.unoccludedLayerConte
ntRect(parent, gfx::Rect(31, 40, 70, 60))); | 1016 EXPECT_RECT_EQ(gfx::Rect(100, 40, 1, 60), occlusion.unoccludedLayerConte
ntRect(parent, gfx::Rect(31, 40, 70, 60))); |
| 1017 EXPECT_RECT_EQ(gfx::Rect(30, 100, 70, 1), occlusion.unoccludedLayerConte
ntRect(parent, gfx::Rect(30, 41, 70, 60))); | 1017 EXPECT_RECT_EQ(gfx::Rect(30, 100, 70, 1), occlusion.unoccludedLayerConte
ntRect(parent, gfx::Rect(30, 41, 70, 60))); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1063 typename Types::ContentLayerType* layer1 = this->createDrawingLayer(chil
d1, this->identityMatrix, gfx::PointF(-10, -10), gfx::Size(510, 510), true); | 1063 typename Types::ContentLayerType* layer1 = this->createDrawingLayer(chil
d1, this->identityMatrix, gfx::PointF(-10, -10), gfx::Size(510, 510), true); |
| 1064 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(chil
d2, this->identityMatrix, gfx::PointF(-10, -10), gfx::Size(510, 510), true); | 1064 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(chil
d2, this->identityMatrix, gfx::PointF(-10, -10), gfx::Size(510, 510), true); |
| 1065 this->calcDrawEtc(parent); | 1065 this->calcDrawEtc(parent); |
| 1066 | 1066 |
| 1067 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 1067 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 1068 occlusion.setLayerClipRect(gfx::Rect(-20, -20, 1000, 1000)); | 1068 occlusion.setLayerClipRect(gfx::Rect(-20, -20, 1000, 1000)); |
| 1069 | 1069 |
| 1070 this->visitLayer(layer2, occlusion); | 1070 this->visitLayer(layer2, occlusion); |
| 1071 this->enterContributingSurface(child2, occlusion); | 1071 this->enterContributingSurface(child2, occlusion); |
| 1072 | 1072 |
| 1073 EXPECT_EQ(gfx::Rect(20, 30, 80, 70).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 1073 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 1074 EXPECT_EQ(gfx::Rect(-10, 420, 70, 80).ToString(), occlusion.occlusionInT
argetSurface().ToString()); | 1074 EXPECT_EQ(gfx::Rect(-10, 420, 70, 80).ToString(), occlusion.occlusionFro
mInsideTarget().ToString()); |
| 1075 | 1075 |
| 1076 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 80))
); | 1076 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 80))
); |
| 1077 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-11, 420, 70, 80)
)); | 1077 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-11, 420, 70, 80)
)); |
| 1078 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 419, 70, 80)
)); | 1078 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 419, 70, 80)
)); |
| 1079 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 71, 80)
)); | 1079 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 71, 80)
)); |
| 1080 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 81)
)); | 1080 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 81)
)); |
| 1081 | 1081 |
| 1082 occlusion.useDefaultLayerClipRect(); | 1082 occlusion.useDefaultLayerClipRect(); |
| 1083 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 80))
); | 1083 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 80))
); |
| 1084 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-11, 420, 70, 80))
); | 1084 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-11, 420, 70, 80))
); |
| 1085 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 419, 70, 80))
); | 1085 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 419, 70, 80))
); |
| 1086 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 71, 80))
); | 1086 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 71, 80))
); |
| 1087 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 81))
); | 1087 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 81))
); |
| 1088 occlusion.setLayerClipRect(gfx::Rect(-20, -20, 1000, 1000)); | 1088 occlusion.setLayerClipRect(gfx::Rect(-20, -20, 1000, 1000)); |
| 1089 | 1089 |
| 1090 // There is nothing above child2's surface in the z-order. | 1090 // There is nothing above child2's surface in the z-order. |
| 1091 EXPECT_RECT_EQ(gfx::Rect(-10, 420, 70, 80), occlusion.unoccludedContribu
tingSurfaceContentRect(child2, false, gfx::Rect(-10, 420, 70, 80))); | 1091 EXPECT_RECT_EQ(gfx::Rect(-10, 420, 70, 80), occlusion.unoccludedContribu
tingSurfaceContentRect(child2, false, gfx::Rect(-10, 420, 70, 80))); |
| 1092 | 1092 |
| 1093 this->leaveContributingSurface(child2, occlusion); | 1093 this->leaveContributingSurface(child2, occlusion); |
| 1094 this->visitLayer(layer1, occlusion); | 1094 this->visitLayer(layer1, occlusion); |
| 1095 this->enterContributingSurface(child1, occlusion); | 1095 this->enterContributingSurface(child1, occlusion); |
| 1096 | 1096 |
| 1097 EXPECT_EQ(UnionRegions(gfx::Rect(30, 20, 70, 10), gfx::Rect(20, 30, 80,
70)).ToString(), occlusion.occlusionInScreenSpace().ToString()); | 1097 EXPECT_EQ(gfx::Rect(0, 430, 70, 80).ToString(), occlusion.occlusionFromO
utsideTarget().ToString()); |
| 1098 EXPECT_EQ(gfx::Rect(-10, 430, 80, 70).ToString(), occlusion.occlusionInT
argetSurface().ToString()); | 1098 EXPECT_EQ(gfx::Rect(-10, 430, 80, 70).ToString(), occlusion.occlusionFro
mInsideTarget().ToString()); |
| 1099 | 1099 |
| 1100 EXPECT_TRUE(occlusion.occludedLayer(child1, gfx::Rect(-10, 430, 80, 70))
); | 1100 EXPECT_TRUE(occlusion.occludedLayer(child1, gfx::Rect(-10, 430, 80, 70))
); |
| 1101 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(-11, 430, 80, 70)
)); | 1101 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(-11, 430, 80, 70)
)); |
| 1102 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(-10, 429, 80, 70)
)); | 1102 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(-10, 429, 80, 70)
)); |
| 1103 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(-10, 430, 81, 70)
)); | 1103 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(-10, 430, 81, 70)
)); |
| 1104 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(-10, 430, 80, 71)
)); | 1104 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(-10, 430, 80, 71)
)); |
| 1105 | 1105 |
| 1106 // child2's contents will occlude child1 below it. | 1106 // child2's contents will occlude child1 below it. |
| 1107 EXPECT_RECT_EQ(gfx::Rect(-10, 430, 10, 70), occlusion.unoccludedContribu
tingSurfaceContentRect(child1, false, gfx::Rect(-10, 430, 80, 70))); | 1107 EXPECT_RECT_EQ(gfx::Rect(-10, 430, 10, 70), occlusion.unoccludedContribu
tingSurfaceContentRect(child1, false, gfx::Rect(-10, 430, 80, 70))); |
| 1108 | 1108 |
| 1109 this->leaveContributingSurface(child1, occlusion); | 1109 this->leaveContributingSurface(child1, occlusion); |
| 1110 this->enterLayer(parent, occlusion); | 1110 this->enterLayer(parent, occlusion); |
| 1111 | 1111 |
| 1112 EXPECT_EQ(UnionRegions(gfx::Rect(30, 20, 70, 10), gfx::Rect(20, 30, 80,
70)).ToString(), occlusion.occlusionInScreenSpace().ToString()); | 1112 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 1113 EXPECT_EQ(UnionRegions(gfx::Rect(30, 20, 70, 10), gfx::Rect(20, 30, 80,
70)).ToString(), occlusion.occlusionInTargetSurface().ToString()); | 1113 EXPECT_EQ(UnionRegions(gfx::Rect(30, 20, 70, 10), gfx::Rect(20, 30, 80,
70)).ToString(), occlusion.occlusionFromInsideTarget().ToString()); |
| 1114 | 1114 |
| 1115 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(20, 20, 80, 80)))
; | 1115 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(20, 20, 80, 80)))
; |
| 1116 | 1116 |
| 1117 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 20, 70, 80))); | 1117 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(30, 20, 70, 80))); |
| 1118 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 20, 70, 80)))
; | 1118 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(29, 20, 70, 80)))
; |
| 1119 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 19, 70, 80)))
; | 1119 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(30, 19, 70, 80)))
; |
| 1120 | 1120 |
| 1121 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(20, 30, 80, 70))); | 1121 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(20, 30, 80, 70))); |
| 1122 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(19, 30, 80, 70)))
; | 1122 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(19, 30, 80, 70)))
; |
| 1123 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(20, 29, 80, 70)))
; | 1123 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(20, 29, 80, 70)))
; |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1173 typename Types::ContentLayerType* layer1 = this->createDrawingLayer(chil
d1, this->identityMatrix, gfx::PointF(-10, -20), gfx::Size(510, 510), true); | 1173 typename Types::ContentLayerType* layer1 = this->createDrawingLayer(chil
d1, this->identityMatrix, gfx::PointF(-10, -20), gfx::Size(510, 510), true); |
| 1174 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(chil
d2, this->identityMatrix, gfx::PointF(-10, -10), gfx::Size(510, 510), true); | 1174 typename Types::ContentLayerType* layer2 = this->createDrawingLayer(chil
d2, this->identityMatrix, gfx::PointF(-10, -10), gfx::Size(510, 510), true); |
| 1175 this->calcDrawEtc(parent); | 1175 this->calcDrawEtc(parent); |
| 1176 | 1176 |
| 1177 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 1177 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 1178 occlusion.setLayerClipRect(gfx::Rect(-30, -30, 1000, 1000)); | 1178 occlusion.setLayerClipRect(gfx::Rect(-30, -30, 1000, 1000)); |
| 1179 | 1179 |
| 1180 this->visitLayer(layer2, occlusion); | 1180 this->visitLayer(layer2, occlusion); |
| 1181 this->enterLayer(child2, occlusion); | 1181 this->enterLayer(child2, occlusion); |
| 1182 | 1182 |
| 1183 EXPECT_EQ(gfx::Rect(20, 30, 80, 70).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 1183 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 1184 EXPECT_EQ(gfx::Rect(-10, 420, 70, 80).ToString(), occlusion.occlusionInT
argetSurface().ToString()); | 1184 EXPECT_EQ(gfx::Rect(-10, 420, 70, 80).ToString(), occlusion.occlusionFro
mInsideTarget().ToString()); |
| 1185 | 1185 |
| 1186 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 80))
); | 1186 EXPECT_TRUE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 80))
); |
| 1187 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-11, 420, 70, 80)
)); | 1187 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-11, 420, 70, 80)
)); |
| 1188 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 419, 70, 80)
)); | 1188 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 419, 70, 80)
)); |
| 1189 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 71, 80)
)); | 1189 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 71, 80)
)); |
| 1190 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 81)
)); | 1190 EXPECT_FALSE(occlusion.occludedLayer(child2, gfx::Rect(-10, 420, 70, 81)
)); |
| 1191 | 1191 |
| 1192 this->leaveLayer(child2, occlusion); | 1192 this->leaveLayer(child2, occlusion); |
| 1193 this->enterContributingSurface(child2, occlusion); | 1193 this->enterContributingSurface(child2, occlusion); |
| 1194 | 1194 |
| 1195 // There is nothing above child2's surface in the z-order. | 1195 // There is nothing above child2's surface in the z-order. |
| 1196 EXPECT_RECT_EQ(gfx::Rect(-10, 420, 70, 80), occlusion.unoccludedContribu
tingSurfaceContentRect(child2, false, gfx::Rect(-10, 420, 70, 80))); | 1196 EXPECT_RECT_EQ(gfx::Rect(-10, 420, 70, 80), occlusion.unoccludedContribu
tingSurfaceContentRect(child2, false, gfx::Rect(-10, 420, 70, 80))); |
| 1197 | 1197 |
| 1198 this->leaveContributingSurface(child2, occlusion); | 1198 this->leaveContributingSurface(child2, occlusion); |
| 1199 this->visitLayer(layer1, occlusion); | 1199 this->visitLayer(layer1, occlusion); |
| 1200 this->enterContributingSurface(child1, occlusion); | 1200 this->enterContributingSurface(child1, occlusion); |
| 1201 | 1201 |
| 1202 EXPECT_EQ(gfx::Rect(10, 20, 90, 80).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 1202 EXPECT_EQ(gfx::Rect(420, -10, 70, 80).ToString(), occlusion.occlusionFro
mOutsideTarget().ToString()); |
| 1203 EXPECT_EQ(gfx::Rect(420, -20, 80, 90).ToString(), occlusion.occlusionInT
argetSurface().ToString()); | 1203 EXPECT_EQ(gfx::Rect(420, -20, 80, 90).ToString(), occlusion.occlusionFro
mInsideTarget().ToString()); |
| 1204 | 1204 |
| 1205 EXPECT_TRUE(occlusion.occludedLayer(child1, gfx::Rect(420, -20, 80, 90))
); | 1205 EXPECT_TRUE(occlusion.occludedLayer(child1, gfx::Rect(420, -20, 80, 90))
); |
| 1206 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(419, -20, 80, 90)
)); | 1206 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(419, -20, 80, 90)
)); |
| 1207 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(420, -21, 80, 90)
)); | 1207 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(420, -21, 80, 90)
)); |
| 1208 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(420, -19, 80, 90)
)); | 1208 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(420, -19, 80, 90)
)); |
| 1209 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(421, -20, 80, 90)
)); | 1209 EXPECT_FALSE(occlusion.occludedLayer(child1, gfx::Rect(421, -20, 80, 90)
)); |
| 1210 | 1210 |
| 1211 // child2's contents will occlude child1 below it. | 1211 // child2's contents will occlude child1 below it. |
| 1212 EXPECT_RECT_EQ(gfx::Rect(420, -20, 80, 90), occlusion.unoccludedContribu
tingSurfaceContentRect(child1, false, gfx::Rect(420, -20, 80, 90))); | 1212 EXPECT_RECT_EQ(gfx::Rect(420, -20, 80, 90), occlusion.unoccludedContribu
tingSurfaceContentRect(child1, false, gfx::Rect(420, -20, 80, 90))); |
| 1213 EXPECT_RECT_EQ(gfx::Rect(490, -10, 10, 80), occlusion.unoccludedContribu
tingSurfaceContentRect(child1, false, gfx::Rect(420, -10, 80, 90))); | 1213 EXPECT_RECT_EQ(gfx::Rect(490, -10, 10, 80), occlusion.unoccludedContribu
tingSurfaceContentRect(child1, false, gfx::Rect(420, -10, 80, 90))); |
| 1214 EXPECT_RECT_EQ(gfx::Rect(420, -20, 70, 10), occlusion.unoccludedContribu
tingSurfaceContentRect(child1, false, gfx::Rect(420, -20, 70, 90))); | 1214 EXPECT_RECT_EQ(gfx::Rect(420, -20, 70, 10), occlusion.unoccludedContribu
tingSurfaceContentRect(child1, false, gfx::Rect(420, -20, 70, 90))); |
| 1215 | 1215 |
| 1216 this->leaveContributingSurface(child1, occlusion); | 1216 this->leaveContributingSurface(child1, occlusion); |
| 1217 this->enterLayer(parent, occlusion); | 1217 this->enterLayer(parent, occlusion); |
| 1218 | 1218 |
| 1219 EXPECT_EQ(gfx::Rect(10, 20, 90, 80).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 1219 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 1220 EXPECT_EQ(gfx::Rect(10, 20, 90, 80).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 1220 EXPECT_EQ(gfx::Rect(10, 20, 90, 80).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 1221 | 1221 |
| 1222 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(10, 20, 90, 80))); | 1222 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(10, 20, 90, 80))); |
| 1223 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(9, 20, 90, 80))); | 1223 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(9, 20, 90, 80))); |
| 1224 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(10, 19, 90, 80)))
; | 1224 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(10, 19, 90, 80)))
; |
| 1225 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(11, 20, 90, 80)))
; | 1225 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(11, 20, 90, 80)))
; |
| 1226 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(10, 21, 90, 80)))
; | 1226 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(10, 21, 90, 80)))
; |
| 1227 | 1227 |
| 1228 /* Justification for the above occlusion: | 1228 /* Justification for the above occlusion: |
| 1229 100 | 1229 100 |
| 1230 +---------------------+ | 1230 +---------------------+ |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1284 | 1284 |
| 1285 this->calcDrawEtc(parent); | 1285 this->calcDrawEtc(parent); |
| 1286 | 1286 |
| 1287 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 1287 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 1288 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); | 1288 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); |
| 1289 | 1289 |
| 1290 // Opacity layer won't contribute to occlusion. | 1290 // Opacity layer won't contribute to occlusion. |
| 1291 this->visitLayer(opacityLayer, occlusion); | 1291 this->visitLayer(opacityLayer, occlusion); |
| 1292 this->enterContributingSurface(opacityLayer, occlusion); | 1292 this->enterContributingSurface(opacityLayer, occlusion); |
| 1293 | 1293 |
| 1294 EXPECT_TRUE(occlusion.occlusionInScreenSpace().IsEmpty()); | 1294 EXPECT_TRUE(occlusion.occlusionFromOutsideTarget().IsEmpty()); |
| 1295 EXPECT_TRUE(occlusion.occlusionInTargetSurface().IsEmpty()); | 1295 EXPECT_TRUE(occlusion.occlusionFromInsideTarget().IsEmpty()); |
| 1296 | 1296 |
| 1297 // And has nothing to contribute to its parent surface. | 1297 // And has nothing to contribute to its parent surface. |
| 1298 this->leaveContributingSurface(opacityLayer, occlusion); | 1298 this->leaveContributingSurface(opacityLayer, occlusion); |
| 1299 EXPECT_TRUE(occlusion.occlusionInScreenSpace().IsEmpty()); | 1299 EXPECT_TRUE(occlusion.occlusionFromOutsideTarget().IsEmpty()); |
| 1300 EXPECT_TRUE(occlusion.occlusionInTargetSurface().IsEmpty()); | 1300 EXPECT_TRUE(occlusion.occlusionFromInsideTarget().IsEmpty()); |
| 1301 | 1301 |
| 1302 // Opaque layer will contribute to occlusion. | 1302 // Opaque layer will contribute to occlusion. |
| 1303 this->visitLayer(opaqueLayer, occlusion); | 1303 this->visitLayer(opaqueLayer, occlusion); |
| 1304 this->enterContributingSurface(opaqueLayer, occlusion); | 1304 this->enterContributingSurface(opaqueLayer, occlusion); |
| 1305 | 1305 |
| 1306 EXPECT_EQ(gfx::Rect(30, 30, 70, 70).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 1306 EXPECT_TRUE(occlusion.occlusionFromOutsideTarget().IsEmpty()); |
| 1307 EXPECT_EQ(gfx::Rect(0, 430, 70, 70).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 1307 EXPECT_EQ(gfx::Rect(0, 430, 70, 70).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 1308 | 1308 |
| 1309 // And it gets translated to the parent surface. | 1309 // And it gets translated to the parent surface. |
| 1310 this->leaveContributingSurface(opaqueLayer, occlusion); | 1310 this->leaveContributingSurface(opaqueLayer, occlusion); |
| 1311 EXPECT_EQ(gfx::Rect(30, 30, 70, 70).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 1311 EXPECT_TRUE(occlusion.occlusionFromOutsideTarget().IsEmpty()); |
| 1312 EXPECT_EQ(gfx::Rect(30, 30, 70, 70).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 1312 EXPECT_EQ(gfx::Rect(30, 30, 70, 70).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 1313 | 1313 |
| 1314 // The blur layer needs to throw away any occlusion from outside its sub
tree. | 1314 // The blur layer needs to throw away any occlusion from outside its sub
tree. |
| 1315 this->enterLayer(blurLayer, occlusion); | 1315 this->enterLayer(blurLayer, occlusion); |
| 1316 EXPECT_TRUE(occlusion.occlusionInScreenSpace().IsEmpty()); | 1316 EXPECT_TRUE(occlusion.occlusionFromOutsideTarget().IsEmpty()); |
| 1317 EXPECT_TRUE(occlusion.occlusionInTargetSurface().IsEmpty()); | 1317 EXPECT_TRUE(occlusion.occlusionFromInsideTarget().IsEmpty()); |
| 1318 | 1318 |
| 1319 // And it won't contribute to occlusion. | 1319 // And it won't contribute to occlusion. |
| 1320 this->leaveLayer(blurLayer, occlusion); | 1320 this->leaveLayer(blurLayer, occlusion); |
| 1321 this->enterContributingSurface(blurLayer, occlusion); | 1321 this->enterContributingSurface(blurLayer, occlusion); |
| 1322 EXPECT_TRUE(occlusion.occlusionInScreenSpace().IsEmpty()); | 1322 EXPECT_TRUE(occlusion.occlusionFromOutsideTarget().IsEmpty()); |
| 1323 EXPECT_TRUE(occlusion.occlusionInTargetSurface().IsEmpty()); | 1323 EXPECT_TRUE(occlusion.occlusionFromInsideTarget().IsEmpty()); |
| 1324 | 1324 |
| 1325 // But the opaque layer's occlusion is preserved on the parent. | 1325 // But the opaque layer's occlusion is preserved on the parent. |
| 1326 this->leaveContributingSurface(blurLayer, occlusion); | 1326 this->leaveContributingSurface(blurLayer, occlusion); |
| 1327 this->enterLayer(parent, occlusion); | 1327 this->enterLayer(parent, occlusion); |
| 1328 EXPECT_EQ(gfx::Rect(30, 30, 70, 70).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 1328 EXPECT_TRUE(occlusion.occlusionFromOutsideTarget().IsEmpty()); |
| 1329 EXPECT_EQ(gfx::Rect(30, 30, 70, 70).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 1329 EXPECT_EQ(gfx::Rect(30, 30, 70, 70).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 1330 } | 1330 } |
| 1331 }; | 1331 }; |
| 1332 | 1332 |
| 1333 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestFilters); | 1333 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestFilters); |
| 1334 | 1334 |
| 1335 template<class Types> | 1335 template<class Types> |
| 1336 class OcclusionTrackerTestReplicaDoesOcclude : public OcclusionTrackerTest<Types
> { | 1336 class OcclusionTrackerTestReplicaDoesOcclude : public OcclusionTrackerTest<Types
> { |
| 1337 protected: | 1337 protected: |
| 1338 OcclusionTrackerTestReplicaDoesOcclude(bool opaqueLayers) : OcclusionTracker
Test<Types>(opaqueLayers) {} | 1338 OcclusionTrackerTestReplicaDoesOcclude(bool opaqueLayers) : OcclusionTracker
Test<Types>(opaqueLayers) {} |
| 1339 void runMyTest() | 1339 void runMyTest() |
| 1340 { | 1340 { |
| 1341 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 200)); | 1341 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 200)); |
| 1342 typename Types::LayerType* surface = this->createDrawingSurface(parent,
this->identityMatrix, gfx::PointF(0, 100), gfx::Size(50, 50), true); | 1342 typename Types::LayerType* surface = this->createDrawingSurface(parent,
this->identityMatrix, gfx::PointF(0, 100), gfx::Size(50, 50), true); |
| 1343 this->createReplicaLayer(surface, this->identityMatrix, gfx::PointF(50,
50), gfx::Size()); | 1343 this->createReplicaLayer(surface, this->identityMatrix, gfx::PointF(50,
50), gfx::Size()); |
| 1344 this->calcDrawEtc(parent); | 1344 this->calcDrawEtc(parent); |
| 1345 | 1345 |
| 1346 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 1346 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 1347 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); | 1347 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); |
| 1348 | 1348 |
| 1349 this->visitLayer(surface, occlusion); | 1349 this->visitLayer(surface, occlusion); |
| 1350 | 1350 |
| 1351 EXPECT_EQ(gfx::Rect(0, 100, 50, 50).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 1351 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), occlusion.occlusionFromIns
ideTarget().ToString()); |
| 1352 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), occlusion.occlusionInTarge
tSurface().ToString()); | |
| 1353 | 1352 |
| 1354 this->visitContributingSurface(surface, occlusion); | 1353 this->visitContributingSurface(surface, occlusion); |
| 1355 this->enterLayer(parent, occlusion); | 1354 this->enterLayer(parent, occlusion); |
| 1356 | 1355 |
| 1357 // The surface and replica should both be occluding the parent. | 1356 // The surface and replica should both be occluding the parent. |
| 1358 EXPECT_EQ(UnionRegions(gfx::Rect(0, 100, 50, 50), gfx::Rect(50, 150, 50,
50)).ToString(), occlusion.occlusionInTargetSurface().ToString()); | 1357 EXPECT_EQ(UnionRegions(gfx::Rect(0, 100, 50, 50), gfx::Rect(50, 150, 50,
50)).ToString(), occlusion.occlusionFromInsideTarget().ToString()); |
| 1359 } | 1358 } |
| 1360 }; | 1359 }; |
| 1361 | 1360 |
| 1362 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReplicaDoesOcclude); | 1361 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReplicaDoesOcclude); |
| 1363 | 1362 |
| 1364 template<class Types> | 1363 template<class Types> |
| 1365 class OcclusionTrackerTestReplicaWithClipping : public OcclusionTrackerTest<Type
s> { | 1364 class OcclusionTrackerTestReplicaWithClipping : public OcclusionTrackerTest<Type
s> { |
| 1366 protected: | 1365 protected: |
| 1367 OcclusionTrackerTestReplicaWithClipping(bool opaqueLayers) : OcclusionTracke
rTest<Types>(opaqueLayers) {} | 1366 OcclusionTrackerTestReplicaWithClipping(bool opaqueLayers) : OcclusionTracke
rTest<Types>(opaqueLayers) {} |
| 1368 void runMyTest() | 1367 void runMyTest() |
| 1369 { | 1368 { |
| 1370 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 170)); | 1369 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 170)); |
| 1371 parent->setMasksToBounds(true); | 1370 parent->setMasksToBounds(true); |
| 1372 typename Types::LayerType* surface = this->createDrawingSurface(parent,
this->identityMatrix, gfx::PointF(0, 100), gfx::Size(50, 50), true); | 1371 typename Types::LayerType* surface = this->createDrawingSurface(parent,
this->identityMatrix, gfx::PointF(0, 100), gfx::Size(50, 50), true); |
| 1373 this->createReplicaLayer(surface, this->identityMatrix, gfx::PointF(50,
50), gfx::Size()); | 1372 this->createReplicaLayer(surface, this->identityMatrix, gfx::PointF(50,
50), gfx::Size()); |
| 1374 this->calcDrawEtc(parent); | 1373 this->calcDrawEtc(parent); |
| 1375 | 1374 |
| 1376 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 1375 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 1377 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); | 1376 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); |
| 1378 | 1377 |
| 1379 this->visitLayer(surface, occlusion); | 1378 this->visitLayer(surface, occlusion); |
| 1380 | 1379 |
| 1381 EXPECT_EQ(gfx::Rect(0, 100, 50, 50).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 1380 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), occlusion.occlusionFromIns
ideTarget().ToString()); |
| 1382 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), occlusion.occlusionInTarge
tSurface().ToString()); | |
| 1383 | 1381 |
| 1384 this->visitContributingSurface(surface, occlusion); | 1382 this->visitContributingSurface(surface, occlusion); |
| 1385 this->enterLayer(parent, occlusion); | 1383 this->enterLayer(parent, occlusion); |
| 1386 | 1384 |
| 1387 // The surface and replica should both be occluding the parent. | 1385 // The surface and replica should both be occluding the parent. |
| 1388 EXPECT_EQ(UnionRegions(gfx::Rect(0, 100, 50, 50), gfx::Rect(50, 150, 50,
20)).ToString(), occlusion.occlusionInTargetSurface().ToString()); | 1386 EXPECT_EQ(UnionRegions(gfx::Rect(0, 100, 50, 50), gfx::Rect(50, 150, 50,
20)).ToString(), occlusion.occlusionFromInsideTarget().ToString()); |
| 1389 } | 1387 } |
| 1390 }; | 1388 }; |
| 1391 | 1389 |
| 1392 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReplicaWithClipping); | 1390 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReplicaWithClipping); |
| 1393 | 1391 |
| 1394 template<class Types> | 1392 template<class Types> |
| 1395 class OcclusionTrackerTestReplicaWithMask : public OcclusionTrackerTest<Types> { | 1393 class OcclusionTrackerTestReplicaWithMask : public OcclusionTrackerTest<Types> { |
| 1396 protected: | 1394 protected: |
| 1397 OcclusionTrackerTestReplicaWithMask(bool opaqueLayers) : OcclusionTrackerTes
t<Types>(opaqueLayers) {} | 1395 OcclusionTrackerTestReplicaWithMask(bool opaqueLayers) : OcclusionTrackerTes
t<Types>(opaqueLayers) {} |
| 1398 void runMyTest() | 1396 void runMyTest() |
| 1399 { | 1397 { |
| 1400 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 200)); | 1398 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 200)); |
| 1401 typename Types::LayerType* surface = this->createDrawingSurface(parent,
this->identityMatrix, gfx::PointF(0, 100), gfx::Size(50, 50), true); | 1399 typename Types::LayerType* surface = this->createDrawingSurface(parent,
this->identityMatrix, gfx::PointF(0, 100), gfx::Size(50, 50), true); |
| 1402 typename Types::LayerType* replica = this->createReplicaLayer(surface, t
his->identityMatrix, gfx::PointF(50, 50), gfx::Size()); | 1400 typename Types::LayerType* replica = this->createReplicaLayer(surface, t
his->identityMatrix, gfx::PointF(50, 50), gfx::Size()); |
| 1403 this->createMaskLayer(replica, gfx::Size(10, 10)); | 1401 this->createMaskLayer(replica, gfx::Size(10, 10)); |
| 1404 this->calcDrawEtc(parent); | 1402 this->calcDrawEtc(parent); |
| 1405 | 1403 |
| 1406 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 1404 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 1407 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); | 1405 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); |
| 1408 | 1406 |
| 1409 this->visitLayer(surface, occlusion); | 1407 this->visitLayer(surface, occlusion); |
| 1410 | 1408 |
| 1411 EXPECT_EQ(gfx::Rect(0, 100, 50, 50).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 1409 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), occlusion.occlusionFromIns
ideTarget().ToString()); |
| 1412 EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), occlusion.occlusionInTarge
tSurface().ToString()); | |
| 1413 | 1410 |
| 1414 this->visitContributingSurface(surface, occlusion); | 1411 this->visitContributingSurface(surface, occlusion); |
| 1415 this->enterLayer(parent, occlusion); | 1412 this->enterLayer(parent, occlusion); |
| 1416 | 1413 |
| 1417 // The replica should not be occluding the parent, since it has a mask a
pplied to it. | 1414 // The replica should not be occluding the parent, since it has a mask a
pplied to it. |
| 1418 EXPECT_EQ(gfx::Rect(0, 100, 50, 50).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 1415 EXPECT_EQ(gfx::Rect(0, 100, 50, 50).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 1419 } | 1416 } |
| 1420 }; | 1417 }; |
| 1421 | 1418 |
| 1422 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReplicaWithMask); | 1419 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReplicaWithMask); |
| 1423 | 1420 |
| 1424 template<class Types> | 1421 template<class Types> |
| 1425 class OcclusionTrackerTestLayerClipRectOutsideChild : public OcclusionTrackerTes
t<Types> { | 1422 class OcclusionTrackerTestLayerClipRectOutsideChild : public OcclusionTrackerTes
t<Types> { |
| 1426 protected: | 1423 protected: |
| 1427 OcclusionTrackerTestLayerClipRectOutsideChild(bool opaqueLayers) : Occlusion
TrackerTest<Types>(opaqueLayers) {} | 1424 OcclusionTrackerTestLayerClipRectOutsideChild(bool opaqueLayers) : Occlusion
TrackerTest<Types>(opaqueLayers) {} |
| 1428 void runMyTest() | 1425 void runMyTest() |
| (...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1815 | 1812 |
| 1816 // Test without any clip rect. | 1813 // Test without any clip rect. |
| 1817 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); | 1814 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); |
| 1818 EXPECT_FALSE(occlusion.occludedLayer(layer, gfx::Rect(200, 100, 100, 100
))); | 1815 EXPECT_FALSE(occlusion.occludedLayer(layer, gfx::Rect(200, 100, 100, 100
))); |
| 1819 occlusion.useDefaultLayerClipRect(); | 1816 occlusion.useDefaultLayerClipRect(); |
| 1820 | 1817 |
| 1821 this->leaveLayer(layer, occlusion); | 1818 this->leaveLayer(layer, occlusion); |
| 1822 this->visitContributingSurface(layer, occlusion); | 1819 this->visitContributingSurface(layer, occlusion); |
| 1823 this->enterLayer(parent, occlusion); | 1820 this->enterLayer(parent, occlusion); |
| 1824 | 1821 |
| 1825 EXPECT_TRUE(occlusion.occlusionInScreenSpace().IsEmpty()); | 1822 EXPECT_TRUE(occlusion.occlusionFromOutsideTarget().IsEmpty()); |
| 1826 } | 1823 } |
| 1827 }; | 1824 }; |
| 1828 | 1825 |
| 1829 MAIN_AND_IMPL_THREAD_TEST(OcclusionTrackerTestOpaqueContentsRegionEmpty); | 1826 MAIN_AND_IMPL_THREAD_TEST(OcclusionTrackerTestOpaqueContentsRegionEmpty); |
| 1830 | 1827 |
| 1831 template<class Types> | 1828 template<class Types> |
| 1832 class OcclusionTrackerTestOpaqueContentsRegionNonEmpty : public OcclusionTracker
Test<Types> { | 1829 class OcclusionTrackerTestOpaqueContentsRegionNonEmpty : public OcclusionTracker
Test<Types> { |
| 1833 protected: | 1830 protected: |
| 1834 OcclusionTrackerTestOpaqueContentsRegionNonEmpty(bool opaqueLayers) : Occlus
ionTrackerTest<Types>(opaqueLayers) {} | 1831 OcclusionTrackerTestOpaqueContentsRegionNonEmpty(bool opaqueLayers) : Occlus
ionTrackerTest<Types>(opaqueLayers) {} |
| 1835 void runMyTest() | 1832 void runMyTest() |
| 1836 { | 1833 { |
| 1837 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(300, 300)); | 1834 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(300, 300)); |
| 1838 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren
t, this->identityMatrix, gfx::PointF(100, 100), gfx::Size(200, 200), false); | 1835 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren
t, this->identityMatrix, gfx::PointF(100, 100), gfx::Size(200, 200), false); |
| 1839 this->calcDrawEtc(parent); | 1836 this->calcDrawEtc(parent); |
| 1840 | 1837 |
| 1841 { | 1838 { |
| 1842 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Typ
es::RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 1839 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Typ
es::RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 1843 layer->setOpaqueContentsRect(gfx::Rect(0, 0, 100, 100)); | 1840 layer->setOpaqueContentsRect(gfx::Rect(0, 0, 100, 100)); |
| 1844 | 1841 |
| 1845 this->resetLayerIterator(); | 1842 this->resetLayerIterator(); |
| 1846 this->visitLayer(layer, occlusion); | 1843 this->visitLayer(layer, occlusion); |
| 1847 this->enterLayer(parent, occlusion); | 1844 this->enterLayer(parent, occlusion); |
| 1848 | 1845 |
| 1849 EXPECT_EQ(gfx::Rect(100, 100, 100, 100).ToString(), occlusion.occlus
ionInScreenSpace().ToString()); | 1846 EXPECT_EQ(gfx::Rect(100, 100, 100, 100).ToString(), occlusion.occlus
ionFromInsideTarget().ToString()); |
| 1850 | 1847 |
| 1851 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(0, 100, 100,
100))); | 1848 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(0, 100, 100,
100))); |
| 1852 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(100, 100, 100,
100))); | 1849 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(100, 100, 100,
100))); |
| 1853 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(200, 200, 100
, 100))); | 1850 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(200, 200, 100
, 100))); |
| 1854 } | 1851 } |
| 1855 | 1852 |
| 1856 { | 1853 { |
| 1857 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Typ
es::RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 1854 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Typ
es::RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 1858 layer->setOpaqueContentsRect(gfx::Rect(20, 20, 180, 180)); | 1855 layer->setOpaqueContentsRect(gfx::Rect(20, 20, 180, 180)); |
| 1859 | 1856 |
| 1860 this->resetLayerIterator(); | 1857 this->resetLayerIterator(); |
| 1861 this->visitLayer(layer, occlusion); | 1858 this->visitLayer(layer, occlusion); |
| 1862 this->enterLayer(parent, occlusion); | 1859 this->enterLayer(parent, occlusion); |
| 1863 | 1860 |
| 1864 EXPECT_EQ(gfx::Rect(120, 120, 180, 180).ToString(), occlusion.occlus
ionInScreenSpace().ToString()); | 1861 EXPECT_EQ(gfx::Rect(120, 120, 180, 180).ToString(), occlusion.occlus
ionFromInsideTarget().ToString()); |
| 1865 | 1862 |
| 1866 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(0, 100, 100,
100))); | 1863 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(0, 100, 100,
100))); |
| 1867 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(100, 100, 100
, 100))); | 1864 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(100, 100, 100
, 100))); |
| 1868 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(200, 200, 100,
100))); | 1865 EXPECT_TRUE(occlusion.occludedLayer(parent, gfx::Rect(200, 200, 100,
100))); |
| 1869 } | 1866 } |
| 1870 | 1867 |
| 1871 { | 1868 { |
| 1872 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Typ
es::RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 1869 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Typ
es::RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 1873 layer->setOpaqueContentsRect(gfx::Rect(150, 150, 100, 100)); | 1870 layer->setOpaqueContentsRect(gfx::Rect(150, 150, 100, 100)); |
| 1874 | 1871 |
| 1875 this->resetLayerIterator(); | 1872 this->resetLayerIterator(); |
| 1876 this->visitLayer(layer, occlusion); | 1873 this->visitLayer(layer, occlusion); |
| 1877 this->enterLayer(parent, occlusion); | 1874 this->enterLayer(parent, occlusion); |
| 1878 | 1875 |
| 1879 EXPECT_EQ(gfx::Rect(250, 250, 50, 50).ToString(), occlusion.occlusio
nInScreenSpace().ToString()); | 1876 EXPECT_EQ(gfx::Rect(250, 250, 50, 50).ToString(), occlusion.occlusio
nFromInsideTarget().ToString()); |
| 1880 | 1877 |
| 1881 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(0, 100, 100,
100))); | 1878 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(0, 100, 100,
100))); |
| 1882 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(100, 100, 100
, 100))); | 1879 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(100, 100, 100
, 100))); |
| 1883 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(200, 200, 100
, 100))); | 1880 EXPECT_FALSE(occlusion.occludedLayer(parent, gfx::Rect(200, 200, 100
, 100))); |
| 1884 } | 1881 } |
| 1885 } | 1882 } |
| 1886 }; | 1883 }; |
| 1887 | 1884 |
| 1888 MAIN_AND_IMPL_THREAD_TEST(OcclusionTrackerTestOpaqueContentsRegionNonEmpty); | 1885 MAIN_AND_IMPL_THREAD_TEST(OcclusionTrackerTestOpaqueContentsRegionNonEmpty); |
| 1889 | 1886 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1931 | 1928 |
| 1932 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(300, 300)); | 1929 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(300, 300)); |
| 1933 typename Types::ContentLayerType* child1 = this->createDrawingLayer(pare
nt, translationToBack, gfx::PointF(0, 0), gfx::Size(100, 100), true); | 1930 typename Types::ContentLayerType* child1 = this->createDrawingLayer(pare
nt, translationToBack, gfx::PointF(0, 0), gfx::Size(100, 100), true); |
| 1934 typename Types::ContentLayerType* child2 = this->createDrawingLayer(pare
nt, translationToFront, gfx::PointF(50, 50), gfx::Size(100, 100), true); | 1931 typename Types::ContentLayerType* child2 = this->createDrawingLayer(pare
nt, translationToFront, gfx::PointF(50, 50), gfx::Size(100, 100), true); |
| 1935 parent->setPreserves3D(true); | 1932 parent->setPreserves3D(true); |
| 1936 | 1933 |
| 1937 this->calcDrawEtc(parent); | 1934 this->calcDrawEtc(parent); |
| 1938 | 1935 |
| 1939 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 1936 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 1940 this->visitLayer(child2, occlusion); | 1937 this->visitLayer(child2, occlusion); |
| 1941 EXPECT_TRUE(occlusion.occlusionInScreenSpace().IsEmpty()); | 1938 EXPECT_TRUE(occlusion.occlusionFromOutsideTarget().IsEmpty()); |
| 1942 EXPECT_TRUE(occlusion.occlusionInTargetSurface().IsEmpty()); | 1939 EXPECT_TRUE(occlusion.occlusionFromInsideTarget().IsEmpty()); |
| 1943 | 1940 |
| 1944 this->visitLayer(child1, occlusion); | 1941 this->visitLayer(child1, occlusion); |
| 1945 EXPECT_TRUE(occlusion.occlusionInScreenSpace().IsEmpty()); | 1942 EXPECT_TRUE(occlusion.occlusionFromOutsideTarget().IsEmpty()); |
| 1946 EXPECT_TRUE(occlusion.occlusionInTargetSurface().IsEmpty()); | 1943 EXPECT_TRUE(occlusion.occlusionFromInsideTarget().IsEmpty()); |
| 1947 } | 1944 } |
| 1948 }; | 1945 }; |
| 1949 | 1946 |
| 1950 // This test will have different layer ordering on the impl thread; the test wil
l only work on the main thread. | 1947 // This test will have different layer ordering on the impl thread; the test wil
l only work on the main thread. |
| 1951 MAIN_THREAD_TEST(OcclusionTrackerTestUnsorted3dLayers); | 1948 MAIN_THREAD_TEST(OcclusionTrackerTestUnsorted3dLayers); |
| 1952 | 1949 |
| 1953 template<class Types> | 1950 template<class Types> |
| 1954 class OcclusionTrackerTestPerspectiveTransform : public OcclusionTrackerTest<Typ
es> { | 1951 class OcclusionTrackerTestPerspectiveTransform : public OcclusionTrackerTest<Typ
es> { |
| 1955 protected: | 1952 protected: |
| 1956 OcclusionTrackerTestPerspectiveTransform(bool opaqueLayers) : OcclusionTrack
erTest<Types>(opaqueLayers) {} | 1953 OcclusionTrackerTestPerspectiveTransform(bool opaqueLayers) : OcclusionTrack
erTest<Types>(opaqueLayers) {} |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2029 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren
t, transform, gfx::PointF(0, 0), gfx::Size(100, 100), true); | 2026 typename Types::ContentLayerType* layer = this->createDrawingLayer(paren
t, transform, gfx::PointF(0, 0), gfx::Size(100, 100), true); |
| 2030 parent->setPreserves3D(true); | 2027 parent->setPreserves3D(true); |
| 2031 layer->setPreserves3D(true); | 2028 layer->setPreserves3D(true); |
| 2032 this->calcDrawEtc(parent); | 2029 this->calcDrawEtc(parent); |
| 2033 | 2030 |
| 2034 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 2031 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 2035 | 2032 |
| 2036 // The |layer| is entirely behind the camera and should not occlude. | 2033 // The |layer| is entirely behind the camera and should not occlude. |
| 2037 this->visitLayer(layer, occlusion); | 2034 this->visitLayer(layer, occlusion); |
| 2038 this->enterLayer(parent, occlusion); | 2035 this->enterLayer(parent, occlusion); |
| 2039 EXPECT_TRUE(occlusion.occlusionInTargetSurface().IsEmpty()); | 2036 EXPECT_TRUE(occlusion.occlusionFromInsideTarget().IsEmpty()); |
| 2040 EXPECT_TRUE(occlusion.occlusionInScreenSpace().IsEmpty()); | 2037 EXPECT_TRUE(occlusion.occlusionFromOutsideTarget().IsEmpty()); |
| 2041 } | 2038 } |
| 2042 }; | 2039 }; |
| 2043 | 2040 |
| 2044 // 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. | 2041 // 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. |
| 2045 IMPL_THREAD_TEST(OcclusionTrackerTestLayerBehindCameraDoesNotOcclude); | 2042 IMPL_THREAD_TEST(OcclusionTrackerTestLayerBehindCameraDoesNotOcclude); |
| 2046 | 2043 |
| 2047 template<class Types> | 2044 template<class Types> |
| 2048 class OcclusionTrackerTestLargePixelsOccludeInsideClipRect : public OcclusionTra
ckerTest<Types> { | 2045 class OcclusionTrackerTestLargePixelsOccludeInsideClipRect : public OcclusionTra
ckerTest<Types> { |
| 2049 protected: | 2046 protected: |
| 2050 OcclusionTrackerTestLargePixelsOccludeInsideClipRect(bool opaqueLayers) : Oc
clusionTrackerTest<Types>(opaqueLayers) {} | 2047 OcclusionTrackerTestLargePixelsOccludeInsideClipRect(bool opaqueLayers) : Oc
clusionTrackerTest<Types>(opaqueLayers) {} |
| (...skipping 11 matching lines...) Expand all Loading... |
| 2062 parent->setPreserves3D(true); | 2059 parent->setPreserves3D(true); |
| 2063 layer->setPreserves3D(true); | 2060 layer->setPreserves3D(true); |
| 2064 this->calcDrawEtc(parent); | 2061 this->calcDrawEtc(parent); |
| 2065 | 2062 |
| 2066 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 2063 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 2067 | 2064 |
| 2068 // This is very close to the camera, so pixels in its visibleContentRect
will actually go outside of the layer's clipRect. | 2065 // This is very close to the camera, so pixels in its visibleContentRect
will actually go outside of the layer's clipRect. |
| 2069 // Ensure that those pixels don't occlude things outside the clipRect. | 2066 // Ensure that those pixels don't occlude things outside the clipRect. |
| 2070 this->visitLayer(layer, occlusion); | 2067 this->visitLayer(layer, occlusion); |
| 2071 this->enterLayer(parent, occlusion); | 2068 this->enterLayer(parent, occlusion); |
| 2072 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 2069 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 2073 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 2070 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 2074 } | 2071 } |
| 2075 }; | 2072 }; |
| 2076 | 2073 |
| 2077 // 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. | 2074 // 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. |
| 2078 IMPL_THREAD_TEST(OcclusionTrackerTestLargePixelsOccludeInsideClipRect); | 2075 IMPL_THREAD_TEST(OcclusionTrackerTestLargePixelsOccludeInsideClipRect); |
| 2079 | 2076 |
| 2080 template<class Types> | 2077 template<class Types> |
| 2081 class OcclusionTrackerTestAnimationOpacity1OnMainThread : public OcclusionTracke
rTest<Types> { | 2078 class OcclusionTrackerTestAnimationOpacity1OnMainThread : public OcclusionTracke
rTest<Types> { |
| 2082 protected: | 2079 protected: |
| 2083 OcclusionTrackerTestAnimationOpacity1OnMainThread(bool opaqueLayers) : Occlu
sionTrackerTest<Types>(opaqueLayers) {} | 2080 OcclusionTrackerTestAnimationOpacity1OnMainThread(bool opaqueLayers) : Occlu
sionTrackerTest<Types>(opaqueLayers) {} |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2209 EXPECT_FALSE(surface->drawTransformIsAnimating()); | 2206 EXPECT_FALSE(surface->drawTransformIsAnimating()); |
| 2210 EXPECT_TRUE(surface->screenSpaceTransformIsAnimating()); | 2207 EXPECT_TRUE(surface->screenSpaceTransformIsAnimating()); |
| 2211 EXPECT_TRUE(surfaceChild->drawTransformIsAnimating()); | 2208 EXPECT_TRUE(surfaceChild->drawTransformIsAnimating()); |
| 2212 EXPECT_TRUE(surfaceChild->screenSpaceTransformIsAnimating()); | 2209 EXPECT_TRUE(surfaceChild->screenSpaceTransformIsAnimating()); |
| 2213 | 2210 |
| 2214 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 2211 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 2215 | 2212 |
| 2216 this->visitLayer(surface2, occlusion); | 2213 this->visitLayer(surface2, occlusion); |
| 2217 this->enterContributingSurface(surface2, occlusion); | 2214 this->enterContributingSurface(surface2, occlusion); |
| 2218 | 2215 |
| 2219 EXPECT_EQ(gfx::Rect(0, 0, 50, 300).ToString(), occlusion.occlusionInScre
enSpace().ToString()); | 2216 EXPECT_EQ(gfx::Rect(0, 0, 50, 300).ToString(), occlusion.occlusionFromIn
sideTarget().ToString()); |
| 2220 | 2217 |
| 2221 this->leaveContributingSurface(surface2, occlusion); | 2218 this->leaveContributingSurface(surface2, occlusion); |
| 2222 this->enterLayer(surfaceChild2, occlusion); | 2219 this->enterLayer(surfaceChild2, occlusion); |
| 2223 | 2220 |
| 2224 // surfaceChild2 is moving in screen space but not relative to its targe
t, so occlusion should happen in its target space only. | 2221 // surfaceChild2 is moving in screen space but not relative to its targe
t, so occlusion should happen in its target space only. |
| 2225 // It also means that things occluding in screen space (e.g. surface2) c
annot occlude this layer. | 2222 // It also means that things occluding from outside the target (e.g. sur
face2) cannot occlude this layer. |
| 2223 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 2224 |
| 2226 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 300), occlusion.unoccludedLayerConte
ntRect(surfaceChild2, gfx::Rect(0, 0, 100, 300))); | 2225 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 300), occlusion.unoccludedLayerConte
ntRect(surfaceChild2, gfx::Rect(0, 0, 100, 300))); |
| 2227 EXPECT_FALSE(occlusion.occludedLayer(surfaceChild, gfx::Rect(0, 0, 50, 3
00))); | 2226 EXPECT_FALSE(occlusion.occludedLayer(surfaceChild, gfx::Rect(0, 0, 50, 3
00))); |
| 2228 | 2227 |
| 2229 this->leaveLayer(surfaceChild2, occlusion); | 2228 this->leaveLayer(surfaceChild2, occlusion); |
| 2230 this->enterLayer(surfaceChild, occlusion); | 2229 this->enterLayer(surfaceChild, occlusion); |
| 2231 EXPECT_FALSE(occlusion.occludedLayer(surfaceChild, gfx::Rect(0, 0, 100,
300))); | 2230 EXPECT_FALSE(occlusion.occludedLayer(surfaceChild, gfx::Rect(0, 0, 100,
300))); |
| 2232 EXPECT_EQ(gfx::Rect(0, 0, 50, 300).ToString(), occlusion.occlusionInScre
enSpace().ToString()); | 2231 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 2233 EXPECT_EQ(gfx::Rect(0, 0, 100, 300).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 2232 EXPECT_EQ(gfx::Rect(0, 0, 100, 300).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 2234 EXPECT_RECT_EQ(gfx::Rect(100, 0, 200, 300), occlusion.unoccludedLayerCon
tentRect(surface, gfx::Rect(0, 0, 300, 300))); | 2233 EXPECT_RECT_EQ(gfx::Rect(100, 0, 200, 300), occlusion.unoccludedLayerCon
tentRect(surface, gfx::Rect(0, 0, 300, 300))); |
| 2235 | 2234 |
| 2236 // The surfaceChild is occluded by the surfaceChild2, but is moving rela
tive its target and the screen, so it | 2235 // The surfaceChild is occluded by the surfaceChild2, but is moving rela
tive its target, so it can't be occluded. |
| 2237 // can't be occluded. | |
| 2238 EXPECT_RECT_EQ(gfx::Rect(0, 0, 200, 300), occlusion.unoccludedLayerConte
ntRect(surfaceChild, gfx::Rect(0, 0, 200, 300))); | 2236 EXPECT_RECT_EQ(gfx::Rect(0, 0, 200, 300), occlusion.unoccludedLayerConte
ntRect(surfaceChild, gfx::Rect(0, 0, 200, 300))); |
| 2239 EXPECT_FALSE(occlusion.occludedLayer(surfaceChild, gfx::Rect(0, 0, 50, 3
00))); | 2237 EXPECT_FALSE(occlusion.occludedLayer(surfaceChild, gfx::Rect(0, 0, 50, 3
00))); |
| 2240 | 2238 |
| 2241 this->leaveLayer(surfaceChild, occlusion); | 2239 this->leaveLayer(surfaceChild, occlusion); |
| 2242 this->enterLayer(surface, occlusion); | 2240 this->enterLayer(surface, occlusion); |
| 2243 // The surfaceChild is moving in screen space but not relative to its ta
rget, so occlusion should happen in its target space only. | 2241 // The surfaceChild is moving in screen space but not relative to its ta
rget, so occlusion should happen from within the target only. |
| 2244 EXPECT_EQ(gfx::Rect(0, 0, 50, 300).ToString(), occlusion.occlusionInScre
enSpace().ToString()); | 2242 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 2245 EXPECT_EQ(gfx::Rect(0, 0, 100, 300).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 2243 EXPECT_EQ(gfx::Rect(0, 0, 100, 300).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 2246 EXPECT_RECT_EQ(gfx::Rect(100, 0, 200, 300), occlusion.unoccludedLayerCon
tentRect(surface, gfx::Rect(0, 0, 300, 300))); | 2244 EXPECT_RECT_EQ(gfx::Rect(100, 0, 200, 300), occlusion.unoccludedLayerCon
tentRect(surface, gfx::Rect(0, 0, 300, 300))); |
| 2247 | 2245 |
| 2248 this->leaveLayer(surface, occlusion); | 2246 this->leaveLayer(surface, occlusion); |
| 2249 // 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. | 2247 // The surface's owning layer is moving in screen space but not relative
to its target, so occlusion should happen within the target only. |
| 2250 EXPECT_EQ(gfx::Rect(0, 0, 50, 300).ToString(), occlusion.occlusionInScre
enSpace().ToString()); | 2248 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 2251 EXPECT_EQ(gfx::Rect(0, 0, 300, 300).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 2249 EXPECT_EQ(gfx::Rect(0, 0, 300, 300).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 2252 EXPECT_RECT_EQ(gfx::Rect(0, 0, 0, 0), occlusion.unoccludedLayerContentRe
ct(surface, gfx::Rect(0, 0, 300, 300))); | 2250 EXPECT_RECT_EQ(gfx::Rect(0, 0, 0, 0), occlusion.unoccludedLayerContentRe
ct(surface, gfx::Rect(0, 0, 300, 300))); |
| 2253 | 2251 |
| 2254 this->enterContributingSurface(surface, occlusion); | 2252 this->enterContributingSurface(surface, occlusion); |
| 2255 // The contributing |surface| is animating so it can't be occluded. | 2253 // The contributing |surface| is animating so it can't be occluded. |
| 2256 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 300), occlusion.unoccludedContributi
ngSurfaceContentRect(surface, false, gfx::Rect(0, 0, 300, 300))); | 2254 EXPECT_RECT_EQ(gfx::Rect(0, 0, 300, 300), occlusion.unoccludedContributi
ngSurfaceContentRect(surface, false, gfx::Rect(0, 0, 300, 300))); |
| 2257 this->leaveContributingSurface(surface, occlusion); | 2255 this->leaveContributingSurface(surface, occlusion); |
| 2258 | 2256 |
| 2259 this->enterLayer(layer, occlusion); | 2257 this->enterLayer(layer, occlusion); |
| 2260 // The |surface| is moving in the screen and in its target, so all occlu
sion within the surface is lost when leaving it. | 2258 // The |surface| is moving in the screen and in its target, so all occlu
sion within the surface is lost when leaving it. |
| 2261 EXPECT_RECT_EQ(gfx::Rect(50, 0, 250, 300), occlusion.unoccludedLayerCont
entRect(parent, gfx::Rect(0, 0, 300, 300))); | 2259 EXPECT_RECT_EQ(gfx::Rect(50, 0, 250, 300), occlusion.unoccludedLayerCont
entRect(parent, gfx::Rect(0, 0, 300, 300))); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 2285 typename Types::ContentLayerType* surface2 = this->createDrawingSurface(
parent, this->identityMatrix, gfx::PointF(50, 50), gfx::Size(300, 300), false); | 2283 typename Types::ContentLayerType* surface2 = this->createDrawingSurface(
parent, this->identityMatrix, gfx::PointF(50, 50), gfx::Size(300, 300), false); |
| 2286 surface->setOpaqueContentsRect(gfx::Rect(0, 0, 200, 200)); | 2284 surface->setOpaqueContentsRect(gfx::Rect(0, 0, 200, 200)); |
| 2287 surface2->setOpaqueContentsRect(gfx::Rect(0, 0, 200, 200)); | 2285 surface2->setOpaqueContentsRect(gfx::Rect(0, 0, 200, 200)); |
| 2288 this->calcDrawEtc(parent); | 2286 this->calcDrawEtc(parent); |
| 2289 | 2287 |
| 2290 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 2288 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 2291 | 2289 |
| 2292 this->visitLayer(surface2, occlusion); | 2290 this->visitLayer(surface2, occlusion); |
| 2293 this->visitContributingSurface(surface2, occlusion); | 2291 this->visitContributingSurface(surface2, occlusion); |
| 2294 | 2292 |
| 2295 EXPECT_EQ(gfx::Rect(50, 50, 200, 200).ToString(), occlusion.occlusionInS
creenSpace().ToString()); | 2293 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 2296 EXPECT_EQ(gfx::Rect(50, 50, 200, 200).ToString(), occlusion.occlusionInT
argetSurface().ToString()); | 2294 EXPECT_EQ(gfx::Rect(50, 50, 200, 200).ToString(), occlusion.occlusionFro
mInsideTarget().ToString()); |
| 2297 | 2295 |
| 2298 // Clear any stored occlusion. | 2296 // Clear any stored occlusion. |
| 2299 occlusion.setOcclusionInScreenSpace(Region()); | 2297 occlusion.setOcclusionFromOutsideTarget(Region()); |
| 2300 occlusion.setOcclusionInTargetSurface(Region()); | 2298 occlusion.setOcclusionFromInsideTarget(Region()); |
| 2301 | 2299 |
| 2302 this->visitLayer(surface, occlusion); | 2300 this->visitLayer(surface, occlusion); |
| 2303 this->visitContributingSurface(surface, occlusion); | 2301 this->visitContributingSurface(surface, occlusion); |
| 2304 | 2302 |
| 2305 EXPECT_EQ(gfx::Rect(0, 0, 400, 400).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 2303 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 2306 EXPECT_EQ(gfx::Rect(0, 0, 400, 400).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 2304 EXPECT_EQ(gfx::Rect(0, 0, 400, 400).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 2307 } | 2305 } |
| 2308 }; | 2306 }; |
| 2309 | 2307 |
| 2310 MAIN_AND_IMPL_THREAD_TEST(OcclusionTrackerTestSurfaceOcclusionTranslatesToParent
); | 2308 MAIN_AND_IMPL_THREAD_TEST(OcclusionTrackerTestSurfaceOcclusionTranslatesToParent
); |
| 2311 | 2309 |
| 2312 template<class Types> | 2310 template<class Types> |
| 2313 class OcclusionTrackerTestSurfaceOcclusionTranslatesWithClipping : public Occlus
ionTrackerTest<Types> { | 2311 class OcclusionTrackerTestSurfaceOcclusionTranslatesWithClipping : public Occlus
ionTrackerTest<Types> { |
| 2314 protected: | 2312 protected: |
| 2315 OcclusionTrackerTestSurfaceOcclusionTranslatesWithClipping(bool opaqueLayers
) : OcclusionTrackerTest<Types>(opaqueLayers) {} | 2313 OcclusionTrackerTestSurfaceOcclusionTranslatesWithClipping(bool opaqueLayers
) : OcclusionTrackerTest<Types>(opaqueLayers) {} |
| 2316 void runMyTest() | 2314 void runMyTest() |
| 2317 { | 2315 { |
| 2318 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(300, 300)); | 2316 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(300, 300)); |
| 2319 parent->setMasksToBounds(true); | 2317 parent->setMasksToBounds(true); |
| 2320 typename Types::ContentLayerType* surface = this->createDrawingSurface(p
arent, this->identityMatrix, gfx::PointF(0, 0), gfx::Size(500, 300), false); | 2318 typename Types::ContentLayerType* surface = this->createDrawingSurface(p
arent, this->identityMatrix, gfx::PointF(0, 0), gfx::Size(500, 300), false); |
| 2321 surface->setOpaqueContentsRect(gfx::Rect(0, 0, 400, 200)); | 2319 surface->setOpaqueContentsRect(gfx::Rect(0, 0, 400, 200)); |
| 2322 this->calcDrawEtc(parent); | 2320 this->calcDrawEtc(parent); |
| 2323 | 2321 |
| 2324 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 2322 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 2325 | 2323 |
| 2326 this->visitLayer(surface, occlusion); | 2324 this->visitLayer(surface, occlusion); |
| 2327 this->visitContributingSurface(surface, occlusion); | 2325 this->visitContributingSurface(surface, occlusion); |
| 2328 | 2326 |
| 2329 EXPECT_EQ(gfx::Rect(0, 0, 300, 200).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 2327 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 2330 EXPECT_EQ(gfx::Rect(0, 0, 300, 200).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 2328 EXPECT_EQ(gfx::Rect(0, 0, 300, 200).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 2331 } | 2329 } |
| 2332 }; | 2330 }; |
| 2333 | 2331 |
| 2334 MAIN_AND_IMPL_THREAD_TEST(OcclusionTrackerTestSurfaceOcclusionTranslatesWithClip
ping); | 2332 MAIN_AND_IMPL_THREAD_TEST(OcclusionTrackerTestSurfaceOcclusionTranslatesWithClip
ping); |
| 2335 | 2333 |
| 2336 template<class Types> | 2334 template<class Types> |
| 2337 class OcclusionTrackerTestReplicaOccluded : public OcclusionTrackerTest<Types> { | 2335 class OcclusionTrackerTestReplicaOccluded : public OcclusionTrackerTest<Types> { |
| 2338 protected: | 2336 protected: |
| 2339 OcclusionTrackerTestReplicaOccluded(bool opaqueLayers) : OcclusionTrackerTes
t<Types>(opaqueLayers) {} | 2337 OcclusionTrackerTestReplicaOccluded(bool opaqueLayers) : OcclusionTrackerTes
t<Types>(opaqueLayers) {} |
| 2340 void runMyTest() | 2338 void runMyTest() |
| 2341 { | 2339 { |
| 2342 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 200)); | 2340 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 200)); |
| 2343 typename Types::LayerType* surface = this->createDrawingSurface(parent,
this->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 100), true); | 2341 typename Types::LayerType* surface = this->createDrawingSurface(parent,
this->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 100), true); |
| 2344 this->createReplicaLayer(surface, this->identityMatrix, gfx::PointF(0, 1
00), gfx::Size(100, 100)); | 2342 this->createReplicaLayer(surface, this->identityMatrix, gfx::PointF(0, 1
00), gfx::Size(100, 100)); |
| 2345 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th
is->identityMatrix, gfx::PointF(0, 100), gfx::Size(100, 100), true); | 2343 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th
is->identityMatrix, gfx::PointF(0, 100), gfx::Size(100, 100), true); |
| 2346 this->calcDrawEtc(parent); | 2344 this->calcDrawEtc(parent); |
| 2347 | 2345 |
| 2348 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 2346 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 2349 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); | 2347 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); |
| 2350 | 2348 |
| 2351 // |topmost| occludes the replica, but not the surface itself. | 2349 // |topmost| occludes the replica, but not the surface itself. |
| 2352 this->visitLayer(topmost, occlusion); | 2350 this->visitLayer(topmost, occlusion); |
| 2353 | 2351 |
| 2354 EXPECT_EQ(gfx::Rect(0, 100, 100, 100).ToString(), occlusion.occlusionInS
creenSpace().ToString()); | 2352 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 2355 EXPECT_EQ(gfx::Rect(0, 100, 100, 100).ToString(), occlusion.occlusionInT
argetSurface().ToString()); | 2353 EXPECT_EQ(gfx::Rect(0, 100, 100, 100).ToString(), occlusion.occlusionFro
mInsideTarget().ToString()); |
| 2356 | 2354 |
| 2357 this->visitLayer(surface, occlusion); | 2355 this->visitLayer(surface, occlusion); |
| 2358 | 2356 |
| 2359 EXPECT_EQ(gfx::Rect(0, 0, 100, 200).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 2357 EXPECT_EQ(gfx::Rect(0, 100, 100, 100).ToString(), occlusion.occlusionFro
mOutsideTarget().ToString()); |
| 2360 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 2358 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 2361 | 2359 |
| 2362 this->enterContributingSurface(surface, occlusion); | 2360 this->enterContributingSurface(surface, occlusion); |
| 2363 | 2361 |
| 2364 // Surface is not occluded so it shouldn't think it is. | 2362 // Surface is not occluded so it shouldn't think it is. |
| 2365 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 100), occlusion.unoccludedContributi
ngSurfaceContentRect(surface, false, gfx::Rect(0, 0, 100, 100))); | 2363 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 100), occlusion.unoccludedContributi
ngSurfaceContentRect(surface, false, gfx::Rect(0, 0, 100, 100))); |
| 2366 } | 2364 } |
| 2367 }; | 2365 }; |
| 2368 | 2366 |
| 2369 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReplicaOccluded); | 2367 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReplicaOccluded); |
| 2370 | 2368 |
| 2371 template<class Types> | 2369 template<class Types> |
| 2372 class OcclusionTrackerTestSurfaceWithReplicaUnoccluded : public OcclusionTracker
Test<Types> { | 2370 class OcclusionTrackerTestSurfaceWithReplicaUnoccluded : public OcclusionTracker
Test<Types> { |
| 2373 protected: | 2371 protected: |
| 2374 OcclusionTrackerTestSurfaceWithReplicaUnoccluded(bool opaqueLayers) : Occlus
ionTrackerTest<Types>(opaqueLayers) {} | 2372 OcclusionTrackerTestSurfaceWithReplicaUnoccluded(bool opaqueLayers) : Occlus
ionTrackerTest<Types>(opaqueLayers) {} |
| 2375 void runMyTest() | 2373 void runMyTest() |
| 2376 { | 2374 { |
| 2377 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 200)); | 2375 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(100, 200)); |
| 2378 typename Types::LayerType* surface = this->createDrawingSurface(parent,
this->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 100), true); | 2376 typename Types::LayerType* surface = this->createDrawingSurface(parent,
this->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 100), true); |
| 2379 this->createReplicaLayer(surface, this->identityMatrix, gfx::PointF(0, 1
00), gfx::Size(100, 100)); | 2377 this->createReplicaLayer(surface, this->identityMatrix, gfx::PointF(0, 1
00), gfx::Size(100, 100)); |
| 2380 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th
is->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 110), true); | 2378 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th
is->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 110), true); |
| 2381 this->calcDrawEtc(parent); | 2379 this->calcDrawEtc(parent); |
| 2382 | 2380 |
| 2383 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 2381 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 2384 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); | 2382 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); |
| 2385 | 2383 |
| 2386 // |topmost| occludes the surface, but not the entire surface's replica. | 2384 // |topmost| occludes the surface, but not the entire surface's replica. |
| 2387 this->visitLayer(topmost, occlusion); | 2385 this->visitLayer(topmost, occlusion); |
| 2388 | 2386 |
| 2389 EXPECT_EQ(gfx::Rect(0, 0, 100, 110).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 2387 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 2390 EXPECT_EQ(gfx::Rect(0, 0, 100, 110).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 2388 EXPECT_EQ(gfx::Rect(0, 0, 100, 110).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 2391 | 2389 |
| 2392 this->visitLayer(surface, occlusion); | 2390 this->visitLayer(surface, occlusion); |
| 2393 | 2391 |
| 2394 EXPECT_EQ(gfx::Rect(0, 0, 100, 110).ToString(), occlusion.occlusionInScr
eenSpace().ToString()); | 2392 EXPECT_EQ(gfx::Rect(0, 0, 100, 110).ToString(), occlusion.occlusionFromO
utsideTarget().ToString()); |
| 2395 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 2393 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 2396 | 2394 |
| 2397 this->enterContributingSurface(surface, occlusion); | 2395 this->enterContributingSurface(surface, occlusion); |
| 2398 | 2396 |
| 2399 // Surface is occluded, but only the top 10px of the replica. | 2397 // Surface is occluded, but only the top 10px of the replica. |
| 2400 EXPECT_RECT_EQ(gfx::Rect(0, 0, 0, 0), occlusion.unoccludedContributingSu
rfaceContentRect(surface, false, gfx::Rect(0, 0, 100, 100))); | 2398 EXPECT_RECT_EQ(gfx::Rect(0, 0, 0, 0), occlusion.unoccludedContributingSu
rfaceContentRect(surface, false, gfx::Rect(0, 0, 100, 100))); |
| 2401 EXPECT_RECT_EQ(gfx::Rect(0, 10, 100, 90), occlusion.unoccludedContributi
ngSurfaceContentRect(surface, true, gfx::Rect(0, 0, 100, 100))); | 2399 EXPECT_RECT_EQ(gfx::Rect(0, 10, 100, 90), occlusion.unoccludedContributi
ngSurfaceContentRect(surface, true, gfx::Rect(0, 0, 100, 100))); |
| 2402 } | 2400 } |
| 2403 }; | 2401 }; |
| 2404 | 2402 |
| 2405 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceWithReplicaUnoccluded); | 2403 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceWithReplicaUnoccluded); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 2417 typename Types::LayerType* overReplica = this->createDrawingLayer(parent
, this->identityMatrix, gfx::PointF(0, 100), gfx::Size(50, 100), true); | 2415 typename Types::LayerType* overReplica = this->createDrawingLayer(parent
, this->identityMatrix, gfx::PointF(0, 100), gfx::Size(50, 100), true); |
| 2418 this->calcDrawEtc(parent); | 2416 this->calcDrawEtc(parent); |
| 2419 | 2417 |
| 2420 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 2418 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 2421 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); | 2419 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); |
| 2422 | 2420 |
| 2423 // These occlude the surface and replica differently, so we can test eac
h one. | 2421 // These occlude the surface and replica differently, so we can test eac
h one. |
| 2424 this->visitLayer(overReplica, occlusion); | 2422 this->visitLayer(overReplica, occlusion); |
| 2425 this->visitLayer(overSurface, occlusion); | 2423 this->visitLayer(overSurface, occlusion); |
| 2426 | 2424 |
| 2427 EXPECT_EQ(UnionRegions(gfx::Rect(0, 0, 40, 100), gfx::Rect(0, 100, 50, 1
00)).ToString(), occlusion.occlusionInScreenSpace().ToString()); | 2425 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 2428 EXPECT_EQ(UnionRegions(gfx::Rect(0, 0, 40, 100), gfx::Rect(0, 100, 50, 1
00)).ToString(), occlusion.occlusionInTargetSurface().ToString()); | 2426 EXPECT_EQ(UnionRegions(gfx::Rect(0, 0, 40, 100), gfx::Rect(0, 100, 50, 1
00)).ToString(), occlusion.occlusionFromInsideTarget().ToString()); |
| 2429 | 2427 |
| 2430 this->visitLayer(surface, occlusion); | 2428 this->visitLayer(surface, occlusion); |
| 2431 | 2429 |
| 2432 EXPECT_EQ(UnionRegions(gfx::Rect(0, 0, 100, 100), gfx::Rect(0, 100, 50,
100)).ToString(), occlusion.occlusionInScreenSpace().ToString()); | 2430 EXPECT_EQ(UnionRegions(gfx::Rect(0, 0, 40, 100), gfx::Rect(0, 100, 50, 1
00)).ToString(), occlusion.occlusionFromOutsideTarget().ToString()); |
| 2433 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 2431 EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 2434 | 2432 |
| 2435 this->enterContributingSurface(surface, occlusion); | 2433 this->enterContributingSurface(surface, occlusion); |
| 2436 | 2434 |
| 2437 // Surface and replica are occluded different amounts. | 2435 // Surface and replica are occluded different amounts. |
| 2438 EXPECT_RECT_EQ(gfx::Rect(40, 0, 60, 100), occlusion.unoccludedContributi
ngSurfaceContentRect(surface, false, gfx::Rect(0, 0, 100, 100))); | 2436 EXPECT_RECT_EQ(gfx::Rect(40, 0, 60, 100), occlusion.unoccludedContributi
ngSurfaceContentRect(surface, false, gfx::Rect(0, 0, 100, 100))); |
| 2439 EXPECT_RECT_EQ(gfx::Rect(50, 0, 50, 100), occlusion.unoccludedContributi
ngSurfaceContentRect(surface, true, gfx::Rect(0, 0, 100, 100))); | 2437 EXPECT_RECT_EQ(gfx::Rect(50, 0, 50, 100), occlusion.unoccludedContributi
ngSurfaceContentRect(surface, true, gfx::Rect(0, 0, 100, 100))); |
| 2440 } | 2438 } |
| 2441 }; | 2439 }; |
| 2442 | 2440 |
| 2443 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceAndReplicaOccludedDifferent
ly); | 2441 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceAndReplicaOccludedDifferent
ly); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 2454 typename Types::LayerType* surface = this->createDrawingSurface(parent,
this->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 100), true); | 2452 typename Types::LayerType* surface = this->createDrawingSurface(parent,
this->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 100), true); |
| 2455 typename Types::LayerType* surfaceChild = this->createDrawingSurface(sur
face, this->identityMatrix, gfx::PointF(0, 10), gfx::Size(100, 50), true); | 2453 typename Types::LayerType* surfaceChild = this->createDrawingSurface(sur
face, this->identityMatrix, gfx::PointF(0, 10), gfx::Size(100, 50), true); |
| 2456 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th
is->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 50), true); | 2454 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th
is->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 50), true); |
| 2457 this->calcDrawEtc(parent); | 2455 this->calcDrawEtc(parent); |
| 2458 | 2456 |
| 2459 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(-100, -100, 1000, 1000)); | 2457 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(-100, -100, 1000, 1000)); |
| 2460 | 2458 |
| 2461 // |topmost| occludes everything partially so we know occlusion is happe
ning at all. | 2459 // |topmost| occludes everything partially so we know occlusion is happe
ning at all. |
| 2462 this->visitLayer(topmost, occlusion); | 2460 this->visitLayer(topmost, occlusion); |
| 2463 | 2461 |
| 2464 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), occlusion.occlusionInScre
enSpace().ToString()); | 2462 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 2465 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), occlusion.occlusionInTarg
etSurface().ToString()); | 2463 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), occlusion.occlusionFromIn
sideTarget().ToString()); |
| 2466 | 2464 |
| 2467 this->visitLayer(surfaceChild, occlusion); | 2465 this->visitLayer(surfaceChild, occlusion); |
| 2468 | 2466 |
| 2469 // surfaceChild increases the occlusion in the screen by a narrow sliver
. | 2467 // surfaceChild increases the occlusion in the screen by a narrow sliver
. |
| 2470 EXPECT_EQ(gfx::Rect(0, 0, 100, 60).ToString(), occlusion.occlusionInScre
enSpace().ToString()); | 2468 EXPECT_EQ(gfx::Rect(0, -10, 100, 50).ToString(), occlusion.occlusionFrom
OutsideTarget().ToString()); |
| 2471 // In its own surface, surfaceChild is at 0,0 as is its occlusion. | 2469 // In its own surface, surfaceChild is at 0,0 as is its occlusion. |
| 2472 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), occlusion.occlusionInTarg
etSurface().ToString()); | 2470 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), occlusion.occlusionFromIn
sideTarget().ToString()); |
| 2473 | 2471 |
| 2474 // The root layer always has a clipRect. So the parent of |surface| has
a clipRect. However, the owning layer for |surface| does not | 2472 // The root layer always has a clipRect. So the parent of |surface| has
a clipRect. However, the owning layer for |surface| does not |
| 2475 // mask to bounds, so it doesn't have a clipRect of its own. Thus the pa
rent of |surfaceChild| exercises different code paths | 2473 // mask to bounds, so it doesn't have a clipRect of its own. Thus the pa
rent of |surfaceChild| exercises different code paths |
| 2476 // as its parent does not have a clipRect. | 2474 // as its parent does not have a clipRect. |
| 2477 | 2475 |
| 2478 this->enterContributingSurface(surfaceChild, occlusion); | 2476 this->enterContributingSurface(surfaceChild, occlusion); |
| 2479 // The surfaceChild's parent does not have a clipRect as it owns a rende
r surface. Make sure the unoccluded rect | 2477 // The surfaceChild's parent does not have a clipRect as it owns a rende
r surface. Make sure the unoccluded rect |
| 2480 // does not get clipped away inappropriately. | 2478 // does not get clipped away inappropriately. |
| 2481 EXPECT_RECT_EQ(gfx::Rect(0, 40, 100, 10), occlusion.unoccludedContributi
ngSurfaceContentRect(surfaceChild, false, gfx::Rect(0, 0, 100, 50))); | 2479 EXPECT_RECT_EQ(gfx::Rect(0, 40, 100, 10), occlusion.unoccludedContributi
ngSurfaceContentRect(surfaceChild, false, gfx::Rect(0, 0, 100, 50))); |
| 2482 this->leaveContributingSurface(surfaceChild, occlusion); | 2480 this->leaveContributingSurface(surfaceChild, occlusion); |
| 2483 | 2481 |
| 2484 // When the surfaceChild's occlusion is transformed up to its parent, ma
ke sure it is not clipped away inappropriately also. | 2482 // When the surfaceChild's occlusion is transformed up to its parent, ma
ke sure it is not clipped away inappropriately also. |
| 2485 this->enterLayer(surface, occlusion); | 2483 this->enterLayer(surface, occlusion); |
| 2486 EXPECT_EQ(gfx::Rect(0, 0, 100, 60).ToString(), occlusion.occlusionInScre
enSpace().ToString()); | 2484 EXPECT_EQ(gfx::Rect(0, 0, 100, 50).ToString(), occlusion.occlusionFromOu
tsideTarget().ToString()); |
| 2487 EXPECT_EQ(gfx::Rect(0, 10, 100, 50).ToString(), occlusion.occlusionInTar
getSurface().ToString()); | 2485 EXPECT_EQ(gfx::Rect(0, 10, 100, 50).ToString(), occlusion.occlusionFromI
nsideTarget().ToString()); |
| 2488 this->leaveLayer(surface, occlusion); | 2486 this->leaveLayer(surface, occlusion); |
| 2489 | 2487 |
| 2490 this->enterContributingSurface(surface, occlusion); | 2488 this->enterContributingSurface(surface, occlusion); |
| 2491 // The surface's parent does have a clipRect as it is the root layer. | 2489 // The surface's parent does have a clipRect as it is the root layer. |
| 2492 EXPECT_RECT_EQ(gfx::Rect(0, 50, 100, 50), occlusion.unoccludedContributi
ngSurfaceContentRect(surface, false, gfx::Rect(0, 0, 100, 100))); | 2490 EXPECT_RECT_EQ(gfx::Rect(0, 50, 100, 50), occlusion.unoccludedContributi
ngSurfaceContentRect(surface, false, gfx::Rect(0, 0, 100, 100))); |
| 2493 } | 2491 } |
| 2494 }; | 2492 }; |
| 2495 | 2493 |
| 2496 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceChildOfSurface); | 2494 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceChildOfSurface); |
| 2497 | 2495 |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2549 typename Types::LayerType* surfaceChild = this->createDrawingSurface(sur
face, this->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 100), false); | 2547 typename Types::LayerType* surfaceChild = this->createDrawingSurface(sur
face, this->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 100), false); |
| 2550 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th
is->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 50), true); | 2548 typename Types::LayerType* topmost = this->createDrawingLayer(parent, th
is->identityMatrix, gfx::PointF(0, 0), gfx::Size(100, 50), true); |
| 2551 this->calcDrawEtc(parent); | 2549 this->calcDrawEtc(parent); |
| 2552 | 2550 |
| 2553 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 2551 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 2554 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); | 2552 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); |
| 2555 | 2553 |
| 2556 // |topmost| occludes everything partially so we know occlusion is happe
ning at all. | 2554 // |topmost| occludes everything partially so we know occlusion is happe
ning at all. |
| 2557 this->visitLayer(topmost, occlusion); | 2555 this->visitLayer(topmost, occlusion); |
| 2558 | 2556 |
| 2559 EXPECT_EQ(gfx::Rect(0, 0, 80, 50).ToString(), occlusion.occlusionInScree
nSpace().ToString()); | 2557 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 2560 EXPECT_EQ(gfx::Rect(0, 0, 80, 50).ToString(), occlusion.occlusionInTarge
tSurface().ToString()); | 2558 EXPECT_EQ(gfx::Rect(0, 0, 80, 50).ToString(), occlusion.occlusionFromIns
ideTarget().ToString()); |
| 2561 | 2559 |
| 2562 // surfaceChild is not opaque and does not occlude, so we have a non-emp
ty unoccluded area on surface. | 2560 // surfaceChild is not opaque and does not occlude, so we have a non-emp
ty unoccluded area on surface. |
| 2563 this->visitLayer(surfaceChild, occlusion); | 2561 this->visitLayer(surfaceChild, occlusion); |
| 2564 | 2562 |
| 2565 EXPECT_EQ(gfx::Rect(0, 0, 80, 50).ToString(), occlusion.occlusionInScree
nSpace().ToString()); | 2563 EXPECT_EQ(gfx::Rect(0, 0, 80, 50).ToString(), occlusion.occlusionFromOut
sideTarget().ToString()); |
| 2566 EXPECT_EQ(gfx::Rect(0, 0, 0, 0).ToString(), occlusion.occlusionInTargetS
urface().ToString()); | 2564 EXPECT_EQ(gfx::Rect(0, 0, 0, 0).ToString(), occlusion.occlusionFromInsid
eTarget().ToString()); |
| 2567 | 2565 |
| 2568 // The root layer always has a clipRect. So the parent of |surface| has
a clipRect. However, the owning layer for |surface| does not | 2566 // The root layer always has a clipRect. So the parent of |surface| has
a clipRect. However, the owning layer for |surface| does not |
| 2569 // mask to bounds, so it doesn't have a clipRect of its own. Thus the pa
rent of |surfaceChild| exercises different code paths | 2567 // mask to bounds, so it doesn't have a clipRect of its own. Thus the pa
rent of |surfaceChild| exercises different code paths |
| 2570 // as its parent does not have a clipRect. | 2568 // as its parent does not have a clipRect. |
| 2571 | 2569 |
| 2572 this->enterContributingSurface(surfaceChild, occlusion); | 2570 this->enterContributingSurface(surfaceChild, occlusion); |
| 2573 // The surfaceChild's parent does not have a clipRect as it owns a rende
r surface. | 2571 // The surfaceChild's parent does not have a clipRect as it owns a rende
r surface. |
| 2574 EXPECT_RECT_EQ(gfx::Rect(0, 50, 80, 50), occlusion.unoccludedContributin
gSurfaceContentRect(surfaceChild, false, gfx::Rect(0, 0, 100, 100))); | 2572 EXPECT_EQ(gfx::Rect(0, 50, 80, 50).ToString(), occlusion.unoccludedContr
ibutingSurfaceContentRect(surfaceChild, false, gfx::Rect(0, 0, 100, 100)).ToStri
ng()); |
| 2575 this->leaveContributingSurface(surfaceChild, occlusion); | 2573 this->leaveContributingSurface(surfaceChild, occlusion); |
| 2576 | 2574 |
| 2577 this->visitLayer(surface, occlusion); | 2575 this->visitLayer(surface, occlusion); |
| 2578 this->enterContributingSurface(surface, occlusion); | 2576 this->enterContributingSurface(surface, occlusion); |
| 2579 // The surface's parent does have a clipRect as it is the root layer. | 2577 // The surface's parent does have a clipRect as it is the root layer. |
| 2580 EXPECT_RECT_EQ(gfx::Rect(0, 50, 80, 50), occlusion.unoccludedContributin
gSurfaceContentRect(surface, false, gfx::Rect(0, 0, 100, 100))); | 2578 EXPECT_EQ(gfx::Rect(0, 50, 80, 50).ToString(), occlusion.unoccludedContr
ibutingSurfaceContentRect(surface, false, gfx::Rect(0, 0, 100, 100)).ToString())
; |
| 2581 } | 2579 } |
| 2582 }; | 2580 }; |
| 2583 | 2581 |
| 2584 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceChildOfClippingSurface); | 2582 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestSurfaceChildOfClippingSurface); |
| 2585 | 2583 |
| 2586 template<class Types> | 2584 template<class Types> |
| 2587 class OcclusionTrackerTestDontOccludePixelsNeededForBackgroundFilter : public Oc
clusionTrackerTest<Types> { | 2585 class OcclusionTrackerTestDontOccludePixelsNeededForBackgroundFilter : public Oc
clusionTrackerTest<Types> { |
| 2588 protected: | 2586 protected: |
| 2589 OcclusionTrackerTestDontOccludePixelsNeededForBackgroundFilter(bool opaqueLa
yers) : OcclusionTrackerTest<Types>(opaqueLayers) {} | 2587 OcclusionTrackerTestDontOccludePixelsNeededForBackgroundFilter(bool opaqueLa
yers) : OcclusionTrackerTest<Types>(opaqueLayers) {} |
| 2590 void runMyTest() | 2588 void runMyTest() |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2626 this->visitLayer(occludingLayer2, occlusion); | 2624 this->visitLayer(occludingLayer2, occlusion); |
| 2627 this->visitLayer(occludingLayer1, occlusion); | 2625 this->visitLayer(occludingLayer1, occlusion); |
| 2628 | 2626 |
| 2629 Region expectedOcclusion; | 2627 Region expectedOcclusion; |
| 2630 expectedOcclusion.Union(gfx::Rect(0, 0, 300, 50)); | 2628 expectedOcclusion.Union(gfx::Rect(0, 0, 300, 50)); |
| 2631 expectedOcclusion.Union(gfx::Rect(0, 50, 50, 50)); | 2629 expectedOcclusion.Union(gfx::Rect(0, 50, 50, 50)); |
| 2632 expectedOcclusion.Union(gfx::Rect(100, 50, 100, 50)); | 2630 expectedOcclusion.Union(gfx::Rect(100, 50, 100, 50)); |
| 2633 expectedOcclusion.Union(gfx::Rect(250, 50, 50, 50)); | 2631 expectedOcclusion.Union(gfx::Rect(250, 50, 50, 50)); |
| 2634 expectedOcclusion.Union(gfx::Rect(0, 100, 300, 50)); | 2632 expectedOcclusion.Union(gfx::Rect(0, 100, 300, 50)); |
| 2635 | 2633 |
| 2636 EXPECT_EQ(expectedOcclusion.ToString(), occlusion.occlusionInScreenSpace
().ToString()); | 2634 EXPECT_EQ(expectedOcclusion.ToString(), occlusion.occlusionFromInsideTar
get().ToString()); |
| 2637 EXPECT_EQ(expectedOcclusion.ToString(), occlusion.occlusionInTargetSurfa
ce().ToString()); | 2635 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 2638 | 2636 |
| 2639 // Everything outside the surface/replica is occluded but the surface/re
plica itself is not. | 2637 // Everything outside the surface/replica is occluded but the surface/re
plica itself is not. |
| 2640 this->enterLayer(filteredSurface, occlusion); | 2638 this->enterLayer(filteredSurface, occlusion); |
| 2641 EXPECT_RECT_EQ(gfx::Rect(1, 0, 99, 100), occlusion.unoccludedLayerConten
tRect(filteredSurface, gfx::Rect(1, 0, 100, 100))); | 2639 EXPECT_RECT_EQ(gfx::Rect(1, 0, 99, 100), occlusion.unoccludedLayerConten
tRect(filteredSurface, gfx::Rect(1, 0, 100, 100))); |
| 2642 EXPECT_RECT_EQ(gfx::Rect(0, 1, 100, 99), occlusion.unoccludedLayerConten
tRect(filteredSurface, gfx::Rect(0, 1, 100, 100))); | 2640 EXPECT_RECT_EQ(gfx::Rect(0, 1, 100, 99), occlusion.unoccludedLayerConten
tRect(filteredSurface, gfx::Rect(0, 1, 100, 100))); |
| 2643 EXPECT_RECT_EQ(gfx::Rect(0, 0, 99, 100), occlusion.unoccludedLayerConten
tRect(filteredSurface, gfx::Rect(-1, 0, 100, 100))); | 2641 EXPECT_RECT_EQ(gfx::Rect(0, 0, 99, 100), occlusion.unoccludedLayerConten
tRect(filteredSurface, gfx::Rect(-1, 0, 100, 100))); |
| 2644 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 99), occlusion.unoccludedLayerConten
tRect(filteredSurface, gfx::Rect(0, -1, 100, 100))); | 2642 EXPECT_RECT_EQ(gfx::Rect(0, 0, 100, 99), occlusion.unoccludedLayerConten
tRect(filteredSurface, gfx::Rect(0, -1, 100, 100))); |
| 2645 | 2643 |
| 2646 EXPECT_RECT_EQ(gfx::Rect(300 + 1, 0, 99, 100), occlusion.unoccludedLayer
ContentRect(filteredSurface, gfx::Rect(300 + 1, 0, 100, 100))); | 2644 EXPECT_RECT_EQ(gfx::Rect(300 + 1, 0, 99, 100), occlusion.unoccludedLayer
ContentRect(filteredSurface, gfx::Rect(300 + 1, 0, 100, 100))); |
| 2647 EXPECT_RECT_EQ(gfx::Rect(300 + 0, 1, 100, 99), occlusion.unoccludedLayer
ContentRect(filteredSurface, gfx::Rect(300 + 0, 1, 100, 100))); | 2645 EXPECT_RECT_EQ(gfx::Rect(300 + 0, 1, 100, 99), occlusion.unoccludedLayer
ContentRect(filteredSurface, gfx::Rect(300 + 0, 1, 100, 100))); |
| 2648 EXPECT_RECT_EQ(gfx::Rect(300 + 0, 0, 99, 100), occlusion.unoccludedLayer
ContentRect(filteredSurface, gfx::Rect(300 - 1, 0, 100, 100))); | 2646 EXPECT_RECT_EQ(gfx::Rect(300 + 0, 0, 99, 100), occlusion.unoccludedLayer
ContentRect(filteredSurface, gfx::Rect(300 - 1, 0, 100, 100))); |
| 2649 EXPECT_RECT_EQ(gfx::Rect(300 + 0, 0, 100, 99), occlusion.unoccludedLayer
ContentRect(filteredSurface, gfx::Rect(300 + 0, -1, 100, 100))); | 2647 EXPECT_RECT_EQ(gfx::Rect(300 + 0, 0, 100, 99), occlusion.unoccludedLayer
ContentRect(filteredSurface, gfx::Rect(300 + 0, -1, 100, 100))); |
| 2650 this->leaveLayer(filteredSurface, occlusion); | 2648 this->leaveLayer(filteredSurface, occlusion); |
| 2651 | 2649 |
| 2652 // The filtered layer/replica does not occlude. | 2650 // The filtered layer/replica does not occlude. |
| 2653 EXPECT_EQ(expectedOcclusion.ToString(), occlusion.occlusionInScreenSpace
().ToString()); | 2651 Region expectedOcclusionOutsideSurface; |
| 2654 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionInTargetSurface().T
oString()); | 2652 expectedOcclusionOutsideSurface.Union(gfx::Rect(-50, -50, 300, 50)); |
| 2653 expectedOcclusionOutsideSurface.Union(gfx::Rect(-50, 0, 50, 50)); |
| 2654 expectedOcclusionOutsideSurface.Union(gfx::Rect(50, 0, 100, 50)); |
| 2655 expectedOcclusionOutsideSurface.Union(gfx::Rect(200, 0, 50, 50)); |
| 2656 expectedOcclusionOutsideSurface.Union(gfx::Rect(-50, 50, 300, 50)); |
| 2657 |
| 2658 EXPECT_EQ(expectedOcclusionOutsideSurface.ToString(), occlusion.occlusio
nFromOutsideTarget().ToString()); |
| 2659 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromInsideTarget().
ToString()); |
| 2655 | 2660 |
| 2656 // The surface has a background blur, so it needs pixels that are curren
tly considered occluded in order to be drawn. So the pixels | 2661 // The surface has a background blur, so it needs pixels that are curren
tly considered occluded in order to be drawn. So the pixels |
| 2657 // it needs should be removed some the occluded area so that when we get
to the parent they are drawn. | 2662 // it needs should be removed some the occluded area so that when we get
to the parent they are drawn. |
| 2658 this->visitContributingSurface(filteredSurface, occlusion); | 2663 this->visitContributingSurface(filteredSurface, occlusion); |
| 2659 | 2664 |
| 2660 this->enterLayer(parent, occlusion); | 2665 this->enterLayer(parent, occlusion); |
| 2661 | 2666 |
| 2662 Region expectedBlurredOcclusion; | 2667 Region expectedBlurredOcclusion; |
| 2663 expectedBlurredOcclusion.Union(gfx::Rect(0, 0, 300, 50 - outsetTop)); | 2668 expectedBlurredOcclusion.Union(gfx::Rect(0, 0, 300, 50 - outsetTop)); |
| 2664 expectedBlurredOcclusion.Union(gfx::Rect(0, 50 - outsetTop, 50 - outsetL
eft, 50 + outsetTop + outsetBottom)); | 2669 expectedBlurredOcclusion.Union(gfx::Rect(0, 50 - outsetTop, 50 - outsetL
eft, 50 + outsetTop + outsetBottom)); |
| 2665 expectedBlurredOcclusion.Union(gfx::Rect(100 + outsetRight, 50 - outsetT
op, 100 - outsetRight - outsetLeft, 50 + outsetTop + outsetBottom)); | 2670 expectedBlurredOcclusion.Union(gfx::Rect(100 + outsetRight, 50 - outsetT
op, 100 - outsetRight - outsetLeft, 50 + outsetTop + outsetBottom)); |
| 2666 expectedBlurredOcclusion.Union(gfx::Rect(250 + outsetRight, 50 - outsetT
op, 50 - outsetRight, 50 + outsetTop + outsetBottom)); | 2671 expectedBlurredOcclusion.Union(gfx::Rect(250 + outsetRight, 50 - outsetT
op, 50 - outsetRight, 50 + outsetTop + outsetBottom)); |
| 2667 expectedBlurredOcclusion.Union(gfx::Rect(0, 100 + outsetBottom, 300, 50
- outsetBottom)); | 2672 expectedBlurredOcclusion.Union(gfx::Rect(0, 100 + outsetBottom, 300, 50
- outsetBottom)); |
| 2668 | 2673 |
| 2669 EXPECT_EQ(expectedBlurredOcclusion.ToString(), occlusion.occlusionInScre
enSpace().ToString()); | 2674 EXPECT_EQ(expectedBlurredOcclusion.ToString(), occlusion.occlusionFromIn
sideTarget().ToString()); |
| 2670 EXPECT_EQ(expectedBlurredOcclusion.ToString(), occlusion.occlusionInTarg
etSurface().ToString()); | 2675 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 2671 | 2676 |
| 2672 gfx::Rect outsetRect; | 2677 gfx::Rect outsetRect; |
| 2673 gfx::Rect testRect; | 2678 gfx::Rect testRect; |
| 2674 | 2679 |
| 2675 // Nothing in the blur outsets for the filteredSurface is occluded. | 2680 // Nothing in the blur outsets for the filteredSurface is occluded. |
| 2676 outsetRect = gfx::Rect(50 - outsetLeft, 50 - outsetTop, 50 + outsetLeft
+ outsetRight, 50 + outsetTop + outsetBottom); | 2681 outsetRect = gfx::Rect(50 - outsetLeft, 50 - outsetTop, 50 + outsetLeft
+ outsetRight, 50 + outsetTop + outsetBottom); |
| 2677 testRect = outsetRect; | 2682 testRect = outsetRect; |
| 2678 EXPECT_RECT_EQ(outsetRect, occlusion.unoccludedLayerContentRect(parent,
testRect)); | 2683 EXPECT_EQ(outsetRect.ToString(), occlusion.unoccludedLayerContentRect(pa
rent, testRect).ToString()); |
| 2679 | 2684 |
| 2680 // Stuff outside the blur outsets is still occluded though. | 2685 // Stuff outside the blur outsets is still occluded though. |
| 2681 testRect = outsetRect; | 2686 testRect = outsetRect; |
| 2682 testRect.Inset(0, 0, -1, 0); | 2687 testRect.Inset(0, 0, -1, 0); |
| 2683 EXPECT_RECT_EQ(outsetRect, occlusion.unoccludedLayerContentRect(parent,
testRect)); | 2688 EXPECT_EQ(outsetRect.ToString(), occlusion.unoccludedLayerContentRect(pa
rent, testRect).ToString()); |
| 2684 testRect = outsetRect; | 2689 testRect = outsetRect; |
| 2685 testRect.Inset(0, 0, 0, -1); | 2690 testRect.Inset(0, 0, 0, -1); |
| 2686 EXPECT_RECT_EQ(outsetRect, occlusion.unoccludedLayerContentRect(parent,
testRect)); | 2691 EXPECT_EQ(outsetRect.ToString(), occlusion.unoccludedLayerContentRect(pa
rent, testRect).ToString()); |
| 2687 testRect = outsetRect; | 2692 testRect = outsetRect; |
| 2688 testRect.Inset(-1, 0, 0, 0); | 2693 testRect.Inset(-1, 0, 0, 0); |
| 2689 EXPECT_RECT_EQ(outsetRect, occlusion.unoccludedLayerContentRect(parent,
testRect)); | 2694 EXPECT_EQ(outsetRect.ToString(), occlusion.unoccludedLayerContentRect(pa
rent, testRect).ToString()); |
| 2690 testRect = outsetRect; | 2695 testRect = outsetRect; |
| 2691 testRect.Inset(0, -1, 0, 0); | 2696 testRect.Inset(0, -1, 0, 0); |
| 2692 EXPECT_RECT_EQ(outsetRect, occlusion.unoccludedLayerContentRect(parent,
testRect)); | 2697 EXPECT_EQ(outsetRect.ToString(), occlusion.unoccludedLayerContentRect(pa
rent, testRect).ToString()); |
| 2693 | 2698 |
| 2694 // Nothing in the blur outsets for the filteredSurface's replica is occl
uded. | 2699 // Nothing in the blur outsets for the filteredSurface's replica is occl
uded. |
| 2695 outsetRect = gfx::Rect(200 - outsetLeft, 50 - outsetTop, 50 + outsetLeft
+ outsetRight, 50 + outsetTop + outsetBottom); | 2700 outsetRect = gfx::Rect(200 - outsetLeft, 50 - outsetTop, 50 + outsetLeft
+ outsetRight, 50 + outsetTop + outsetBottom); |
| 2696 testRect = outsetRect; | 2701 testRect = outsetRect; |
| 2697 EXPECT_RECT_EQ(outsetRect, occlusion.unoccludedLayerContentRect(parent,
testRect)); | 2702 EXPECT_EQ(outsetRect.ToString(), occlusion.unoccludedLayerContentRect(pa
rent, testRect).ToString()); |
| 2698 | 2703 |
| 2699 // Stuff outside the blur outsets is still occluded though. | 2704 // Stuff outside the blur outsets is still occluded though. |
| 2700 testRect = outsetRect; | 2705 testRect = outsetRect; |
| 2701 testRect.Inset(0, 0, -1, 0); | 2706 testRect.Inset(0, 0, -1, 0); |
| 2702 EXPECT_RECT_EQ(outsetRect, occlusion.unoccludedLayerContentRect(parent,
testRect)); | 2707 EXPECT_EQ(outsetRect.ToString(), occlusion.unoccludedLayerContentRect(pa
rent, testRect).ToString()); |
| 2703 testRect = outsetRect; | 2708 testRect = outsetRect; |
| 2704 testRect.Inset(0, 0, 0, -1); | 2709 testRect.Inset(0, 0, 0, -1); |
| 2705 EXPECT_RECT_EQ(outsetRect, occlusion.unoccludedLayerContentRect(parent,
testRect)); | 2710 EXPECT_EQ(outsetRect.ToString(), occlusion.unoccludedLayerContentRect(pa
rent, testRect).ToString()); |
| 2706 testRect = outsetRect; | 2711 testRect = outsetRect; |
| 2707 testRect.Inset(-1, 0, 0, 0); | 2712 testRect.Inset(-1, 0, 0, 0); |
| 2708 EXPECT_RECT_EQ(outsetRect, occlusion.unoccludedLayerContentRect(parent,
testRect)); | 2713 EXPECT_EQ(outsetRect.ToString(), occlusion.unoccludedLayerContentRect(pa
rent, testRect).ToString()); |
| 2709 testRect = outsetRect; | 2714 testRect = outsetRect; |
| 2710 testRect.Inset(0, -1, 0, 0); | 2715 testRect.Inset(0, -1, 0, 0); |
| 2711 EXPECT_RECT_EQ(outsetRect, occlusion.unoccludedLayerContentRect(parent,
testRect)); | 2716 EXPECT_EQ(outsetRect.ToString(), occlusion.unoccludedLayerContentRect(pa
rent, testRect).ToString()); |
| 2712 } | 2717 } |
| 2713 }; | 2718 }; |
| 2714 | 2719 |
| 2715 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestDontOccludePixelsNeededForBackgrou
ndFilter); | 2720 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestDontOccludePixelsNeededForBackgrou
ndFilter); |
| 2716 | 2721 |
| 2717 template<class Types> | 2722 template<class Types> |
| 2718 class OcclusionTrackerTestTwoBackgroundFiltersReduceOcclusionTwice : public Occl
usionTrackerTest<Types> { | 2723 class OcclusionTrackerTestTwoBackgroundFiltersReduceOcclusionTwice : public Occl
usionTrackerTest<Types> { |
| 2719 protected: | 2724 protected: |
| 2720 OcclusionTrackerTestTwoBackgroundFiltersReduceOcclusionTwice(bool opaqueLaye
rs) : OcclusionTrackerTest<Types>(opaqueLayers) {} | 2725 OcclusionTrackerTestTwoBackgroundFiltersReduceOcclusionTwice(bool opaqueLaye
rs) : OcclusionTrackerTest<Types>(opaqueLayers) {} |
| 2721 void runMyTest() | 2726 void runMyTest() |
| (...skipping 18 matching lines...) Expand all Loading... |
| 2740 // Save the distance of influence for the blur effect. | 2745 // Save the distance of influence for the blur effect. |
| 2741 int outsetTop, outsetRight, outsetBottom, outsetLeft; | 2746 int outsetTop, outsetRight, outsetBottom, outsetLeft; |
| 2742 filters.getOutsets(outsetTop, outsetRight, outsetBottom, outsetLeft); | 2747 filters.getOutsets(outsetTop, outsetRight, outsetBottom, outsetLeft); |
| 2743 | 2748 |
| 2744 this->calcDrawEtc(root); | 2749 this->calcDrawEtc(root); |
| 2745 | 2750 |
| 2746 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 2751 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 2747 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); | 2752 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); |
| 2748 | 2753 |
| 2749 this->visitLayer(occludingLayerAbove, occlusion); | 2754 this->visitLayer(occludingLayerAbove, occlusion); |
| 2750 EXPECT_EQ(gfx::Rect(100 / 2, 100 / 2, 50 / 2, 50 / 2).ToString(), occlus
ion.occlusionInScreenSpace().ToString()); | 2755 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 2751 EXPECT_EQ(gfx::Rect(100 / 2, 100 / 2, 50 / 2, 50 / 2).ToString(), occlus
ion.occlusionInTargetSurface().ToString()); | 2756 EXPECT_EQ(gfx::Rect(100 / 2, 100 / 2, 50 / 2, 50 / 2).ToString(), occlus
ion.occlusionFromInsideTarget().ToString()); |
| 2752 | 2757 |
| 2753 this->visitLayer(filteredSurface2, occlusion); | 2758 this->visitLayer(filteredSurface2, occlusion); |
| 2754 this->visitContributingSurface(filteredSurface2, occlusion); | 2759 this->visitContributingSurface(filteredSurface2, occlusion); |
| 2755 this->visitLayer(filteredSurface1, occlusion); | 2760 this->visitLayer(filteredSurface1, occlusion); |
| 2756 this->visitContributingSurface(filteredSurface1, occlusion); | 2761 this->visitContributingSurface(filteredSurface1, occlusion); |
| 2757 | 2762 |
| 2758 // Test expectations in the target. | 2763 // Test expectations in the target. |
| 2759 gfx::Rect expectedOcclusion = gfx::Rect(100 / 2 + outsetRight * 2, 100 /
2 + outsetBottom * 2, 50 / 2 - (outsetLeft + outsetRight) * 2, 50 / 2 - (outset
Top + outsetBottom) * 2); | 2764 gfx::Rect expectedOcclusion = gfx::Rect(100 / 2 + outsetRight * 2, 100 /
2 + outsetBottom * 2, 50 / 2 - (outsetLeft + outsetRight) * 2, 50 / 2 - (outset
Top + outsetBottom) * 2); |
| 2760 EXPECT_EQ(expectedOcclusion.ToString(), occlusion.occlusionInTargetSurfa
ce().ToString()); | 2765 EXPECT_EQ(expectedOcclusion.ToString(), occlusion.occlusionFromInsideTar
get().ToString()); |
| 2761 | 2766 |
| 2762 // Test expectations in the screen are the same as in the target, as the
render surface is 1:1 with the screen. | 2767 // Test expectations in the screen are the same as in the target, as the
render surface is 1:1 with the screen. |
| 2763 EXPECT_EQ(expectedOcclusion.ToString(), occlusion.occlusionInScreenSpace
().ToString()); | 2768 EXPECT_EQ(expectedOcclusion.ToString(), occlusion.occlusionFromOutsideTa
rget().ToString()); |
| 2764 } | 2769 } |
| 2765 }; | 2770 }; |
| 2766 | 2771 |
| 2767 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestTwoBackgroundFiltersReduceOcclusio
nTwice); | 2772 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestTwoBackgroundFiltersReduceOcclusio
nTwice); |
| 2768 | 2773 |
| 2769 template<class Types> | 2774 template<class Types> |
| 2770 class OcclusionTrackerTestDontOccludePixelsNeededForBackgroundFilterWithClip : p
ublic OcclusionTrackerTest<Types> { | 2775 class OcclusionTrackerTestDontOccludePixelsNeededForBackgroundFilterWithClip : p
ublic OcclusionTrackerTest<Types> { |
| 2771 protected: | 2776 protected: |
| 2772 OcclusionTrackerTestDontOccludePixelsNeededForBackgroundFilterWithClip(bool
opaqueLayers) : OcclusionTrackerTest<Types>(opaqueLayers) {} | 2777 OcclusionTrackerTestDontOccludePixelsNeededForBackgroundFilterWithClip(bool
opaqueLayers) : OcclusionTrackerTest<Types>(opaqueLayers) {} |
| 2773 void runMyTest() | 2778 void runMyTest() |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2808 this->visitLayer(occludingLayer2, occlusion); | 2813 this->visitLayer(occludingLayer2, occlusion); |
| 2809 this->visitLayer(occludingLayer1, occlusion); | 2814 this->visitLayer(occludingLayer1, occlusion); |
| 2810 | 2815 |
| 2811 Region expectedOcclusion; | 2816 Region expectedOcclusion; |
| 2812 expectedOcclusion.Union(gfx::Rect(0, 0, 300, 50)); | 2817 expectedOcclusion.Union(gfx::Rect(0, 0, 300, 50)); |
| 2813 expectedOcclusion.Union(gfx::Rect(0, 50, 50, 50)); | 2818 expectedOcclusion.Union(gfx::Rect(0, 50, 50, 50)); |
| 2814 expectedOcclusion.Union(gfx::Rect(100, 50, 100, 50)); | 2819 expectedOcclusion.Union(gfx::Rect(100, 50, 100, 50)); |
| 2815 expectedOcclusion.Union(gfx::Rect(250, 50, 50, 50)); | 2820 expectedOcclusion.Union(gfx::Rect(250, 50, 50, 50)); |
| 2816 expectedOcclusion.Union(gfx::Rect(0, 100, 300, 50)); | 2821 expectedOcclusion.Union(gfx::Rect(0, 100, 300, 50)); |
| 2817 | 2822 |
| 2818 EXPECT_EQ(expectedOcclusion.ToString(), occlusion.occlusionInScreenSpace
().ToString()); | 2823 EXPECT_EQ(expectedOcclusion.ToString(), occlusion.occlusionFromInsideTar
get().ToString()); |
| 2819 EXPECT_EQ(expectedOcclusion.ToString(), occlusion.occlusionInTargetSurfa
ce().ToString()); | 2824 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 2820 | 2825 |
| 2821 // Everything outside the surface/replica is occluded but the surface/re
plica itself is not. | 2826 // Everything outside the surface/replica is occluded but the surface/re
plica itself is not. |
| 2822 this->enterLayer(filteredSurface, occlusion); | 2827 this->enterLayer(filteredSurface, occlusion); |
| 2823 EXPECT_RECT_EQ(gfx::Rect(1, 0, 49, 50), occlusion.unoccludedLayerContent
Rect(filteredSurface, gfx::Rect(1, 0, 50, 50))); | 2828 EXPECT_RECT_EQ(gfx::Rect(1, 0, 49, 50), occlusion.unoccludedLayerContent
Rect(filteredSurface, gfx::Rect(1, 0, 50, 50))); |
| 2824 EXPECT_RECT_EQ(gfx::Rect(0, 1, 50, 49), occlusion.unoccludedLayerContent
Rect(filteredSurface, gfx::Rect(0, 1, 50, 50))); | 2829 EXPECT_RECT_EQ(gfx::Rect(0, 1, 50, 49), occlusion.unoccludedLayerContent
Rect(filteredSurface, gfx::Rect(0, 1, 50, 50))); |
| 2825 EXPECT_RECT_EQ(gfx::Rect(0, 0, 49, 50), occlusion.unoccludedLayerContent
Rect(filteredSurface, gfx::Rect(-1, 0, 50, 50))); | 2830 EXPECT_RECT_EQ(gfx::Rect(0, 0, 49, 50), occlusion.unoccludedLayerContent
Rect(filteredSurface, gfx::Rect(-1, 0, 50, 50))); |
| 2826 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 49), occlusion.unoccludedLayerContent
Rect(filteredSurface, gfx::Rect(0, -1, 50, 50))); | 2831 EXPECT_RECT_EQ(gfx::Rect(0, 0, 50, 49), occlusion.unoccludedLayerContent
Rect(filteredSurface, gfx::Rect(0, -1, 50, 50))); |
| 2827 | 2832 |
| 2828 EXPECT_RECT_EQ(gfx::Rect(150 + 1, 0, 49, 50), occlusion.unoccludedLayerC
ontentRect(filteredSurface, gfx::Rect(150 + 1, 0, 50, 50))); | 2833 EXPECT_RECT_EQ(gfx::Rect(150 + 1, 0, 49, 50), occlusion.unoccludedLayerC
ontentRect(filteredSurface, gfx::Rect(150 + 1, 0, 50, 50))); |
| 2829 EXPECT_RECT_EQ(gfx::Rect(150 + 0, 1, 50, 49), occlusion.unoccludedLayerC
ontentRect(filteredSurface, gfx::Rect(150 + 0, 1, 50, 50))); | 2834 EXPECT_RECT_EQ(gfx::Rect(150 + 0, 1, 50, 49), occlusion.unoccludedLayerC
ontentRect(filteredSurface, gfx::Rect(150 + 0, 1, 50, 50))); |
| 2830 EXPECT_RECT_EQ(gfx::Rect(150 + 0, 0, 49, 50), occlusion.unoccludedLayerC
ontentRect(filteredSurface, gfx::Rect(150 - 1, 0, 50, 50))); | 2835 EXPECT_RECT_EQ(gfx::Rect(150 + 0, 0, 49, 50), occlusion.unoccludedLayerC
ontentRect(filteredSurface, gfx::Rect(150 - 1, 0, 50, 50))); |
| 2831 EXPECT_RECT_EQ(gfx::Rect(150 + 0, 0, 50, 49), occlusion.unoccludedLayerC
ontentRect(filteredSurface, gfx::Rect(150 + 0, -1, 50, 50))); | 2836 EXPECT_RECT_EQ(gfx::Rect(150 + 0, 0, 50, 49), occlusion.unoccludedLayerC
ontentRect(filteredSurface, gfx::Rect(150 + 0, -1, 50, 50))); |
| 2832 this->leaveLayer(filteredSurface, occlusion); | 2837 this->leaveLayer(filteredSurface, occlusion); |
| 2833 | 2838 |
| 2834 // The filtered layer/replica does not occlude. | 2839 // The filtered layer/replica does not occlude. |
| 2835 EXPECT_EQ(expectedOcclusion.ToString(), occlusion.occlusionInScreenSpace
().ToString()); | 2840 Region expectedOcclusionOutsideSurface; |
| 2836 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionInTargetSurface().T
oString()); | 2841 expectedOcclusionOutsideSurface.Union(gfx::Rect(-50, -50, 300, 50)); |
| 2842 expectedOcclusionOutsideSurface.Union(gfx::Rect(-50, 0, 50, 50)); |
| 2843 expectedOcclusionOutsideSurface.Union(gfx::Rect(50, 0, 100, 50)); |
| 2844 expectedOcclusionOutsideSurface.Union(gfx::Rect(200, 0, 50, 50)); |
| 2845 expectedOcclusionOutsideSurface.Union(gfx::Rect(-50, 50, 300, 50)); |
| 2846 |
| 2847 EXPECT_EQ(expectedOcclusionOutsideSurface.ToString(), occlusion.occlusio
nFromOutsideTarget().ToString()); |
| 2848 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromInsideTarget().
ToString()); |
| 2837 | 2849 |
| 2838 // The surface has a background blur, so it needs pixels that are curren
tly considered occluded in order to be drawn. So the pixels | 2850 // The surface has a background blur, so it needs pixels that are curren
tly considered occluded in order to be drawn. So the pixels |
| 2839 // it needs should be removed some the occluded area so that when we get
to the parent they are drawn. | 2851 // it needs should be removed some the occluded area so that when we get
to the parent they are drawn. |
| 2840 this->visitContributingSurface(filteredSurface, occlusion); | 2852 this->visitContributingSurface(filteredSurface, occlusion); |
| 2841 | 2853 |
| 2842 this->enterContributingSurface(clippingSurface, occlusion); | 2854 this->enterContributingSurface(clippingSurface, occlusion); |
| 2843 | 2855 |
| 2844 Region expectedBlurredOcclusion; | 2856 Region expectedBlurredOcclusion; |
| 2845 expectedBlurredOcclusion.Union(gfx::Rect(0, 0, 300, 50 - outsetTop)); | 2857 expectedBlurredOcclusion.Union(gfx::Rect(0, 0, 300, 50 - outsetTop)); |
| 2846 expectedBlurredOcclusion.Union(gfx::Rect(0, 50 - outsetTop, 50 - outsetL
eft, 20 + outsetTop + outsetBottom)); | 2858 expectedBlurredOcclusion.Union(gfx::Rect(0, 50 - outsetTop, 50 - outsetL
eft, 20 + outsetTop + outsetBottom)); |
| 2847 expectedBlurredOcclusion.Union(gfx::Rect(100 + outsetRight, 50 - outsetT
op, 100 - outsetRight - outsetLeft, 20 + outsetTop + outsetBottom)); | 2859 expectedBlurredOcclusion.Union(gfx::Rect(100 + outsetRight, 50 - outsetT
op, 100 - outsetRight - outsetLeft, 20 + outsetTop + outsetBottom)); |
| 2848 expectedBlurredOcclusion.Union(gfx::Rect(250 + outsetRight, 50 - outsetT
op, 50 - outsetRight, 20 + outsetTop + outsetBottom)); | 2860 expectedBlurredOcclusion.Union(gfx::Rect(250 + outsetRight, 50 - outsetT
op, 50 - outsetRight, 20 + outsetTop + outsetBottom)); |
| 2849 expectedBlurredOcclusion.Union(gfx::Rect(0, 100 + 5, 300, 50 - 5)); | 2861 expectedBlurredOcclusion.Union(gfx::Rect(0, 100 + 5, 300, 50 - 5)); |
| 2850 | 2862 |
| 2851 EXPECT_EQ(expectedBlurredOcclusion.ToString(), occlusion.occlusionInScre
enSpace().ToString()); | 2863 EXPECT_EQ(expectedBlurredOcclusion.ToString(), occlusion.occlusionFromOu
tsideTarget().ToString()); |
| 2852 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionInTargetSurface().T
oString()); | 2864 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromInsideTarget().
ToString()); |
| 2853 | 2865 |
| 2854 gfx::Rect outsetRect; | 2866 gfx::Rect outsetRect; |
| 2855 gfx::Rect clippedOutsetRect; | 2867 gfx::Rect clippedOutsetRect; |
| 2856 gfx::Rect testRect; | 2868 gfx::Rect testRect; |
| 2857 | 2869 |
| 2858 // Nothing in the (clipped) blur outsets for the filteredSurface is occl
uded. | 2870 // Nothing in the (clipped) blur outsets for the filteredSurface is occl
uded. |
| 2859 outsetRect = gfx::Rect(50 - outsetLeft, 50 - outsetTop, 50 + outsetLeft
+ outsetRight, 50 + outsetTop + outsetBottom); | 2871 outsetRect = gfx::Rect(50 - outsetLeft, 50 - outsetTop, 50 + outsetLeft
+ outsetRight, 50 + outsetTop + outsetBottom); |
| 2860 clippedOutsetRect = gfx::IntersectRects(outsetRect, gfx::Rect(0 - outset
Left, 0 - outsetTop, 300 + outsetLeft + outsetRight, 70 + outsetTop + outsetBott
om)); | 2872 clippedOutsetRect = gfx::IntersectRects(outsetRect, gfx::Rect(0 - outset
Left, 0 - outsetTop, 300 + outsetLeft + outsetRight, 70 + outsetTop + outsetBott
om)); |
| 2861 testRect = outsetRect; | 2873 testRect = outsetRect; |
| 2862 EXPECT_RECT_EQ(clippedOutsetRect, occlusion.unoccludedLayerContentRect(c
lippingSurface, testRect)); | 2874 EXPECT_RECT_EQ(clippedOutsetRect, occlusion.unoccludedLayerContentRect(c
lippingSurface, testRect)); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2933 | 2945 |
| 2934 this->visitLayer(behindReplicaLayer, occlusion); | 2946 this->visitLayer(behindReplicaLayer, occlusion); |
| 2935 this->visitLayer(behindSurfaceLayer, occlusion); | 2947 this->visitLayer(behindSurfaceLayer, occlusion); |
| 2936 | 2948 |
| 2937 // The layers behind the surface are not blurred, and their occlusion do
es not change, until we leave the surface. | 2949 // The layers behind the surface are not blurred, and their occlusion do
es not change, until we leave the surface. |
| 2938 // So it should not be modified by the filter here. | 2950 // So it should not be modified by the filter here. |
| 2939 gfx::Rect occlusionBehindSurface = gfx::Rect(60, 60, 30, 30); | 2951 gfx::Rect occlusionBehindSurface = gfx::Rect(60, 60, 30, 30); |
| 2940 gfx::Rect occlusionBehindReplica = gfx::Rect(210, 60, 30, 30); | 2952 gfx::Rect occlusionBehindReplica = gfx::Rect(210, 60, 30, 30); |
| 2941 | 2953 |
| 2942 Region expectedOpaqueBounds = UnionRegions(occlusionBehindSurface, occlu
sionBehindReplica); | 2954 Region expectedOpaqueBounds = UnionRegions(occlusionBehindSurface, occlu
sionBehindReplica); |
| 2943 EXPECT_EQ(expectedOpaqueBounds.ToString(), occlusion.occlusionInScreenSp
ace().ToString()); | 2955 EXPECT_EQ(expectedOpaqueBounds.ToString(), occlusion.occlusionFromInside
Target().ToString()); |
| 2944 EXPECT_EQ(expectedOpaqueBounds.ToString(), occlusion.occlusionInTargetSu
rface().ToString()); | 2956 |
| 2957 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 2945 } | 2958 } |
| 2946 }; | 2959 }; |
| 2947 | 2960 |
| 2948 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestDontReduceOcclusionBelowBackground
Filter); | 2961 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestDontReduceOcclusionBelowBackground
Filter); |
| 2949 | 2962 |
| 2950 template<class Types> | 2963 template<class Types> |
| 2951 class OcclusionTrackerTestDontReduceOcclusionIfBackgroundFilterIsOccluded : publ
ic OcclusionTrackerTest<Types> { | 2964 class OcclusionTrackerTestDontReduceOcclusionIfBackgroundFilterIsOccluded : publ
ic OcclusionTrackerTest<Types> { |
| 2952 protected: | 2965 protected: |
| 2953 OcclusionTrackerTestDontReduceOcclusionIfBackgroundFilterIsOccluded(bool opa
queLayers) : OcclusionTrackerTest<Types>(opaqueLayers) {} | 2966 OcclusionTrackerTestDontReduceOcclusionIfBackgroundFilterIsOccluded(bool opa
queLayers) : OcclusionTrackerTest<Types>(opaqueLayers) {} |
| 2954 void runMyTest() | 2967 void runMyTest() |
| (...skipping 16 matching lines...) Expand all Loading... |
| 2971 filteredSurface->setBackgroundFilters(filters); | 2984 filteredSurface->setBackgroundFilters(filters); |
| 2972 | 2985 |
| 2973 this->calcDrawEtc(parent); | 2986 this->calcDrawEtc(parent); |
| 2974 | 2987 |
| 2975 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 2988 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 2976 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); | 2989 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); |
| 2977 | 2990 |
| 2978 this->visitLayer(aboveReplicaLayer, occlusion); | 2991 this->visitLayer(aboveReplicaLayer, occlusion); |
| 2979 this->visitLayer(aboveSurfaceLayer, occlusion); | 2992 this->visitLayer(aboveSurfaceLayer, occlusion); |
| 2980 | 2993 |
| 2994 this->visitLayer(filteredSurface, occlusion); |
| 2995 |
| 2996 { |
| 2997 // The layers above the filtered surface occlude from outside. |
| 2998 gfx::Rect occlusionAboveSurface = gfx::Rect(0, 0, 50, 50); |
| 2999 gfx::Rect occlusionAboveReplica = gfx::Rect(150, 0, 50, 50); |
| 3000 Region expectedOpaqueRegion = UnionRegions(occlusionAboveSurface, oc
clusionAboveReplica); |
| 3001 |
| 3002 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromInsideTarge
t().ToString()); |
| 3003 EXPECT_EQ(expectedOpaqueRegion.ToString(), occlusion.occlusionFromOu
tsideTarget().ToString()); |
| 3004 } |
| 3005 |
| 2981 // The surface has a background blur, so it blurs non-opaque pixels belo
w it. | 3006 // The surface has a background blur, so it blurs non-opaque pixels belo
w it. |
| 2982 this->visitLayer(filteredSurface, occlusion); | |
| 2983 this->visitContributingSurface(filteredSurface, occlusion); | 3007 this->visitContributingSurface(filteredSurface, occlusion); |
| 2984 | 3008 |
| 2985 // The filter is completely occluded, so it should not blur anything and
reduce any occlusion. | 3009 { |
| 2986 gfx::Rect occlusionAboveSurface = gfx::Rect(50, 50, 50, 50); | 3010 // The filter is completely occluded, so it should not blur anything
and reduce any occlusion. |
| 2987 gfx::Rect occlusionAboveReplica = gfx::Rect(200, 50, 50, 50); | 3011 gfx::Rect occlusionAboveSurface = gfx::Rect(50, 50, 50, 50); |
| 3012 gfx::Rect occlusionAboveReplica = gfx::Rect(200, 50, 50, 50); |
| 3013 Region expectedOpaqueRegion = UnionRegions(occlusionAboveSurface, oc
clusionAboveReplica); |
| 2988 | 3014 |
| 2989 Region expectedOpaqueRegion = UnionRegions(occlusionAboveSurface, occlus
ionAboveReplica); | 3015 EXPECT_EQ(expectedOpaqueRegion.ToString(), occlusion.occlusionFromIn
sideTarget().ToString()); |
| 2990 EXPECT_EQ(expectedOpaqueRegion, occlusion.occlusionInScreenSpace()); | 3016 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarg
et().ToString()); |
| 2991 EXPECT_EQ(expectedOpaqueRegion, occlusion.occlusionInTargetSurface()); | 3017 } |
| 2992 } | 3018 } |
| 2993 }; | 3019 }; |
| 2994 | 3020 |
| 2995 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestDontReduceOcclusionIfBackgroundFil
terIsOccluded); | 3021 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestDontReduceOcclusionIfBackgroundFil
terIsOccluded); |
| 2996 | 3022 |
| 2997 template<class Types> | 3023 template<class Types> |
| 2998 class OcclusionTrackerTestReduceOcclusionWhenBackgroundFilterIsPartiallyOccluded
: public OcclusionTrackerTest<Types> { | 3024 class OcclusionTrackerTestReduceOcclusionWhenBackgroundFilterIsPartiallyOccluded
: public OcclusionTrackerTest<Types> { |
| 2999 protected: | 3025 protected: |
| 3000 OcclusionTrackerTestReduceOcclusionWhenBackgroundFilterIsPartiallyOccluded(b
ool opaqueLayers) : OcclusionTrackerTest<Types>(opaqueLayers) {} | 3026 OcclusionTrackerTestReduceOcclusionWhenBackgroundFilterIsPartiallyOccluded(b
ool opaqueLayers) : OcclusionTrackerTest<Types>(opaqueLayers) {} |
| 3001 void runMyTest() | 3027 void runMyTest() |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3045 gfx::Rect occlusionAboveReplica = gfx::Rect(200, 50, 30 - outsetLeft, 50
); | 3071 gfx::Rect occlusionAboveReplica = gfx::Rect(200, 50, 30 - outsetLeft, 50
); |
| 3046 gfx::Rect occlusionBesideSurface = gfx::Rect(90, 40, 10, 10); | 3072 gfx::Rect occlusionBesideSurface = gfx::Rect(90, 40, 10, 10); |
| 3047 gfx::Rect occlusionBesideReplica = gfx::Rect(200, 40, 10, 10); | 3073 gfx::Rect occlusionBesideReplica = gfx::Rect(200, 40, 10, 10); |
| 3048 | 3074 |
| 3049 Region expectedOcclusion; | 3075 Region expectedOcclusion; |
| 3050 expectedOcclusion.Union(occlusionAboveSurface); | 3076 expectedOcclusion.Union(occlusionAboveSurface); |
| 3051 expectedOcclusion.Union(occlusionAboveReplica); | 3077 expectedOcclusion.Union(occlusionAboveReplica); |
| 3052 expectedOcclusion.Union(occlusionBesideSurface); | 3078 expectedOcclusion.Union(occlusionBesideSurface); |
| 3053 expectedOcclusion.Union(occlusionBesideReplica); | 3079 expectedOcclusion.Union(occlusionBesideReplica); |
| 3054 | 3080 |
| 3055 ASSERT_EQ(expectedOcclusion, occlusion.occlusionInTargetSurface()); | 3081 ASSERT_EQ(expectedOcclusion.ToString(), occlusion.occlusionFromInsideTar
get().ToString()); |
| 3056 ASSERT_EQ(expectedOcclusion, occlusion.occlusionInScreenSpace()); | 3082 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 3057 | 3083 |
| 3058 Region::Iterator expectedRects(expectedOcclusion); | 3084 Region::Iterator expectedRects(expectedOcclusion); |
| 3059 Region::Iterator screenSpaceRects(occlusion.occlusionInScreenSpace()); | 3085 Region::Iterator targetSurfaceRects(occlusion.occlusionFromInsideTarget(
)); |
| 3060 Region::Iterator targetSurfaceRects(occlusion.occlusionInTargetSurface()
); | 3086 for (; expectedRects.has_rect(); expectedRects.next(), targetSurfaceRect
s.next()) { |
| 3061 for (; expectedRects.has_rect(); expectedRects.next(), screenSpaceRects.
next(), targetSurfaceRects.next()) { | |
| 3062 ASSERT_TRUE(screenSpaceRects.has_rect()); | |
| 3063 ASSERT_TRUE(targetSurfaceRects.has_rect()); | 3087 ASSERT_TRUE(targetSurfaceRects.has_rect()); |
| 3064 EXPECT_EQ(expectedRects.rect(), screenSpaceRects.rect()); | |
| 3065 EXPECT_EQ(expectedRects.rect(), targetSurfaceRects.rect()); | 3088 EXPECT_EQ(expectedRects.rect(), targetSurfaceRects.rect()); |
| 3066 } | 3089 } |
| 3067 } | 3090 } |
| 3068 }; | 3091 }; |
| 3069 | 3092 |
| 3070 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReduceOcclusionWhenBackgroundFilte
rIsPartiallyOccluded); | 3093 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestReduceOcclusionWhenBackgroundFilte
rIsPartiallyOccluded); |
| 3071 | 3094 |
| 3072 template<class Types> | 3095 template<class Types> |
| 3073 class OcclusionTrackerTestMinimumTrackingSize : public OcclusionTrackerTest<Type
s> { | 3096 class OcclusionTrackerTestMinimumTrackingSize : public OcclusionTrackerTest<Type
s> { |
| 3074 protected: | 3097 protected: |
| 3075 OcclusionTrackerTestMinimumTrackingSize(bool opaqueLayers) : OcclusionTracke
rTest<Types>(opaqueLayers) {} | 3098 OcclusionTrackerTestMinimumTrackingSize(bool opaqueLayers) : OcclusionTracke
rTest<Types>(opaqueLayers) {} |
| 3076 void runMyTest() | 3099 void runMyTest() |
| 3077 { | 3100 { |
| 3078 gfx::Size trackingSize(100, 100); | 3101 gfx::Size trackingSize(100, 100); |
| 3079 gfx::Size belowTrackingSize(99, 99); | 3102 gfx::Size belowTrackingSize(99, 99); |
| 3080 | 3103 |
| 3081 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(400, 400)); | 3104 typename Types::ContentLayerType* parent = this->createRoot(this->identi
tyMatrix, gfx::PointF(0, 0), gfx::Size(400, 400)); |
| 3082 typename Types::LayerType* large = this->createDrawingLayer(parent, this
->identityMatrix, gfx::PointF(0, 0), trackingSize, true); | 3105 typename Types::LayerType* large = this->createDrawingLayer(parent, this
->identityMatrix, gfx::PointF(0, 0), trackingSize, true); |
| 3083 typename Types::LayerType* small = this->createDrawingLayer(parent, this
->identityMatrix, gfx::PointF(0, 0), belowTrackingSize, true); | 3106 typename Types::LayerType* small = this->createDrawingLayer(parent, this
->identityMatrix, gfx::PointF(0, 0), belowTrackingSize, true); |
| 3084 this->calcDrawEtc(parent); | 3107 this->calcDrawEtc(parent); |
| 3085 | 3108 |
| 3086 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); | 3109 TestOcclusionTrackerWithClip<typename Types::LayerType, typename Types::
RenderSurfaceType> occlusion(gfx::Rect(0, 0, 1000, 1000)); |
| 3087 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); | 3110 occlusion.setLayerClipRect(gfx::Rect(0, 0, 1000, 1000)); |
| 3088 occlusion.setMinimumTrackingSize(trackingSize); | 3111 occlusion.setMinimumTrackingSize(trackingSize); |
| 3089 | 3112 |
| 3090 // The small layer is not tracked because it is too small. | 3113 // The small layer is not tracked because it is too small. |
| 3091 this->visitLayer(small, occlusion); | 3114 this->visitLayer(small, occlusion); |
| 3092 | 3115 |
| 3093 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionInScreenSpace().ToS
tring()); | 3116 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 3094 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionInTargetSurface().T
oString()); | 3117 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromInsideTarget().
ToString()); |
| 3095 | 3118 |
| 3096 // The large layer is tracked as it is large enough. | 3119 // The large layer is tracked as it is large enough. |
| 3097 this->visitLayer(large, occlusion); | 3120 this->visitLayer(large, occlusion); |
| 3098 | 3121 |
| 3099 EXPECT_EQ(gfx::Rect(gfx::Point(), trackingSize).ToString(), occlusion.oc
clusionInScreenSpace().ToString()); | 3122 EXPECT_EQ(gfx::Rect().ToString(), occlusion.occlusionFromOutsideTarget()
.ToString()); |
| 3100 EXPECT_EQ(gfx::Rect(gfx::Point(), trackingSize).ToString(), occlusion.oc
clusionInTargetSurface().ToString()); | 3123 EXPECT_EQ(gfx::Rect(gfx::Point(), trackingSize).ToString(), occlusion.oc
clusionFromInsideTarget().ToString()); |
| 3101 } | 3124 } |
| 3102 }; | 3125 }; |
| 3103 | 3126 |
| 3104 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestMinimumTrackingSize); | 3127 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestMinimumTrackingSize); |
| 3105 | 3128 |
| 3106 } // namespace | 3129 } // namespace |
| 3107 } // namespace cc | 3130 } // namespace cc |
| OLD | NEW |