| Index: cc/damage_tracker_unittest.cc
|
| diff --git a/cc/damage_tracker_unittest.cc b/cc/damage_tracker_unittest.cc
|
| index bcad034497c778d120c4d9f744649dac2dac93f5..954607a0e37285aa1a4a051f246a4ffe4fda24c6 100644
|
| --- a/cc/damage_tracker_unittest.cc
|
| +++ b/cc/damage_tracker_unittest.cc
|
| @@ -13,6 +13,7 @@
|
| #include "cc/single_thread_proxy.h"
|
| #include "cc/test/geometry_test_utils.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| +#include "third_party/skia/include/effects/SkBlurImageFilter.h"
|
| #include <public/WebFilterOperation.h>
|
| #include <public/WebFilterOperations.h>
|
|
|
| @@ -59,7 +60,7 @@ void emulateDrawingOneFrame(LayerImpl* root)
|
| // Iterate back-to-front, so that damage correctly propagates from descendant surfaces to ancestors.
|
| for (int i = renderSurfaceLayerList.size() - 1; i >= 0; --i) {
|
| RenderSurfaceImpl* targetSurface = renderSurfaceLayerList[i]->renderSurface();
|
| - targetSurface->damageTracker()->updateDamageTrackingState(targetSurface->layerList(), targetSurface->owningLayerId(), targetSurface->surfacePropertyChangedOnlyFromDescendant(), targetSurface->contentRect(), renderSurfaceLayerList[i]->maskLayer(), renderSurfaceLayerList[i]->filters());
|
| + targetSurface->damageTracker()->updateDamageTrackingState(targetSurface->layerList(), targetSurface->owningLayerId(), targetSurface->surfacePropertyChangedOnlyFromDescendant(), targetSurface->contentRect(), renderSurfaceLayerList[i]->maskLayer(), renderSurfaceLayerList[i]->filters(), renderSurfaceLayerList[i]->filter());
|
| }
|
|
|
| root->resetAllChangeTrackingForSubtree();
|
| @@ -392,6 +393,37 @@ TEST_F(DamageTrackerTest, verifyDamageForBlurredSurface)
|
| EXPECT_FLOAT_RECT_EQ(expectedDamageRect, rootDamageRect);
|
| }
|
|
|
| +TEST_F(DamageTrackerTest, verifyDamageForImageFilter)
|
| +{
|
| + scoped_ptr<LayerImpl> root = createAndSetUpTestTreeWithOneSurface();
|
| + LayerImpl* child = root->children()[0];
|
| + FloatRect rootDamageRect, childDamageRect;
|
| +
|
| + // Allow us to set damage on child too.
|
| + child->setDrawsContent(true);
|
| +
|
| + SkAutoTUnref<SkImageFilter> filter(new SkBlurImageFilter(SkIntToScalar(2),
|
| + SkIntToScalar(2)));
|
| + // Setting the filter will damage the whole surface.
|
| + clearDamageForAllSurfaces(root.get());
|
| + child->setFilter(filter);
|
| + emulateDrawingOneFrame(root.get());
|
| + rootDamageRect = root->renderSurface()->damageTracker()->currentDamageRect();
|
| + childDamageRect = child->renderSurface()->damageTracker()->currentDamageRect();
|
| + EXPECT_FLOAT_RECT_EQ(FloatRect(100, 100, 30, 30), rootDamageRect);
|
| + EXPECT_FLOAT_RECT_EQ(FloatRect(0, 0, 30, 30), childDamageRect);
|
| +
|
| + // CASE 1: Setting the update rect should damage the whole surface (for now)
|
| + clearDamageForAllSurfaces(root.get());
|
| + child->setUpdateRect(FloatRect(0, 0, 1, 1));
|
| + emulateDrawingOneFrame(root.get());
|
| +
|
| + rootDamageRect = root->renderSurface()->damageTracker()->currentDamageRect();
|
| + childDamageRect = child->renderSurface()->damageTracker()->currentDamageRect();
|
| + EXPECT_FLOAT_RECT_EQ(FloatRect(100, 100, 30, 30), rootDamageRect);
|
| + EXPECT_FLOAT_RECT_EQ(FloatRect(0, 0, 30, 30), childDamageRect);
|
| +}
|
| +
|
| TEST_F(DamageTrackerTest, verifyDamageForBackgroundBlurredChild)
|
| {
|
| scoped_ptr<LayerImpl> root = createAndSetUpTestTreeWithTwoSurfaces();
|
| @@ -1095,7 +1127,7 @@ TEST_F(DamageTrackerTest, verifyDamageForEmptyLayerList)
|
| ASSERT_TRUE(root == root->renderTarget());
|
| RenderSurfaceImpl* targetSurface = root->renderSurface();
|
| targetSurface->clearLayerLists();
|
| - targetSurface->damageTracker()->updateDamageTrackingState(targetSurface->layerList(), targetSurface->owningLayerId(), false, IntRect(), 0, WebFilterOperations());
|
| + targetSurface->damageTracker()->updateDamageTrackingState(targetSurface->layerList(), targetSurface->owningLayerId(), false, IntRect(), 0, WebFilterOperations(), 0);
|
|
|
| FloatRect damageRect = targetSurface->damageTracker()->currentDamageRect();
|
| EXPECT_TRUE(damageRect.isEmpty());
|
|
|