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; |