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

Side by Side 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: Updated to ToT 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 6
7 #include "CCDamageTracker.h" 7 #include "CCDamageTracker.h"
8 8
9 #include "CCLayerImpl.h" 9 #include "CCLayerImpl.h"
10 #include "CCLayerSorter.h" 10 #include "CCLayerSorter.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 // 1. computing the render passes and layerlists 52 // 1. computing the render passes and layerlists
53 // 2. updating all damage trackers in the correct order 53 // 2. updating all damage trackers in the correct order
54 // 3. resetting all updateRects and propertyChanged flags for all layers a nd surfaces. 54 // 3. resetting all updateRects and propertyChanged flags for all layers a nd surfaces.
55 55
56 std::vector<CCLayerImpl*> renderSurfaceLayerList; 56 std::vector<CCLayerImpl*> renderSurfaceLayerList;
57 executeCalculateDrawTransformsAndVisibility(root, renderSurfaceLayerList); 57 executeCalculateDrawTransformsAndVisibility(root, renderSurfaceLayerList);
58 58
59 // Iterate back-to-front, so that damage correctly propagates from descendan t surfaces to ancestors. 59 // Iterate back-to-front, so that damage correctly propagates from descendan t surfaces to ancestors.
60 for (int i = renderSurfaceLayerList.size() - 1; i >= 0; --i) { 60 for (int i = renderSurfaceLayerList.size() - 1; i >= 0; --i) {
61 CCRenderSurface* targetSurface = renderSurfaceLayerList[i]->renderSurfac e(); 61 CCRenderSurface* targetSurface = renderSurfaceLayerList[i]->renderSurfac e();
62 targetSurface->damageTracker()->updateDamageTrackingState(targetSurface- >layerList(), targetSurface->owningLayerId(), targetSurface->surfacePropertyChan gedOnlyFromDescendant(), targetSurface->contentRect(), renderSurfaceLayerList[i] ->maskLayer(), renderSurfaceLayerList[i]->filters()); 62 targetSurface->damageTracker()->updateDamageTrackingState(targetSurface- >layerList(), targetSurface->owningLayerId(), targetSurface->surfacePropertyChan gedOnlyFromDescendant(), targetSurface->contentRect(), renderSurfaceLayerList[i] ->maskLayer(), renderSurfaceLayerList[i]->filters(), renderSurfaceLayerList[i]-> filter());
63 } 63 }
64 64
65 root->resetAllChangeTrackingForSubtree(); 65 root->resetAllChangeTrackingForSubtree();
66 } 66 }
67 67
68 scoped_ptr<CCLayerImpl> createTestTreeWithOneSurface() 68 scoped_ptr<CCLayerImpl> createTestTreeWithOneSurface()
69 { 69 {
70 scoped_ptr<CCLayerImpl> root = CCLayerImpl::create(1); 70 scoped_ptr<CCLayerImpl> root = CCLayerImpl::create(1);
71 scoped_ptr<CCLayerImpl> child = CCLayerImpl::create(2); 71 scoped_ptr<CCLayerImpl> child = CCLayerImpl::create(2);
72 72
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 emulateDrawingOneFrame(root.get()); 385 emulateDrawingOneFrame(root.get());
386 386
387 // Damage position on the surface should be: position of updateRect (10, 11) relative to the child (100, 100), but expanded by the blur outsets. 387 // Damage position on the surface should be: position of updateRect (10, 11) relative to the child (100, 100), but expanded by the blur outsets.
388 FloatRect rootDamageRect = root->renderSurface()->damageTracker()->currentDa mageRect(); 388 FloatRect rootDamageRect = root->renderSurface()->damageTracker()->currentDa mageRect();
389 FloatRect expectedDamageRect = FloatRect(110, 111, 12, 13); 389 FloatRect expectedDamageRect = FloatRect(110, 111, 12, 13);
390 expectedDamageRect.move(-outsetLeft, -outsetTop); 390 expectedDamageRect.move(-outsetLeft, -outsetTop);
391 expectedDamageRect.expand(outsetLeft + outsetRight, outsetTop + outsetBottom ); 391 expectedDamageRect.expand(outsetLeft + outsetRight, outsetTop + outsetBottom );
392 EXPECT_FLOAT_RECT_EQ(expectedDamageRect, rootDamageRect); 392 EXPECT_FLOAT_RECT_EQ(expectedDamageRect, rootDamageRect);
393 } 393 }
394 394
395 TEST_F(CCDamageTrackerTest, verifyDamageForBackgroundBlurredChild) 395 TEST_F(CCDamageTrackerTest, verifyDamageForBackgroundBlurredChild)
danakj 2012/10/22 18:00:43 Can you add a simple test that verifies if a filte
Stephen White 2012/10/22 18:51:00 Done.
396 { 396 {
397 scoped_ptr<CCLayerImpl> root = createAndSetUpTestTreeWithTwoSurfaces(); 397 scoped_ptr<CCLayerImpl> root = createAndSetUpTestTreeWithTwoSurfaces();
398 CCLayerImpl* child1 = root->children()[0]; 398 CCLayerImpl* child1 = root->children()[0];
399 CCLayerImpl* child2 = root->children()[1]; 399 CCLayerImpl* child2 = root->children()[1];
400 400
401 // Allow us to set damage on child1 too. 401 // Allow us to set damage on child1 too.
402 child1->setDrawsContent(true); 402 child1->setDrawsContent(true);
403 403
404 WebFilterOperations filters; 404 WebFilterOperations filters;
405 filters.append(WebFilterOperation::createBlurFilter(2)); 405 filters.append(WebFilterOperation::createBlurFilter(2));
(...skipping 682 matching lines...) Expand 10 before | Expand all | Expand 10 after
1088 { 1088 {
1089 // Though it should never happen, its a good idea to verify that the damage tracker 1089 // Though it should never happen, its a good idea to verify that the damage tracker
1090 // does not crash when it receives an empty layerList. 1090 // does not crash when it receives an empty layerList.
1091 1091
1092 scoped_ptr<CCLayerImpl> root = CCLayerImpl::create(1); 1092 scoped_ptr<CCLayerImpl> root = CCLayerImpl::create(1);
1093 root->createRenderSurface(); 1093 root->createRenderSurface();
1094 1094
1095 ASSERT_TRUE(root == root->renderTarget()); 1095 ASSERT_TRUE(root == root->renderTarget());
1096 CCRenderSurface* targetSurface = root->renderSurface(); 1096 CCRenderSurface* targetSurface = root->renderSurface();
1097 targetSurface->clearLayerLists(); 1097 targetSurface->clearLayerLists();
1098 targetSurface->damageTracker()->updateDamageTrackingState(targetSurface->lay erList(), targetSurface->owningLayerId(), false, IntRect(), 0, WebFilterOperatio ns()); 1098 targetSurface->damageTracker()->updateDamageTrackingState(targetSurface->lay erList(), targetSurface->owningLayerId(), false, IntRect(), 0, WebFilterOperatio ns(), 0);
1099 1099
1100 FloatRect damageRect = targetSurface->damageTracker()->currentDamageRect(); 1100 FloatRect damageRect = targetSurface->damageTracker()->currentDamageRect();
1101 EXPECT_TRUE(damageRect.isEmpty()); 1101 EXPECT_TRUE(damageRect.isEmpty());
1102 } 1102 }
1103 1103
1104 TEST_F(CCDamageTrackerTest, verifyDamageAccumulatesUntilReset) 1104 TEST_F(CCDamageTrackerTest, verifyDamageAccumulatesUntilReset)
1105 { 1105 {
1106 // If damage is not cleared, it should accumulate. 1106 // If damage is not cleared, it should accumulate.
1107 1107
1108 scoped_ptr<CCLayerImpl> root = createAndSetUpTestTreeWithOneSurface(); 1108 scoped_ptr<CCLayerImpl> root = createAndSetUpTestTreeWithOneSurface();
(...skipping 18 matching lines...) Expand all
1127 rootDamageRect = root->renderSurface()->damageTracker()->currentDamageRect() ; 1127 rootDamageRect = root->renderSurface()->damageTracker()->currentDamageRect() ;
1128 EXPECT_TRUE(rootDamageRect.isEmpty()); 1128 EXPECT_TRUE(rootDamageRect.isEmpty());
1129 1129
1130 // Damage should remain empty even after one frame, since there's yet no new damage 1130 // Damage should remain empty even after one frame, since there's yet no new damage
1131 emulateDrawingOneFrame(root.get()); 1131 emulateDrawingOneFrame(root.get());
1132 rootDamageRect = root->renderSurface()->damageTracker()->currentDamageRect() ; 1132 rootDamageRect = root->renderSurface()->damageTracker()->currentDamageRect() ;
1133 EXPECT_TRUE(rootDamageRect.isEmpty()); 1133 EXPECT_TRUE(rootDamageRect.isEmpty());
1134 } 1134 }
1135 1135
1136 } // namespace 1136 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698