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

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

Issue 16968002: Move implementation of WebFilterOperations into cc (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 6 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"
10 #include "cc/output/filter_operations.h"
9 #include "cc/test/fake_impl_proxy.h" 11 #include "cc/test/fake_impl_proxy.h"
10 #include "cc/test/fake_layer_tree_host_impl.h" 12 #include "cc/test/fake_layer_tree_host_impl.h"
11 #include "cc/test/geometry_test_utils.h" 13 #include "cc/test/geometry_test_utils.h"
12 #include "cc/trees/layer_tree_host_common.h" 14 #include "cc/trees/layer_tree_host_common.h"
13 #include "cc/trees/single_thread_proxy.h" 15 #include "cc/trees/single_thread_proxy.h"
14 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
15 #include "third_party/WebKit/public/platform/WebFilterOperation.h"
16 #include "third_party/WebKit/public/platform/WebFilterOperations.h"
17 #include "third_party/skia/include/effects/SkBlurImageFilter.h" 17 #include "third_party/skia/include/effects/SkBlurImageFilter.h"
18 #include "ui/gfx/quad_f.h" 18 #include "ui/gfx/quad_f.h"
19 19
20 using WebKit::WebFilterOperation;
21 using WebKit::WebFilterOperations;
22
23 namespace cc { 20 namespace cc {
24 namespace { 21 namespace {
25 22
26 void ExecuteCalculateDrawProperties( 23 void ExecuteCalculateDrawProperties(
27 LayerImpl* root, 24 LayerImpl* root,
28 LayerImplList& render_surface_layer_list) { 25 LayerImplList& render_surface_layer_list) {
29 int dummy_max_texture_size = 512; 26 int dummy_max_texture_size = 512;
30 27
31 // Sanity check: The test itself should create the root layer's render 28 // Sanity check: The test itself should create the root layer's render
32 // surface, so that the surface (and its damage tracker) can 29 // surface, so that the surface (and its damage tracker) can
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 gfx::RectF damage_we_care_about = 410 gfx::RectF damage_we_care_about =
414 gfx::RectF(gfx::PointF(), gfx::SizeF(500.f, 500.f)); 411 gfx::RectF(gfx::PointF(), gfx::SizeF(500.f, 500.f));
415 EXPECT_TRUE(root_damage_rect.Contains(damage_we_care_about)); 412 EXPECT_TRUE(root_damage_rect.Contains(damage_we_care_about));
416 } 413 }
417 414
418 TEST_F(DamageTrackerTest, VerifyDamageForBlurredSurface) { 415 TEST_F(DamageTrackerTest, VerifyDamageForBlurredSurface) {
419 scoped_ptr<LayerImpl> root = CreateAndSetUpTestTreeWithTwoSurfaces(); 416 scoped_ptr<LayerImpl> root = CreateAndSetUpTestTreeWithTwoSurfaces();
420 LayerImpl* surface = root->children()[0]; 417 LayerImpl* surface = root->children()[0];
421 LayerImpl* child = surface->children()[0]; 418 LayerImpl* child = surface->children()[0];
422 419
423 WebFilterOperations filters; 420 FilterOperations filters;
424 filters.append(WebFilterOperation::createBlurFilter(5)); 421 filters.Append(FilterOperation::CreateBlurFilter(5));
425 int outset_top, outset_right, outset_bottom, outset_left; 422 int outset_top, outset_right, outset_bottom, outset_left;
426 filters.getOutsets(outset_top, outset_right, outset_bottom, outset_left); 423 filters.GetOutsets(&outset_top, &outset_right, &outset_bottom, &outset_left);
427 424
428 // Setting the filter will damage the whole surface. 425 // Setting the filter will damage the whole surface.
429 ClearDamageForAllSurfaces(root.get()); 426 ClearDamageForAllSurfaces(root.get());
430 surface->SetFilters(filters); 427 surface->SetFilters(filters);
431 EmulateDrawingOneFrame(root.get()); 428 EmulateDrawingOneFrame(root.get());
432 429
433 // Setting the update rect should cause the corresponding damage to the 430 // Setting the update rect should cause the corresponding damage to the
434 // surface, blurred based on the size of the blur filter. 431 // surface, blurred based on the size of the blur filter.
435 ClearDamageForAllSurfaces(root.get()); 432 ClearDamageForAllSurfaces(root.get());
436 child->set_update_rect(gfx::RectF(1.f, 2.f, 3.f, 4.f)); 433 child->set_update_rect(gfx::RectF(1.f, 2.f, 3.f, 4.f));
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
487 } 484 }
488 485
489 TEST_F(DamageTrackerTest, VerifyDamageForBackgroundBlurredChild) { 486 TEST_F(DamageTrackerTest, VerifyDamageForBackgroundBlurredChild) {
490 scoped_ptr<LayerImpl> root = CreateAndSetUpTestTreeWithTwoSurfaces(); 487 scoped_ptr<LayerImpl> root = CreateAndSetUpTestTreeWithTwoSurfaces();
491 LayerImpl* child1 = root->children()[0]; 488 LayerImpl* child1 = root->children()[0];
492 LayerImpl* child2 = root->children()[1]; 489 LayerImpl* child2 = root->children()[1];
493 490
494 // Allow us to set damage on child1 too. 491 // Allow us to set damage on child1 too.
495 child1->SetDrawsContent(true); 492 child1->SetDrawsContent(true);
496 493
497 WebFilterOperations filters; 494 FilterOperations filters;
498 filters.append(WebFilterOperation::createBlurFilter(2)); 495 filters.Append(FilterOperation::CreateBlurFilter(2));
499 int outset_top, outset_right, outset_bottom, outset_left; 496 int outset_top, outset_right, outset_bottom, outset_left;
500 filters.getOutsets(outset_top, outset_right, outset_bottom, outset_left); 497 filters.GetOutsets(&outset_top, &outset_right, &outset_bottom, &outset_left);
501 498
502 // Setting the filter will damage the whole surface. 499 // Setting the filter will damage the whole surface.
503 ClearDamageForAllSurfaces(root.get()); 500 ClearDamageForAllSurfaces(root.get());
504 child1->SetBackgroundFilters(filters); 501 child1->SetBackgroundFilters(filters);
505 EmulateDrawingOneFrame(root.get()); 502 EmulateDrawingOneFrame(root.get());
506 503
507 // CASE 1: Setting the update rect should cause the corresponding damage to 504 // CASE 1: Setting the update rect should cause the corresponding damage to
508 // the surface, blurred based on the size of the child's background 505 // the surface, blurred based on the size of the child's background
509 // blur filter. 506 // blur filter.
510 ClearDamageForAllSurfaces(root.get()); 507 ClearDamageForAllSurfaces(root.get());
(...skipping 794 matching lines...) Expand 10 before | Expand all | Expand 10 after
1305 1302
1306 ASSERT_TRUE(root == root->render_target()); 1303 ASSERT_TRUE(root == root->render_target());
1307 RenderSurfaceImpl* target_surface = root->render_surface(); 1304 RenderSurfaceImpl* target_surface = root->render_surface();
1308 target_surface->ClearLayerLists(); 1305 target_surface->ClearLayerLists();
1309 target_surface->damage_tracker()->UpdateDamageTrackingState( 1306 target_surface->damage_tracker()->UpdateDamageTrackingState(
1310 target_surface->layer_list(), 1307 target_surface->layer_list(),
1311 target_surface->OwningLayerId(), 1308 target_surface->OwningLayerId(),
1312 false, 1309 false,
1313 gfx::Rect(), 1310 gfx::Rect(),
1314 NULL, 1311 NULL,
1315 WebFilterOperations(), 1312 FilterOperations(),
1316 NULL); 1313 NULL);
1317 1314
1318 gfx::RectF damage_rect = 1315 gfx::RectF damage_rect =
1319 target_surface->damage_tracker()->current_damage_rect(); 1316 target_surface->damage_tracker()->current_damage_rect();
1320 EXPECT_TRUE(damage_rect.IsEmpty()); 1317 EXPECT_TRUE(damage_rect.IsEmpty());
1321 } 1318 }
1322 1319
1323 TEST_F(DamageTrackerTest, VerifyDamageAccumulatesUntilReset) { 1320 TEST_F(DamageTrackerTest, VerifyDamageAccumulatesUntilReset) {
1324 // If damage is not cleared, it should accumulate. 1321 // If damage is not cleared, it should accumulate.
1325 1322
(...skipping 27 matching lines...) Expand all
1353 // Damage should remain empty even after one frame, since there's yet no new 1350 // Damage should remain empty even after one frame, since there's yet no new
1354 // damage. 1351 // damage.
1355 EmulateDrawingOneFrame(root.get()); 1352 EmulateDrawingOneFrame(root.get());
1356 root_damage_rect = 1353 root_damage_rect =
1357 root->render_surface()->damage_tracker()->current_damage_rect(); 1354 root->render_surface()->damage_tracker()->current_damage_rect();
1358 EXPECT_TRUE(root_damage_rect.IsEmpty()); 1355 EXPECT_TRUE(root_damage_rect.IsEmpty());
1359 } 1356 }
1360 1357
1361 } // namespace 1358 } // namespace
1362 } // namespace cc 1359 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698