Chromium Code Reviews| Index: cc/layer_tree_host_common_unittest.cc |
| diff --git a/cc/layer_tree_host_common_unittest.cc b/cc/layer_tree_host_common_unittest.cc |
| index 30aa9432c8c5c47657336e442c6492e8a751a7fa..c3ccba020d7b1752396b830e90d40da91256477c 100644 |
| --- a/cc/layer_tree_host_common_unittest.cc |
| +++ b/cc/layer_tree_host_common_unittest.cc |
| @@ -49,7 +49,7 @@ void setLayerPropertiesForTesting(LayerImpl* layer, const WebTransformationMatri |
| layer->setContentBounds(bounds); |
| } |
| -void executeCalculateDrawTransformsAndVisibility(Layer* rootLayer, float deviceScaleFactor = 1, float pageScaleFactor = 1) |
| +void executeCalculateDrawTransformsAndVisibility(Layer* rootLayer, float deviceScaleFactor = 1, float pageScaleFactor = 1, bool canUseLCDText = false) |
| { |
| WebTransformationMatrix identityMatrix; |
| std::vector<scoped_refptr<Layer> > dummyRenderSurfaceLayerList; |
| @@ -58,10 +58,10 @@ void executeCalculateDrawTransformsAndVisibility(Layer* rootLayer, float deviceS |
| // We are probably not testing what is intended if the rootLayer bounds are empty. |
| DCHECK(!rootLayer->bounds().IsEmpty()); |
| - LayerTreeHostCommon::calculateDrawTransforms(rootLayer, deviceViewportSize, deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, dummyRenderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(rootLayer, deviceViewportSize, deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, canUseLCDText, dummyRenderSurfaceLayerList); |
| } |
| -void executeCalculateDrawTransformsAndVisibility(LayerImpl* rootLayer, float deviceScaleFactor = 1, float pageScaleFactor = 1) |
| +void executeCalculateDrawTransformsAndVisibility(LayerImpl* rootLayer, float deviceScaleFactor = 1, float pageScaleFactor = 1, bool canUseLCDText = false) |
| { |
| // Note: this version skips layer sorting. |
| @@ -72,7 +72,7 @@ void executeCalculateDrawTransformsAndVisibility(LayerImpl* rootLayer, float dev |
| // We are probably not testing what is intended if the rootLayer bounds are empty. |
| DCHECK(!rootLayer->bounds().IsEmpty()); |
| - LayerTreeHostCommon::calculateDrawTransforms(rootLayer, deviceViewportSize, deviceScaleFactor, pageScaleFactor, 0, dummyMaxTextureSize, dummyRenderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(rootLayer, deviceViewportSize, deviceScaleFactor, pageScaleFactor, 0, dummyMaxTextureSize, canUseLCDText, dummyRenderSurfaceLayerList); |
| } |
| WebTransformationMatrix remove3DComponentOfMatrix(const WebTransformationMatrix& mat) |
| @@ -711,7 +711,7 @@ TEST(LayerTreeHostCommonTest, verifyRenderSurfaceListForRenderSurfaceWithClipped |
| std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| // The child layer's content is entirely outside the parent's clip rect, so the intermediate |
| // render surface should not be listed here, even if it was forced to be created. Render surfaces without children or visible |
| @@ -738,7 +738,7 @@ TEST(LayerTreeHostCommonTest, verifyRenderSurfaceListForTransparentChild) |
| std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| // Since the layer is transparent, renderSurface1->renderSurface() should not have gotten added anywhere. |
| // Also, the drawable content rect should not have been extended by the children. |
| @@ -770,7 +770,7 @@ TEST(LayerTreeHostCommonTest, verifyForceRenderSurface) |
| std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| // The root layer always creates a renderSurface |
| EXPECT_TRUE(parent->renderSurface()); |
| @@ -779,7 +779,7 @@ TEST(LayerTreeHostCommonTest, verifyForceRenderSurface) |
| renderSurfaceLayerList.clear(); |
| renderSurface1->setForceRenderSurface(false); |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| EXPECT_TRUE(parent->renderSurface()); |
| EXPECT_FALSE(renderSurface1->renderSurface()); |
| EXPECT_EQ(1U, renderSurfaceLayerList.size()); |
| @@ -1373,7 +1373,7 @@ TEST(LayerTreeHostCommonTest, verifyClipRectCullsRenderSurfaces) |
| std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| ASSERT_EQ(2U, renderSurfaceLayerList.size()); |
| EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id()); |
| @@ -1418,7 +1418,7 @@ TEST(LayerTreeHostCommonTest, verifyClipRectCullsSurfaceWithoutVisibleContent) |
| std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| // Without an animation, we should cull child and grandChild from the renderSurfaceLayerList. |
| ASSERT_EQ(1U, renderSurfaceLayerList.size()); |
| @@ -1432,7 +1432,7 @@ TEST(LayerTreeHostCommonTest, verifyClipRectCullsSurfaceWithoutVisibleContent) |
| grandChild->clearRenderSurface(); |
| renderSurfaceLayerList.clear(); |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| // With an animating transform, we should keep child and grandChild in the renderSurfaceLayerList. |
| ASSERT_EQ(3U, renderSurfaceLayerList.size()); |
| @@ -1484,7 +1484,7 @@ TEST(LayerTreeHostCommonTest, verifyDrawableContentRectForLayers) |
| std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| EXPECT_RECT_EQ(gfx::Rect(gfx::Point(5, 5), gfx::Size(10, 10)), grandChild1->drawableContentRect()); |
| EXPECT_RECT_EQ(gfx::Rect(gfx::Point(15, 15), gfx::Size(5, 5)), grandChild3->drawableContentRect()); |
| @@ -1549,7 +1549,7 @@ TEST(LayerTreeHostCommonTest, verifyClipRectIsPropagatedCorrectlyToSurfaces) |
| std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| ASSERT_TRUE(grandChild1->renderSurface()); |
| ASSERT_TRUE(grandChild2->renderSurface()); |
| @@ -2391,7 +2391,7 @@ TEST(LayerTreeHostCommonTest, verifyBackFaceCullingWithoutPreserves3d) |
| std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| // Verify which renderSurfaces were created. |
| EXPECT_FALSE(frontFacingChild->renderSurface()); |
| @@ -2490,7 +2490,7 @@ TEST(LayerTreeHostCommonTest, verifyBackFaceCullingWithPreserves3d) |
| std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| // Verify which renderSurfaces were created. |
| EXPECT_FALSE(frontFacingChild->renderSurface()); |
| @@ -2570,7 +2570,7 @@ TEST(LayerTreeHostCommonTest, verifyBackFaceCullingWithAnimatingTransforms) |
| std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| EXPECT_FALSE(child->renderSurface()); |
| EXPECT_TRUE(animatingSurface->renderSurface()); |
| @@ -2636,7 +2636,7 @@ TEST(LayerTreeHostCommonTest, verifyBackFaceCullingWithPreserves3dForFlatteningS |
| std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| // Verify which renderSurfaces were created. |
| EXPECT_TRUE(frontFacingSurface->renderSurface()); |
| @@ -2686,7 +2686,7 @@ TEST(LayerTreeHostCommonTest, verifyHitTestingForSingleLayer) |
| std::vector<LayerImpl*> renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1, 1, 0, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1, 1, 0, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| // Sanity check the scenario we just created. |
| ASSERT_EQ(1u, renderSurfaceLayerList.size()); |
| @@ -2733,7 +2733,7 @@ TEST(LayerTreeHostCommonTest, verifyHitTestingForUninvertibleTransform) |
| std::vector<LayerImpl*> renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1, 1, 0, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1, 1, 0, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| // Sanity check the scenario we just created. |
| ASSERT_EQ(1u, renderSurfaceLayerList.size()); |
| @@ -2785,7 +2785,7 @@ TEST(LayerTreeHostCommonTest, verifyHitTestingForSinglePositionedLayer) |
| std::vector<LayerImpl*> renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1, 1, 0, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1, 1, 0, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| // Sanity check the scenario we just created. |
| ASSERT_EQ(1u, renderSurfaceLayerList.size()); |
| @@ -2830,7 +2830,7 @@ TEST(LayerTreeHostCommonTest, verifyHitTestingForSingleRotatedLayer) |
| std::vector<LayerImpl*> renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1, 1, 0, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1, 1, 0, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| // Sanity check the scenario we just created. |
| ASSERT_EQ(1u, renderSurfaceLayerList.size()); |
| @@ -2884,7 +2884,7 @@ TEST(LayerTreeHostCommonTest, verifyHitTestingForSinglePerspectiveLayer) |
| std::vector<LayerImpl*> renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1, 1, 0, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1, 1, 0, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| // Sanity check the scenario we just created. |
| ASSERT_EQ(1u, renderSurfaceLayerList.size()); |
| @@ -2947,7 +2947,7 @@ TEST(LayerTreeHostCommonTest, verifyHitTestingForSingleLayerWithScaledContents) |
| std::vector<LayerImpl*> renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1, 1, 0, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1, 1, 0, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| // Sanity check the scenario we just created. |
| // The visibleContentRect for testLayer is actually 100x100, even though its layout size is 50x50, positioned at 25x25. |
| @@ -3009,7 +3009,7 @@ TEST(LayerTreeHostCommonTest, verifyHitTestingForSimpleClippedLayer) |
| std::vector<LayerImpl*> renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1, 1, 0, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1, 1, 0, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| // Sanity check the scenario we just created. |
| ASSERT_EQ(1u, renderSurfaceLayerList.size()); |
| @@ -3097,7 +3097,7 @@ TEST(LayerTreeHostCommonTest, verifyHitTestingForMultiClippedRotatedLayer) |
| std::vector<LayerImpl*> renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1, 1, 0, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1, 1, 0, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| // Sanity check the scenario we just created. |
| // The grandChild is expected to create a renderSurface because it masksToBounds and is not axis aligned. |
| @@ -3177,7 +3177,7 @@ TEST(LayerTreeHostCommonTest, verifyHitTestingForNonClippingIntermediateLayer) |
| std::vector<LayerImpl*> renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1, 1, 0, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1, 1, 0, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| // Sanity check the scenario we just created. |
| ASSERT_EQ(1u, renderSurfaceLayerList.size()); |
| @@ -3255,7 +3255,7 @@ TEST(LayerTreeHostCommonTest, verifyHitTestingForMultipleLayers) |
| std::vector<LayerImpl*> renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1, 1, 0, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1, 1, 0, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| // Sanity check the scenario we just created. |
| ASSERT_TRUE(child1); |
| @@ -3361,7 +3361,7 @@ TEST(LayerTreeHostCommonTest, verifyHitTestingForMultipleLayerLists) |
| std::vector<LayerImpl*> renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1, 1, 0, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1, 1, 0, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| // Sanity check the scenario we just created. |
| ASSERT_TRUE(child1); |
| @@ -3462,7 +3462,7 @@ TEST(LayerTreeHostCommonTest, verifyLayerTransformsInHighDPI) |
| const double deviceScaleFactor = 2.5; |
| const double pageScaleFactor = 1; |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, parent); |
| EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, child); |
| @@ -3536,7 +3536,7 @@ TEST(LayerTreeHostCommonTest, verifyLayerTransformsInHighDPIAccurateScaleZeroChi |
| const float deviceScaleFactor = 1.7f; |
| const float pageScaleFactor = 1; |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, parent); |
| EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, child); |
| @@ -3637,7 +3637,7 @@ TEST(LayerTreeHostCommonTest, verifyContentsScale) |
| pageScaleMatrix.scale(pageScaleFactor); |
| parent->setSublayerTransform(pageScaleMatrix); |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * initialParentScale, parent); |
| EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * initialParentScale * initialChildScale, childScale); |
| @@ -3660,7 +3660,7 @@ TEST(LayerTreeHostCommonTest, verifyContentsScale) |
| childScale->setTransform(identityMatrix); |
| renderSurfaceLayerList.clear(); |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * initialParentScale, parent); |
| EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * initialParentScale * initialChildScale, childScale); |
| @@ -3676,7 +3676,7 @@ TEST(LayerTreeHostCommonTest, verifyContentsScale) |
| parent->setSublayerTransform(pageScaleMatrix); |
| renderSurfaceLayerList.clear(); |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * initialParentScale, parent); |
| EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * initialParentScale * initialChildScale, childScale); |
| @@ -3720,7 +3720,7 @@ TEST(LayerTreeHostCommonTest, verifySmallContentsScale) |
| pageScaleMatrix.scale(pageScaleFactor); |
| parent->setSublayerTransform(pageScaleMatrix); |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * initialParentScale, parent); |
| // The child's scale is < 1, so we should not save and use that scale factor. |
| @@ -3733,7 +3733,7 @@ TEST(LayerTreeHostCommonTest, verifySmallContentsScale) |
| childScale->setTransform(childScaleMatrix); |
| renderSurfaceLayerList.clear(); |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * initialParentScale, parent); |
| EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * initialParentScale * finalChildScale, childScale); |
| @@ -3817,7 +3817,7 @@ TEST(LayerTreeHostCommonTest, verifyContentsScaleForSurfaces) |
| pageScaleMatrix.scale(pageScaleFactor); |
| parent->setSublayerTransform(pageScaleMatrix); |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * initialParentScale, parent); |
| EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * initialParentScale * initialChildScale, surfaceScale); |
| @@ -3911,7 +3911,7 @@ TEST(LayerTreeHostCommonTest, verifyContentsScaleForAnimatingLayer) |
| std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; |
| int dummyMaxTextureSize = 512; |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| EXPECT_CONTENTS_SCALE_EQ(initialParentScale, parent); |
| // The layers with animating transforms should not compute a contentsScale other than 1 until they finish animating. |
| @@ -3920,7 +3920,7 @@ TEST(LayerTreeHostCommonTest, verifyContentsScaleForAnimatingLayer) |
| // Remove the animation, now it can save a raster scale. |
| childScale->layerAnimationController()->removeAnimation(animationId); |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| EXPECT_CONTENTS_SCALE_EQ(initialParentScale, parent); |
| // The layers with animating transforms should not compute a contentsScale other than 1 until they finish animating. |
| @@ -3962,7 +3962,7 @@ TEST(LayerTreeHostCommonTest, verifyRenderSurfaceTransformsInHighDPI) |
| duplicateChildNonOwner->setContentsScale(deviceScaleFactor); |
| replica->setContentsScale(deviceScaleFactor); |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), deviceScaleFactor, 1, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), deviceScaleFactor, 1, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| // We should have two render surfaces. The root's render surface and child's |
| // render surface (it needs one because it has a replica layer). |
| @@ -4045,7 +4045,7 @@ TEST(LayerTreeHostCommonTest, verifyRenderSurfaceTransformsInHighDPIAccurateScal |
| duplicateChildNonOwner->setContentsScale(deviceScaleFactor); |
| replica->setContentsScale(deviceScaleFactor); |
| - LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), deviceScaleFactor, 1, dummyMaxTextureSize, renderSurfaceLayerList); |
| + LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), deviceScaleFactor, 1, dummyMaxTextureSize, false, renderSurfaceLayerList); |
| // We should have two render surfaces. The root's render surface and child's |
| // render surface (it needs one because it has a replica layer). |
| @@ -4097,5 +4097,148 @@ TEST(LayerTreeHostCommonTest, verifySubtreeSearch) |
| EXPECT_EQ(0, LayerTreeHostCommon::findLayerInSubtree(root.get(), nonexistentId)); |
| } |
| +typedef std::tr1::tuple<bool, int> LCDTextTestParam; |
| +class LCDTextTest : public testing::TestWithParam<LCDTextTestParam> { |
| +public: |
| + enum LayerProperty { |
| + LAYER_REGULAR, |
| + LAYER_PRESERVES_3D, |
| + LAYER_FORCES_RENDER_SURFACE |
| + }; |
| + |
| +protected: |
| + virtual void SetUp() |
| + { |
| + m_canUseLCDText = std::tr1::get<0>(GetParam()); |
| + |
| + m_root = Layer::create(); |
| + m_child = Layer::create(); |
| + m_grandChild = Layer::create(); |
| + m_child->addChild(m_grandChild.get()); |
| + m_root->addChild(m_child.get()); |
| + |
| + WebTransformationMatrix identityMatrix; |
| + setLayerPropertiesForTesting(m_root, identityMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(1, 1), false); |
| + setLayerPropertiesForTesting(m_child, identityMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(1, 1), false); |
| + setLayerPropertiesForTesting(m_grandChild, identityMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(1, 1), false); |
| + |
| + switch (std::tr1::get<1>(GetParam())) { |
| + case LAYER_REGULAR: |
| + break; |
| + case LAYER_PRESERVES_3D: |
|
enne (OOO)
2012/11/14 17:42:15
How does preserves 3d enter into this?
alokp
2012/11/16 04:41:11
drawOpacity and drawOpacityAnimating is inherited
enne (OOO)
2012/11/16 17:36:38
It still feels like overtesting to me. We have ot
alokp
2012/11/16 21:33:52
Done.
|
| + m_child->setPreserves3D(true); |
| + break; |
| + case LAYER_FORCES_RENDER_SURFACE: |
| + m_child->setForceRenderSurface(true); |
| + break; |
| + default: |
| + NOTREACHED(); |
| + } |
| + } |
| + |
| + bool m_canUseLCDText; |
| + scoped_refptr<Layer> m_root; |
| + scoped_refptr<Layer> m_child; |
| + scoped_refptr<Layer> m_grandChild; |
| +}; |
| + |
| +TEST_P(LCDTextTest, verifyCanUseLCDText) |
| +{ |
| + // Case 1: Identity transform. |
| + WebTransformationMatrix identityMatrix; |
| + executeCalculateDrawTransformsAndVisibility(m_root, 1, 1, m_canUseLCDText); |
| + EXPECT_EQ(m_canUseLCDText, m_root->canUseLCDText()); |
| + EXPECT_EQ(m_canUseLCDText, m_child->canUseLCDText()); |
| + EXPECT_EQ(m_canUseLCDText, m_grandChild->canUseLCDText()); |
| + |
| + // Case 2: Integral translation. |
| + WebTransformationMatrix integralTranslation; |
| + integralTranslation.translate(1, 2); |
| + m_child->setTransform(integralTranslation); |
| + executeCalculateDrawTransformsAndVisibility(m_root, 1, 1, m_canUseLCDText); |
| + EXPECT_EQ(m_canUseLCDText, m_root->canUseLCDText()); |
| + EXPECT_EQ(m_canUseLCDText, m_child->canUseLCDText()); |
| + EXPECT_EQ(m_canUseLCDText, m_grandChild->canUseLCDText()); |
| + |
| + // Case 3: Non-integral translation. |
| + WebTransformationMatrix nonIntegralTranslation; |
| + nonIntegralTranslation.translate(1.5, 2.5); |
| + m_child->setTransform(nonIntegralTranslation); |
| + executeCalculateDrawTransformsAndVisibility(m_root, 1, 1, m_canUseLCDText); |
| + EXPECT_EQ(m_canUseLCDText, m_root->canUseLCDText()); |
| + EXPECT_EQ(false, m_child->canUseLCDText()); |
| + EXPECT_EQ(false, m_grandChild->canUseLCDText()); |
| + |
| + // Case 4: Rotation. |
| + WebTransformationMatrix rotation; |
| + rotation.rotate(10); |
| + m_child->setTransform(rotation); |
| + executeCalculateDrawTransformsAndVisibility(m_root, 1, 1, m_canUseLCDText); |
| + EXPECT_EQ(m_canUseLCDText, m_root->canUseLCDText()); |
| + EXPECT_EQ(false, m_child->canUseLCDText()); |
| + EXPECT_EQ(false, m_grandChild->canUseLCDText()); |
| + |
| + // Case 5: Scale. |
| + WebTransformationMatrix scale; |
| + scale.scale(2); |
| + m_child->setTransform(scale); |
| + executeCalculateDrawTransformsAndVisibility(m_root, 1, 1, m_canUseLCDText); |
| + EXPECT_EQ(m_canUseLCDText, m_root->canUseLCDText()); |
| + EXPECT_EQ(false, m_child->canUseLCDText()); |
| + EXPECT_EQ(false, m_grandChild->canUseLCDText()); |
| + |
| + // Case 6: Skew. |
| + WebTransformationMatrix skew; |
| + skew.skewX(10); |
| + m_child->setTransform(skew); |
| + executeCalculateDrawTransformsAndVisibility(m_root, 1, 1, m_canUseLCDText); |
| + EXPECT_EQ(m_canUseLCDText, m_root->canUseLCDText()); |
| + EXPECT_EQ(false, m_child->canUseLCDText()); |
| + EXPECT_EQ(false, m_grandChild->canUseLCDText()); |
| + |
| + // Case 7: Translucent. |
| + m_child->setTransform(identityMatrix); |
| + m_child->setOpacity(0.5); |
| + executeCalculateDrawTransformsAndVisibility(m_root, 1, 1, m_canUseLCDText); |
| + EXPECT_EQ(m_canUseLCDText, m_root->canUseLCDText()); |
| + EXPECT_EQ(false, m_child->canUseLCDText()); |
| + EXPECT_EQ(m_child->forceRenderSurface() || m_child->preserves3D() ? false : m_canUseLCDText, m_grandChild->canUseLCDText()); |
| + |
| + // Case 8: Sanity check: restore transform and opacity. |
| + m_child->setTransform(identityMatrix); |
| + m_child->setOpacity(1); |
| + executeCalculateDrawTransformsAndVisibility(m_root, 1, 1, m_canUseLCDText); |
| + EXPECT_EQ(m_canUseLCDText, m_root->canUseLCDText()); |
| + EXPECT_EQ(m_canUseLCDText, m_child->canUseLCDText()); |
| + EXPECT_EQ(m_canUseLCDText, m_grandChild->canUseLCDText()); |
| +} |
| + |
| +TEST_P(LCDTextTest, verifyCanUseLCDTextWithAnimation) |
| +{ |
| + // Sanity check: Make sure m_canUseLCDText is set on each node. |
| + executeCalculateDrawTransformsAndVisibility(m_root, 1, 1, m_canUseLCDText); |
| + EXPECT_EQ(m_canUseLCDText, m_root->canUseLCDText()); |
| + EXPECT_EQ(m_canUseLCDText, m_child->canUseLCDText()); |
| + EXPECT_EQ(m_canUseLCDText, m_grandChild->canUseLCDText()); |
| + |
| + // Add opacity animation. |
| + m_child->setOpacity(0.9f); |
| + addOpacityTransitionToController(*(m_child->layerAnimationController()), 10, 0.9f, 0.1f, false); |
| + |
| + executeCalculateDrawTransformsAndVisibility(m_root, 1, 1, m_canUseLCDText); |
| + // Text AA should not be adjusted while animation is active. |
| + // Make sure LCD text AA setting remains unchanged. |
| + EXPECT_EQ(m_canUseLCDText, m_root->canUseLCDText()); |
| + EXPECT_EQ(m_canUseLCDText, m_child->canUseLCDText()); |
| + EXPECT_EQ(m_canUseLCDText, m_grandChild->canUseLCDText()); |
| +} |
| + |
| +INSTANTIATE_TEST_CASE_P(All, |
| + LCDTextTest, |
| + testing::Combine(testing::Bool(), |
| + testing::Values(LCDTextTest::LAYER_REGULAR, |
| + LCDTextTest::LAYER_PRESERVES_3D, |
| + LCDTextTest::LAYER_FORCES_RENDER_SURFACE))); |
| + |
| } // namespace |
| } // namespace cc |