| Index: cc/trees/occlusion_tracker_unittest.cc
|
| diff --git a/cc/trees/occlusion_tracker_unittest.cc b/cc/trees/occlusion_tracker_unittest.cc
|
| index aaf655f2a7f409ff277bd60dfe83f7fe03243572..8dbc664932ea042b76764dd9d42199cecbaeedd5 100644
|
| --- a/cc/trees/occlusion_tracker_unittest.cc
|
| +++ b/cc/trees/occlusion_tracker_unittest.cc
|
| @@ -131,6 +131,9 @@ struct OcclusionTrackerTestMainThreadTypes {
|
| *layer = NULL;
|
| return ref;
|
| }
|
| + static void SetForceRenderSurface(LayerType* layer, bool force) {
|
| + layer->SetForceRenderSurface(force);
|
| + }
|
|
|
| static void DestroyLayer(LayerPtrType* layer) { *layer = NULL; }
|
|
|
| @@ -163,6 +166,13 @@ struct OcclusionTrackerTestImplThreadTypes {
|
| return layer->PassAs<LayerType>();
|
| }
|
|
|
| + static void SetForceRenderSurface(LayerType* layer, bool force) {
|
| + if (force) {
|
| + layer->CreateRenderSurface();
|
| + } else {
|
| + layer->ClearRenderSurface();
|
| + }
|
| + }
|
| static void DestroyLayer(LayerPtrType* layer) { layer->reset(); }
|
|
|
| static void RecursiveUpdateNumChildren(LayerType* layer) {
|
| @@ -194,6 +204,7 @@ template <typename Types> class OcclusionTrackerTest : public testing::Test {
|
| DCHECK(!root_.get());
|
| root_ = Types::PassLayerPtr(&layer);
|
|
|
| + CreateRenderSurfaceOnImplThread(layer_ptr);
|
| SetRootLayerOnMainThread(layer_ptr);
|
|
|
| return layer_ptr;
|
| @@ -216,7 +227,7 @@ template <typename Types> class OcclusionTrackerTest : public testing::Test {
|
| const gfx::Size& bounds) {
|
| typename Types::LayerType* layer =
|
| CreateLayer(parent, transform, position, bounds);
|
| - layer->SetForceRenderSurface(true);
|
| + Types::SetForceRenderSurface(layer, true);
|
| return layer;
|
| }
|
|
|
| @@ -277,7 +288,7 @@ template <typename Types> class OcclusionTrackerTest : public testing::Test {
|
| bool opaque) {
|
| typename Types::ContentLayerType* layer =
|
| CreateDrawingLayer(parent, transform, position, bounds, opaque);
|
| - layer->SetForceRenderSurface(true);
|
| + Types::SetForceRenderSurface(layer, true);
|
| return layer;
|
| }
|
|
|
| @@ -305,12 +316,12 @@ template <typename Types> class OcclusionTrackerTest : public testing::Test {
|
| CopyOutputRequest::CreateBitmapRequest(base::Bind(
|
| &OcclusionTrackerTest<Types>::CopyOutputCallback,
|
| base::Unretained(this))));
|
| + layer->CreateRenderSurface();
|
| layer->PassCopyRequests(&requests);
|
| }
|
|
|
| void CalcDrawEtc(TestContentLayerImpl* root) {
|
| DCHECK(root == root_.get());
|
| - DCHECK(!root->render_surface());
|
|
|
| Types::RecursiveUpdateNumChildren(root);
|
| LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
|
| @@ -389,6 +400,11 @@ template <typename Types> class OcclusionTrackerTest : public testing::Test {
|
|
|
| const gfx::Transform identity_matrix;
|
|
|
| + void CreateRenderSurfaceOnImplThread(Layer* root) {}
|
| + void CreateRenderSurfaceOnImplThread(LayerImpl* root) {
|
| + root->CreateRenderSurface();
|
| + }
|
| +
|
| private:
|
| void SetRootLayerOnMainThread(Layer* root) {
|
| host_->SetRootLayer(scoped_refptr<Layer>(root));
|
| @@ -738,7 +754,7 @@ class OcclusionTrackerTestScaledRenderSurface
|
| layer1_matrix.Scale(2.0, 2.0);
|
| typename Types::ContentLayerType* layer1 = this->CreateDrawingLayer(
|
| parent, layer1_matrix, gfx::PointF(), gfx::Size(100, 100), true);
|
| - layer1->SetForceRenderSurface(true);
|
| + Types::SetForceRenderSurface(layer1, true);
|
|
|
| gfx::Transform layer2_matrix;
|
| layer2_matrix.Translate(25.0, 25.0);
|
| @@ -855,6 +871,7 @@ class OcclusionTrackerTestSurfaceRotatedOffAxis
|
| typename Types::LayerType* child = this->CreateLayer(
|
| parent, child_transform, gfx::PointF(30.f, 30.f), gfx::Size(500, 500));
|
| child->SetMasksToBounds(true);
|
| + this->CreateRenderSurfaceOnImplThread(child);
|
| typename Types::ContentLayerType* layer = this->CreateDrawingLayer(
|
| child, layer_transform, gfx::PointF(), gfx::Size(500, 500), true);
|
| this->CalcDrawEtc(root);
|
| @@ -1172,6 +1189,9 @@ class OcclusionTrackerTestFilters : public OcclusionTrackerTest<Types> {
|
| gfx::PointF(30.f, 30.f),
|
| gfx::Size(500, 500),
|
| true);
|
| + this->CreateRenderSurfaceOnImplThread(blur_layer);
|
| + this->CreateRenderSurfaceOnImplThread(opacity_layer);
|
| + this->CreateRenderSurfaceOnImplThread(opaque_layer);
|
|
|
| FilterOperations filters;
|
| filters.Append(FilterOperation::CreateBlurFilter(10.f));
|
| @@ -2234,7 +2254,7 @@ class OcclusionTrackerTestDontOccludePixelsNeededForBackgroundFilter
|
| gfx::Size(100, 100),
|
| false);
|
| filtered_surface->SetBackgroundFilters(filters);
|
| -
|
| + Types::SetForceRenderSurface(filtered_surface, true);
|
| gfx::Rect occlusion_rect;
|
| switch (i) {
|
| case LEFT:
|
| @@ -2349,6 +2369,8 @@ class OcclusionTrackerTestTwoBackgroundFiltersReduceOcclusionTwice
|
| filters.Append(FilterOperation::CreateBlurFilter(1.f));
|
| filtered_surface1->SetBackgroundFilters(filters);
|
| filtered_surface2->SetBackgroundFilters(filters);
|
| + this->CreateRenderSurfaceOnImplThread(filtered_surface1);
|
| + this->CreateRenderSurfaceOnImplThread(filtered_surface2);
|
|
|
| // Save the distance of influence for the blur effect.
|
| int outset_top, outset_right, outset_bottom, outset_left;
|
| @@ -2434,7 +2456,7 @@ class OcclusionTrackerTestDontReduceOcclusionBelowBackgroundFilter
|
| FilterOperations filters;
|
| filters.Append(FilterOperation::CreateBlurFilter(3.f));
|
| filtered_surface->SetBackgroundFilters(filters);
|
| -
|
| + this->CreateRenderSurfaceOnImplThread(filtered_surface);
|
| this->CalcDrawEtc(parent);
|
|
|
| TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion(
|
| @@ -2508,6 +2530,7 @@ class OcclusionTrackerTestDontReduceOcclusionIfBackgroundFilterIsOccluded
|
| FilterOperations filters;
|
| filters.Append(FilterOperation::CreateBlurFilter(3.f));
|
| filtered_surface->SetBackgroundFilters(filters);
|
| + this->CreateRenderSurfaceOnImplThread(filtered_surface);
|
|
|
| this->CalcDrawEtc(parent);
|
|
|
| @@ -2604,6 +2627,7 @@ class OcclusionTrackerTestReduceOcclusionWhenBackgroundFilterIsPartiallyOccluded
|
| FilterOperations filters;
|
| filters.Append(FilterOperation::CreateBlurFilter(3.f));
|
| filtered_surface->SetBackgroundFilters(filters);
|
| + this->CreateRenderSurfaceOnImplThread(filtered_surface);
|
|
|
| // Save the distance of influence for the blur effect.
|
| int outset_top, outset_right, outset_bottom, outset_left;
|
|
|