Index: cc/trees/layer_tree_host_unittest.cc |
diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc |
index eaf3c4756f5047cc5fe584dd6eeeec0577950b9c..4271380af202e7005b430ba39a15934e063ce2b3 100644 |
--- a/cc/trees/layer_tree_host_unittest.cc |
+++ b/cc/trees/layer_tree_host_unittest.cc |
@@ -6485,8 +6485,19 @@ class LayerTreeTestMaskLayerForSurfaceWithClippedLayer : public LayerTreeTest { |
FakePictureLayer::Create(&client_); |
content_layer->AddChild(content_child_layer); |
+ std::unique_ptr<RecordingSource> recording_source = |
+ FakeRecordingSource::CreateFilledRecordingSource(gfx::Size(100, 100)); |
+ SkPaint paint1, paint2; |
+ static_cast<FakeRecordingSource*>(recording_source.get()) |
+ ->add_draw_rect_with_flags(gfx::Rect(0, 0, 100, 90), paint1); |
+ static_cast<FakeRecordingSource*>(recording_source.get()) |
+ ->add_draw_rect_with_flags(gfx::Rect(0, 90, 100, 10), paint2); |
+ client_.set_fill_with_nonsolid_color(true); |
+ static_cast<FakeRecordingSource*>(recording_source.get())->Rerecord(); |
+ |
scoped_refptr<FakePictureLayer> mask_layer = |
- FakePictureLayer::Create(&client_); |
+ FakePictureLayer::CreateWithRecordingSource( |
+ &client_, std::move(recording_source)); |
content_layer->SetMaskLayer(mask_layer.get()); |
gfx::Size root_size(100, 100); |
@@ -6538,9 +6549,16 @@ class LayerTreeTestMaskLayerForSurfaceWithClippedLayer : public LayerTreeTest { |
// coords in the mask are scaled by 10/50 and 20/50. |
// The surface is clipped to (20,10) so the mask texture coords are offset |
// by 20/50 and 10/50 |
- EXPECT_EQ(gfx::ScaleRect(gfx::RectF(20.f, 10.f, 10.f, 20.f), 1.f / 50.f) |
- .ToString(), |
- render_pass_quad->mask_uv_rect.ToString()); |
+ if (host_impl->settings().enable_mask_tiling) { |
+ EXPECT_EQ( |
+ gfx::RectF(20.f / 128.f, 10.f / 128.f, 10.f / 128.f, 20.f / 128.f) |
+ .ToString(), |
+ render_pass_quad->mask_uv_rect.ToString()); |
+ } else { |
+ EXPECT_EQ(gfx::ScaleRect(gfx::RectF(20.f, 10.f, 10.f, 20.f), 1.f / 50.f) |
+ .ToString(), |
+ render_pass_quad->mask_uv_rect.ToString()); |
+ } |
EndTest(); |
return draw_result; |
} |
@@ -6576,8 +6594,19 @@ class LayerTreeTestMaskLayerWithScaling : public LayerTreeTest { |
FakePictureLayer::Create(&client_); |
scaling_layer->AddChild(content_layer); |
+ std::unique_ptr<RecordingSource> recording_source = |
+ FakeRecordingSource::CreateFilledRecordingSource(gfx::Size(100, 100)); |
+ SkPaint paint1, paint2; |
+ static_cast<FakeRecordingSource*>(recording_source.get()) |
+ ->add_draw_rect_with_flags(gfx::Rect(0, 0, 100, 10), paint1); |
+ static_cast<FakeRecordingSource*>(recording_source.get()) |
+ ->add_draw_rect_with_flags(gfx::Rect(0, 10, 100, 90), paint2); |
+ client_.set_fill_with_nonsolid_color(true); |
+ static_cast<FakeRecordingSource*>(recording_source.get())->Rerecord(); |
+ |
scoped_refptr<FakePictureLayer> mask_layer = |
- FakePictureLayer::Create(&client_); |
+ FakePictureLayer::CreateWithRecordingSource( |
+ &client_, std::move(recording_source)); |
content_layer->SetMaskLayer(mask_layer.get()); |
gfx::Size root_size(100, 100); |
@@ -6620,16 +6649,28 @@ class LayerTreeTestMaskLayerWithScaling : public LayerTreeTest { |
// mask, that should fully map onto the quad. |
EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
render_pass_quad->rect.ToString()); |
- EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
- render_pass_quad->mask_uv_rect.ToString()); |
+ if (host_impl->settings().enable_mask_tiling) { |
+ EXPECT_EQ( |
+ gfx::RectF(0.f, 0.f, 100.f / 128.f, 100.f / 128.f).ToString(), |
+ render_pass_quad->mask_uv_rect.ToString()); |
+ } else { |
+ EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
+ render_pass_quad->mask_uv_rect.ToString()); |
+ } |
break; |
case 1: |
// Applying a DSF should change the render surface size, but won't |
// affect which part of the mask is used. |
EXPECT_EQ(gfx::Rect(0, 0, 200, 200).ToString(), |
render_pass_quad->rect.ToString()); |
- EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
- render_pass_quad->mask_uv_rect.ToString()); |
+ if (host_impl->settings().enable_mask_tiling) { |
+ EXPECT_EQ( |
+ gfx::RectF(0.f, 0.f, 100.f / 128.f, 100.f / 128.f).ToString(), |
+ render_pass_quad->mask_uv_rect.ToString()); |
+ } else { |
+ EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
+ render_pass_quad->mask_uv_rect.ToString()); |
+ } |
EndTest(); |
break; |
} |
@@ -6665,8 +6706,19 @@ class LayerTreeTestMaskLayerWithDifferentBounds : public LayerTreeTest { |
FakePictureLayer::Create(&client_); |
root->AddChild(content_layer); |
+ std::unique_ptr<RecordingSource> recording_source = |
+ FakeRecordingSource::CreateFilledRecordingSource(gfx::Size(100, 100)); |
+ SkPaint paint1, paint2; |
+ static_cast<FakeRecordingSource*>(recording_source.get()) |
+ ->add_draw_rect_with_flags(gfx::Rect(0, 0, 100, 90), paint1); |
+ static_cast<FakeRecordingSource*>(recording_source.get()) |
+ ->add_draw_rect_with_flags(gfx::Rect(0, 90, 100, 10), paint2); |
+ client_.set_fill_with_nonsolid_color(true); |
+ static_cast<FakeRecordingSource*>(recording_source.get())->Rerecord(); |
+ |
scoped_refptr<FakePictureLayer> mask_layer = |
- FakePictureLayer::Create(&client_); |
+ FakePictureLayer::CreateWithRecordingSource( |
+ &client_, std::move(recording_source)); |
content_layer->SetMaskLayer(mask_layer.get()); |
gfx::Size root_size(100, 100); |
@@ -6704,16 +6756,26 @@ class LayerTreeTestMaskLayerWithDifferentBounds : public LayerTreeTest { |
// Check that the mask fills the surface. |
EXPECT_EQ(gfx::Rect(0, 0, 50, 50).ToString(), |
render_pass_quad->rect.ToString()); |
- EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
- render_pass_quad->mask_uv_rect.ToString()); |
+ if (host_impl->settings().enable_mask_tiling) { |
+ EXPECT_EQ(gfx::RectF(0.f, 0.f, 50.f / 128.f, 50.f / 128.f).ToString(), |
+ render_pass_quad->mask_uv_rect.ToString()); |
+ } else { |
+ EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
+ render_pass_quad->mask_uv_rect.ToString()); |
+ } |
break; |
case 1: |
// Applying a DSF should change the render surface size, but won't |
// affect which part of the mask is used. |
EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), |
render_pass_quad->rect.ToString()); |
- EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
- render_pass_quad->mask_uv_rect.ToString()); |
+ if (host_impl->settings().enable_mask_tiling) { |
+ EXPECT_EQ(gfx::RectF(0.f, 0.f, 50.f / 128.f, 50.f / 128.f).ToString(), |
+ render_pass_quad->mask_uv_rect.ToString()); |
+ } else { |
+ EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(), |
+ render_pass_quad->mask_uv_rect.ToString()); |
+ } |
EndTest(); |
break; |
} |