OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <stddef.h> | 5 #include <stddef.h> |
6 | 6 |
7 #include "build/build_config.h" | 7 #include "build/build_config.h" |
8 #include "cc/layers/content_layer_client.h" | 8 #include "cc/layers/content_layer_client.h" |
9 #include "cc/layers/picture_image_layer.h" | 9 #include "cc/layers/picture_image_layer.h" |
10 #include "cc/layers/picture_layer.h" | 10 #include "cc/layers/picture_layer.h" |
11 #include "cc/layers/solid_color_layer.h" | 11 #include "cc/layers/solid_color_layer.h" |
12 #include "cc/playback/display_item_list_settings.h" | 12 #include "cc/playback/display_item_list_settings.h" |
13 #include "cc/playback/drawing_display_item.h" | 13 #include "cc/playback/drawing_display_item.h" |
14 #include "cc/test/layer_tree_pixel_resource_test.h" | 14 #include "cc/test/layer_tree_pixel_resource_test.h" |
15 #include "cc/test/pixel_comparator.h" | 15 #include "cc/test/pixel_comparator.h" |
16 #include "cc/test/solid_color_content_layer_client.h" | |
17 #include "third_party/skia/include/core/SkImage.h" | 16 #include "third_party/skia/include/core/SkImage.h" |
18 #include "third_party/skia/include/core/SkPictureRecorder.h" | 17 #include "third_party/skia/include/core/SkPictureRecorder.h" |
19 #include "third_party/skia/include/core/SkSurface.h" | 18 #include "third_party/skia/include/core/SkSurface.h" |
20 | 19 |
21 #if !defined(OS_ANDROID) | 20 #if !defined(OS_ANDROID) |
22 | 21 |
23 namespace cc { | 22 namespace cc { |
24 namespace { | 23 namespace { |
25 | 24 |
26 typedef ParameterizedPixelResourceTest LayerTreeHostMasksPixelTest; | 25 typedef ParameterizedPixelResourceTest LayerTreeHostMasksPixelTest; |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 scoped_refptr<Layer> replica = Layer::Create(); | 171 scoped_refptr<Layer> replica = Layer::Create(); |
173 replica->SetTransformOrigin(gfx::Point3F(25.f, 25.f, 0.f)); | 172 replica->SetTransformOrigin(gfx::Point3F(25.f, 25.f, 0.f)); |
174 replica->SetPosition(gfx::PointF(50.f, 50.f)); | 173 replica->SetPosition(gfx::PointF(50.f, 50.f)); |
175 replica->SetTransform(replica_transform); | 174 replica->SetTransform(replica_transform); |
176 green->SetReplicaLayer(replica.get()); | 175 green->SetReplicaLayer(replica.get()); |
177 | 176 |
178 RunPixelResourceTest( | 177 RunPixelResourceTest( |
179 background, base::FilePath(FILE_PATH_LITERAL("mask_with_replica.png"))); | 178 background, base::FilePath(FILE_PATH_LITERAL("mask_with_replica.png"))); |
180 } | 179 } |
181 | 180 |
182 // Test collapsing of render passes containing a single tile quad and | |
183 // drawing them directly with masks and replicas. | |
184 TEST_P(LayerTreeHostMasksPixelTest, ContentLayerMaskWithReplica) { | |
185 scoped_refptr<SolidColorLayer> background = | |
186 CreateSolidColorLayer(gfx::Rect(100, 100), SK_ColorWHITE); | |
187 | |
188 gfx::Size mask_bounds(50, 50); | |
189 MaskContentLayerClient client(mask_bounds); | |
190 scoped_refptr<PictureLayer> mask = PictureLayer::Create(&client); | |
191 mask->SetBounds(mask_bounds); | |
192 mask->SetIsDrawable(true); | |
193 mask->SetIsMask(true); | |
194 | |
195 // Use a border to defeat solid color detection to force a tile quad. | |
196 SolidColorContentLayerClient green_client(kCSSGreen, mask_bounds, 1, | |
197 SK_ColorBLACK); | |
198 scoped_refptr<PictureLayer> green = PictureLayer::Create(&green_client); | |
199 green->SetBounds(mask_bounds); | |
200 green->SetIsDrawable(true); | |
201 background->AddChild(green); | |
202 green->SetMaskLayer(mask.get()); | |
203 | |
204 gfx::Transform replica_transform; | |
205 replica_transform.Rotate(-90.0); | |
206 | |
207 scoped_refptr<Layer> replica = Layer::Create(); | |
208 replica->SetTransformOrigin(gfx::Point3F(25.f, 25.f, 0.f)); | |
209 replica->SetPosition(gfx::PointF(50.f, 50.f)); | |
210 replica->SetTransform(replica_transform); | |
211 green->SetReplicaLayer(replica.get()); | |
212 | |
213 RunPixelResourceTest( | |
214 background, base::FilePath(FILE_PATH_LITERAL("mask_with_replica.png"))); | |
215 } | |
216 | |
217 TEST_P(LayerTreeHostMasksPixelTest, MaskWithReplicaOfClippedLayer) { | 181 TEST_P(LayerTreeHostMasksPixelTest, MaskWithReplicaOfClippedLayer) { |
218 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 182 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
219 gfx::Rect(100, 100), SK_ColorWHITE); | 183 gfx::Rect(100, 100), SK_ColorWHITE); |
220 | 184 |
221 gfx::Size mask_bounds(50, 50); | 185 gfx::Size mask_bounds(50, 50); |
222 MaskContentLayerClient client(mask_bounds); | 186 MaskContentLayerClient client(mask_bounds); |
223 scoped_refptr<PictureLayer> mask = PictureLayer::Create(&client); | 187 scoped_refptr<PictureLayer> mask = PictureLayer::Create(&client); |
224 mask->SetBounds(mask_bounds); | 188 mask->SetBounds(mask_bounds); |
225 mask->SetIsDrawable(true); | 189 mask->SetIsDrawable(true); |
226 mask->SetIsMask(true); | 190 mask->SetIsMask(true); |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
518 | 482 |
519 RunPixelResourceTest(background, | 483 RunPixelResourceTest(background, |
520 base::FilePath( | 484 base::FilePath( |
521 FILE_PATH_LITERAL("mask_of_layer_with_blend.png"))); | 485 FILE_PATH_LITERAL("mask_of_layer_with_blend.png"))); |
522 } | 486 } |
523 | 487 |
524 } // namespace | 488 } // namespace |
525 } // namespace cc | 489 } // namespace cc |
526 | 490 |
527 #endif // !defined(OS_ANDROID) | 491 #endif // !defined(OS_ANDROID) |
OLD | NEW |