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

Unified Diff: cc/damage_tracker_unittest.cc

Issue 11175009: Implement SkImageFilter support in the compositor. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add damage tracker test, fix braces, include order. Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/damage_tracker_unittest.cc
diff --git a/cc/damage_tracker_unittest.cc b/cc/damage_tracker_unittest.cc
index 17f7d2f54f382192f14665a2a2126e56df3be8dd..a0425d83964a05333f60adaab55f7736168577e3 100644
--- a/cc/damage_tracker_unittest.cc
+++ b/cc/damage_tracker_unittest.cc
@@ -9,6 +9,7 @@
#include "CCLayerImpl.h"
#include "CCLayerSorter.h"
#include "CCLayerTreeHostCommon.h"
+#include "SkBlurImageFilter.h"
#include "cc/math_util.h"
#include "cc/single_thread_proxy.h"
#include "cc/test/geometry_test_utils.h"
@@ -59,7 +60,7 @@ void emulateDrawingOneFrame(CCLayerImpl* root)
// Iterate back-to-front, so that damage correctly propagates from descendant surfaces to ancestors.
for (int i = renderSurfaceLayerList.size() - 1; i >= 0; --i) {
CCRenderSurface* 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,33 @@ TEST_F(CCDamageTrackerTest, verifyDamageForBlurredSurface)
EXPECT_FLOAT_RECT_EQ(expectedDamageRect, rootDamageRect);
}
+TEST_F(CCDamageTrackerTest, verifyDamageForImageFilter)
+{
+ scoped_ptr<CCLayerImpl> root = createAndSetUpTestTreeWithOneSurface();
+ CCLayerImpl* child = root->children()[0];
+ FloatRect rootDamageRect;
+
+ // 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();
+ EXPECT_FLOAT_RECT_EQ(FloatRect(100, 100, 30, 30), rootDamageRect);
+
+ // CASE 1: Setting the update rect should damage the whole surface (for now)
+ clearDamageForAllSurfaces(root.get());
+ root->setUpdateRect(FloatRect(297, 297, 2, 2));
danakj 2012/10/22 18:56:02 This is a copy/paste from background filters. Does
+ emulateDrawingOneFrame(root.get());
+
+ rootDamageRect = root->renderSurface()->damageTracker()->currentDamageRect();
+ EXPECT_FLOAT_RECT_EQ(FloatRect(100, 100, 199, 199), rootDamageRect);
+}
+
TEST_F(CCDamageTrackerTest, verifyDamageForBackgroundBlurredChild)
{
scoped_ptr<CCLayerImpl> root = createAndSetUpTestTreeWithTwoSurfaces();
@@ -1095,7 +1123,7 @@ TEST_F(CCDamageTrackerTest, verifyDamageForEmptyLayerList)
ASSERT_TRUE(root == root->renderTarget());
CCRenderSurface* 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());

Powered by Google App Engine
This is Rietveld 408576698