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

Side by Side Diff: cc/trees/damage_tracker_unittest.cc

Issue 21154002: Add support for converting cc::FilterOperations into an SkImageFilter (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix nit Created 7 years, 3 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 "cc/trees/damage_tracker.h" 5 #include "cc/trees/damage_tracker.h"
6 6
7 #include "cc/base/math_util.h" 7 #include "cc/base/math_util.h"
8 #include "cc/layers/layer_impl.h" 8 #include "cc/layers/layer_impl.h"
9 #include "cc/output/filter_operation.h" 9 #include "cc/output/filter_operation.h"
10 #include "cc/output/filter_operations.h" 10 #include "cc/output/filter_operations.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 // surfaces to ancestors. 56 // surfaces to ancestors.
57 for (int i = render_surface_layer_list.size() - 1; i >= 0; --i) { 57 for (int i = render_surface_layer_list.size() - 1; i >= 0; --i) {
58 RenderSurfaceImpl* target_surface = 58 RenderSurfaceImpl* target_surface =
59 render_surface_layer_list[i]->render_surface(); 59 render_surface_layer_list[i]->render_surface();
60 target_surface->damage_tracker()->UpdateDamageTrackingState( 60 target_surface->damage_tracker()->UpdateDamageTrackingState(
61 target_surface->layer_list(), 61 target_surface->layer_list(),
62 target_surface->OwningLayerId(), 62 target_surface->OwningLayerId(),
63 target_surface->SurfacePropertyChangedOnlyFromDescendant(), 63 target_surface->SurfacePropertyChangedOnlyFromDescendant(),
64 target_surface->content_rect(), 64 target_surface->content_rect(),
65 render_surface_layer_list[i]->mask_layer(), 65 render_surface_layer_list[i]->mask_layer(),
66 render_surface_layer_list[i]->filters(), 66 render_surface_layer_list[i]->filters());
67 render_surface_layer_list[i]->filter().get());
68 } 67 }
69 68
70 root->ResetAllChangeTrackingForSubtree(); 69 root->ResetAllChangeTrackingForSubtree();
71 } 70 }
72 71
73 class DamageTrackerTest : public testing::Test { 72 class DamageTrackerTest : public testing::Test {
74 public: 73 public:
75 DamageTrackerTest() : host_impl_(&proxy_) {} 74 DamageTrackerTest() : host_impl_(&proxy_) {}
76 75
77 scoped_ptr<LayerImpl> CreateTestTreeWithOneSurface() { 76 scoped_ptr<LayerImpl> CreateTestTreeWithOneSurface() {
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 scoped_ptr<LayerImpl> root = CreateAndSetUpTestTreeWithOneSurface(); 440 scoped_ptr<LayerImpl> root = CreateAndSetUpTestTreeWithOneSurface();
442 LayerImpl* child = root->children()[0]; 441 LayerImpl* child = root->children()[0];
443 gfx::RectF root_damage_rect, child_damage_rect; 442 gfx::RectF root_damage_rect, child_damage_rect;
444 443
445 // Allow us to set damage on child too. 444 // Allow us to set damage on child too.
446 child->SetDrawsContent(true); 445 child->SetDrawsContent(true);
447 446
448 skia::RefPtr<SkImageFilter> filter = 447 skia::RefPtr<SkImageFilter> filter =
449 skia::AdoptRef(new SkBlurImageFilter(SkIntToScalar(2), 448 skia::AdoptRef(new SkBlurImageFilter(SkIntToScalar(2),
450 SkIntToScalar(2))); 449 SkIntToScalar(2)));
450 FilterOperations filters;
451 filters.Append(FilterOperation::CreateReferenceFilter(filter));
451 452
452 // Setting the filter will damage the whole surface. 453 // Setting the filter will damage the whole surface.
453 ClearDamageForAllSurfaces(root.get()); 454 ClearDamageForAllSurfaces(root.get());
454 child->SetFilter(filter); 455 child->SetFilters(filters);
455 EmulateDrawingOneFrame(root.get()); 456 EmulateDrawingOneFrame(root.get());
456 root_damage_rect = 457 root_damage_rect =
457 root->render_surface()->damage_tracker()->current_damage_rect(); 458 root->render_surface()->damage_tracker()->current_damage_rect();
458 child_damage_rect = 459 child_damage_rect =
459 child->render_surface()->damage_tracker()->current_damage_rect(); 460 child->render_surface()->damage_tracker()->current_damage_rect();
460 EXPECT_FLOAT_RECT_EQ(gfx::RectF(100.f, 100.f, 30.f, 30.f), root_damage_rect); 461 EXPECT_FLOAT_RECT_EQ(gfx::RectF(100.f, 100.f, 30.f, 30.f), root_damage_rect);
461 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0.f, 0.f, 30.f, 30.f), child_damage_rect); 462 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0.f, 0.f, 30.f, 30.f), child_damage_rect);
462 463
463 // CASE 1: Setting the update rect should damage the whole surface (for now) 464 // CASE 1: Setting the update rect should damage the whole surface (for now)
464 ClearDamageForAllSurfaces(root.get()); 465 ClearDamageForAllSurfaces(root.get());
(...skipping 827 matching lines...) Expand 10 before | Expand all | Expand 10 after
1292 ASSERT_TRUE(root == root->render_target()); 1293 ASSERT_TRUE(root == root->render_target());
1293 RenderSurfaceImpl* target_surface = root->render_surface(); 1294 RenderSurfaceImpl* target_surface = root->render_surface();
1294 1295
1295 LayerImplList empty_list; 1296 LayerImplList empty_list;
1296 target_surface->damage_tracker()->UpdateDamageTrackingState( 1297 target_surface->damage_tracker()->UpdateDamageTrackingState(
1297 empty_list, 1298 empty_list,
1298 target_surface->OwningLayerId(), 1299 target_surface->OwningLayerId(),
1299 false, 1300 false,
1300 gfx::Rect(), 1301 gfx::Rect(),
1301 NULL, 1302 NULL,
1302 FilterOperations(), 1303 FilterOperations());
1303 NULL);
1304 1304
1305 gfx::RectF damage_rect = 1305 gfx::RectF damage_rect =
1306 target_surface->damage_tracker()->current_damage_rect(); 1306 target_surface->damage_tracker()->current_damage_rect();
1307 EXPECT_TRUE(damage_rect.IsEmpty()); 1307 EXPECT_TRUE(damage_rect.IsEmpty());
1308 } 1308 }
1309 1309
1310 TEST_F(DamageTrackerTest, VerifyDamageAccumulatesUntilReset) { 1310 TEST_F(DamageTrackerTest, VerifyDamageAccumulatesUntilReset) {
1311 // If damage is not cleared, it should accumulate. 1311 // If damage is not cleared, it should accumulate.
1312 1312
1313 scoped_ptr<LayerImpl> root = CreateAndSetUpTestTreeWithOneSurface(); 1313 scoped_ptr<LayerImpl> root = CreateAndSetUpTestTreeWithOneSurface();
(...skipping 26 matching lines...) Expand all
1340 // Damage should remain empty even after one frame, since there's yet no new 1340 // Damage should remain empty even after one frame, since there's yet no new
1341 // damage. 1341 // damage.
1342 EmulateDrawingOneFrame(root.get()); 1342 EmulateDrawingOneFrame(root.get());
1343 root_damage_rect = 1343 root_damage_rect =
1344 root->render_surface()->damage_tracker()->current_damage_rect(); 1344 root->render_surface()->damage_tracker()->current_damage_rect();
1345 EXPECT_TRUE(root_damage_rect.IsEmpty()); 1345 EXPECT_TRUE(root_damage_rect.IsEmpty());
1346 } 1346 }
1347 1347
1348 } // namespace 1348 } // namespace
1349 } // namespace cc 1349 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698