Index: cc/trees/layer_tree_host_pixeltest_readback.cc |
diff --git a/cc/trees/layer_tree_host_pixeltest_readback.cc b/cc/trees/layer_tree_host_pixeltest_readback.cc |
index 0a06144e87c3481937292b558560558471f28e50..b3729047aa528d7552944ee5abf511d84f4a62da 100644 |
--- a/cc/trees/layer_tree_host_pixeltest_readback.cc |
+++ b/cc/trees/layer_tree_host_pixeltest_readback.cc |
@@ -19,18 +19,30 @@ |
namespace cc { |
namespace { |
-class LayerTreeHostReadbackPixelTest : public LayerTreePixelTest { |
+// Can't templatize a class on its own members, so ReadbackType and |
+// ReadbackTestConfig are declared here, before LayerTreeHostReadbackPixelTest. |
+enum ReadbackType { |
+ READBACK_INVALID, |
+ READBACK_DEFAULT, |
+ READBACK_BITMAP, |
+}; |
+ |
+struct ReadbackTestConfig { |
+ ReadbackTestConfig(LayerTreePixelTest::PixelTestType pixel_test_type_, |
+ ReadbackType readback_type_) |
+ : pixel_test_type(pixel_test_type_), readback_type(readback_type_) {} |
+ LayerTreePixelTest::PixelTestType pixel_test_type; |
+ ReadbackType readback_type; |
+}; |
+ |
+class LayerTreeHostReadbackPixelTest |
+ : public LayerTreePixelTest, |
+ public testing::WithParamInterface<ReadbackTestConfig> { |
protected: |
LayerTreeHostReadbackPixelTest() |
: readback_type_(READBACK_INVALID), |
insert_copy_request_after_frame_count_(0) {} |
- enum ReadbackType { |
- READBACK_INVALID, |
- READBACK_DEFAULT, |
- READBACK_BITMAP, |
- }; |
- |
void RunReadbackTest(PixelTestType test_type, |
ReadbackType readback_type, |
scoped_refptr<Layer> content_root, |
@@ -124,49 +136,7 @@ class LayerTreeHostReadbackPixelTest : public LayerTreePixelTest { |
void IgnoreReadbackResult(scoped_ptr<CopyOutputResult> result) { |
} |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackRootLayer_Software) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
- |
- scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
- background->AddChild(green); |
- |
- RunReadbackTest(PIXEL_TEST_SOFTWARE, |
- READBACK_DEFAULT, |
- background, |
- base::FilePath(FILE_PATH_LITERAL("green.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackRootLayer_Software_Bitmap) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
- |
- scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
- background->AddChild(green); |
- |
- RunReadbackTest(PIXEL_TEST_SOFTWARE, |
- READBACK_BITMAP, |
- background, |
- base::FilePath(FILE_PATH_LITERAL("green.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackRootLayer_GL_Bitmap) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
- |
- scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
- background->AddChild(green); |
- |
- RunReadbackTest(PIXEL_TEST_GL, |
- READBACK_BITMAP, |
- background, |
- base::FilePath(FILE_PATH_LITERAL("green.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackRootLayer_GL) { |
+TEST_P(LayerTreeHostReadbackPixelTest, ReadbackRootLayer) { |
scoped_refptr<SolidColorLayer> background = |
CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
@@ -174,13 +144,11 @@ TEST_F(LayerTreeHostReadbackPixelTest, ReadbackRootLayer_GL) { |
CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
background->AddChild(green); |
- RunReadbackTest(PIXEL_TEST_GL, |
- READBACK_DEFAULT, |
- background, |
- base::FilePath(FILE_PATH_LITERAL("green.png"))); |
+ RunReadbackTest(GetParam().pixel_test_type, GetParam().readback_type, |
+ background, base::FilePath(FILE_PATH_LITERAL("green.png"))); |
} |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackRootLayerWithChild_Software) { |
+TEST_P(LayerTreeHostReadbackPixelTest, ReadbackRootLayerWithChild) { |
scoped_refptr<SolidColorLayer> background = |
CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
@@ -193,51 +161,11 @@ TEST_F(LayerTreeHostReadbackPixelTest, ReadbackRootLayerWithChild_Software) { |
green->AddChild(blue); |
RunReadbackTest( |
- PIXEL_TEST_SOFTWARE, |
- READBACK_DEFAULT, |
- background, |
+ GetParam().pixel_test_type, GetParam().readback_type, background, |
base::FilePath(FILE_PATH_LITERAL("green_with_blue_corner.png"))); |
} |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackRootLayerWithChild_GL_Bitmap) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
- |
- scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
- background->AddChild(green); |
- |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(150, 150, 50, 50), SK_ColorBLUE); |
- green->AddChild(blue); |
- |
- RunReadbackTest( |
- PIXEL_TEST_GL, |
- READBACK_BITMAP, |
- background, |
- base::FilePath(FILE_PATH_LITERAL("green_with_blue_corner.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackRootLayerWithChild_GL) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
- |
- scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
- background->AddChild(green); |
- |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(150, 150, 50, 50), SK_ColorBLUE); |
- green->AddChild(blue); |
- |
- RunReadbackTest( |
- PIXEL_TEST_GL, |
- READBACK_DEFAULT, |
- background, |
- base::FilePath(FILE_PATH_LITERAL("green_with_blue_corner.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayer_Software) { |
+TEST_P(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayer) { |
scoped_refptr<SolidColorLayer> background = |
CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
@@ -246,728 +174,284 @@ TEST_F(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayer_Software) { |
background->AddChild(green); |
RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_SOFTWARE, |
- READBACK_DEFAULT, |
- background, |
- green.get(), |
- base::FilePath(FILE_PATH_LITERAL("green.png"))); |
+ GetParam().pixel_test_type, GetParam().readback_type, background, |
+ green.get(), base::FilePath(FILE_PATH_LITERAL("green.png"))); |
} |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayer_GL_Bitmap) { |
+TEST_P(LayerTreeHostReadbackPixelTest, ReadbackSmallNonRootLayer) { |
scoped_refptr<SolidColorLayer> background = |
CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
+ CreateSolidColorLayer(gfx::Rect(100, 100, 100, 100), SK_ColorGREEN); |
background->AddChild(green); |
RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_GL, |
- READBACK_BITMAP, |
- background, |
- green.get(), |
- base::FilePath(FILE_PATH_LITERAL("green.png"))); |
+ GetParam().pixel_test_type, GetParam().readback_type, background, |
+ green.get(), base::FilePath(FILE_PATH_LITERAL("green_small.png"))); |
} |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayer_GL) { |
+TEST_P(LayerTreeHostReadbackPixelTest, ReadbackSmallNonRootLayerWithChild) { |
scoped_refptr<SolidColorLayer> background = |
CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
+ CreateSolidColorLayer(gfx::Rect(100, 100, 100, 100), SK_ColorGREEN); |
background->AddChild(green); |
+ scoped_refptr<SolidColorLayer> blue = |
+ CreateSolidColorLayer(gfx::Rect(50, 50, 50, 50), SK_ColorBLUE); |
+ green->AddChild(blue); |
+ |
RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_GL, |
- READBACK_DEFAULT, |
- background, |
+ GetParam().pixel_test_type, GetParam().readback_type, background, |
green.get(), |
- base::FilePath(FILE_PATH_LITERAL("green.png"))); |
+ base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
} |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackSmallNonRootLayer_Software) { |
+TEST_P(LayerTreeHostReadbackPixelTest, ReadbackSubtreeSurroundsTargetLayer) { |
scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
+ CreateSolidColorLayer(gfx::Rect(0, 0, 200, 200), SK_ColorWHITE); |
+ |
+ scoped_refptr<SolidColorLayer> target = |
+ CreateSolidColorLayer(gfx::Rect(100, 100, 100, 100), SK_ColorRED); |
+ background->AddChild(target); |
scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(100, 100, 100, 100), SK_ColorGREEN); |
- background->AddChild(green); |
+ CreateSolidColorLayer(gfx::Rect(-100, -100, 300, 300), SK_ColorGREEN); |
+ target->AddChild(green); |
+ |
+ scoped_refptr<SolidColorLayer> blue = |
+ CreateSolidColorLayer(gfx::Rect(50, 50, 50, 50), SK_ColorBLUE); |
+ target->AddChild(blue); |
+ copy_subrect_ = gfx::Rect(0, 0, 100, 100); |
RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_SOFTWARE, |
- READBACK_DEFAULT, |
- background, |
- green.get(), |
- base::FilePath(FILE_PATH_LITERAL("green_small.png"))); |
+ GetParam().pixel_test_type, GetParam().readback_type, background, |
+ target.get(), |
+ base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
} |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackSmallNonRootLayer_GL_Bitmap) { |
+TEST_P(LayerTreeHostReadbackPixelTest, |
+ ReadbackSubtreeExtendsBeyondTargetLayer) { |
scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
+ CreateSolidColorLayer(gfx::Rect(0, 0, 200, 200), SK_ColorWHITE); |
+ |
+ scoped_refptr<SolidColorLayer> target = |
+ CreateSolidColorLayer(gfx::Rect(50, 50, 150, 150), SK_ColorRED); |
+ background->AddChild(target); |
scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(100, 100, 100, 100), SK_ColorGREEN); |
- background->AddChild(green); |
+ CreateSolidColorLayer(gfx::Rect(50, 50, 200, 200), SK_ColorGREEN); |
+ target->AddChild(green); |
+ |
+ scoped_refptr<SolidColorLayer> blue = |
+ CreateSolidColorLayer(gfx::Rect(100, 100, 50, 50), SK_ColorBLUE); |
+ target->AddChild(blue); |
+ copy_subrect_ = gfx::Rect(50, 50, 100, 100); |
RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_GL, |
- READBACK_BITMAP, |
- background, |
- green.get(), |
- base::FilePath(FILE_PATH_LITERAL("green_small.png"))); |
+ GetParam().pixel_test_type, GetParam().readback_type, background, |
+ target.get(), |
+ base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
} |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackSmallNonRootLayer_GL) { |
+TEST_P(LayerTreeHostReadbackPixelTest, ReadbackHiddenSubtree) { |
scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
+ CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorBLACK); |
- scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(100, 100, 100, 100), SK_ColorGREEN); |
- background->AddChild(green); |
+ scoped_refptr<SolidColorLayer> hidden_target = |
+ CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
+ hidden_target->SetHideLayerAndSubtree(true); |
+ background->AddChild(hidden_target); |
+ |
+ scoped_refptr<SolidColorLayer> blue = |
+ CreateSolidColorLayer(gfx::Rect(150, 150, 50, 50), SK_ColorBLUE); |
+ hidden_target->AddChild(blue); |
RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_GL, |
- READBACK_DEFAULT, |
- background, |
- green.get(), |
- base::FilePath(FILE_PATH_LITERAL("green_small.png"))); |
+ GetParam().pixel_test_type, GetParam().readback_type, background, |
+ hidden_target.get(), |
+ base::FilePath(FILE_PATH_LITERAL("green_with_blue_corner.png"))); |
} |
-TEST_F(LayerTreeHostReadbackPixelTest, |
- ReadbackSmallNonRootLayerWithChild_Software) { |
+TEST_P(LayerTreeHostReadbackPixelTest, |
+ HiddenSubtreeNotVisibleWhenDrawnForReadback) { |
scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
+ CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorBLACK); |
- scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(100, 100, 100, 100), SK_ColorGREEN); |
- background->AddChild(green); |
+ scoped_refptr<SolidColorLayer> hidden_target = |
+ CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
+ hidden_target->SetHideLayerAndSubtree(true); |
+ background->AddChild(hidden_target); |
scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(50, 50, 50, 50), SK_ColorBLUE); |
- green->AddChild(blue); |
+ CreateSolidColorLayer(gfx::Rect(150, 150, 50, 50), SK_ColorBLUE); |
+ hidden_target->AddChild(blue); |
- RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_SOFTWARE, |
- READBACK_DEFAULT, |
- background, |
- green.get(), |
- base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
+ hidden_target->RequestCopyOfOutput(CopyOutputRequest::CreateBitmapRequest( |
+ base::Bind(&IgnoreReadbackResult))); |
+ RunReadbackTest(GetParam().pixel_test_type, GetParam().readback_type, |
+ background, base::FilePath(FILE_PATH_LITERAL("black.png"))); |
} |
-TEST_F(LayerTreeHostReadbackPixelTest, |
- ReadbackSmallNonRootLayerWithChild_GL_Bitmap) { |
+TEST_P(LayerTreeHostReadbackPixelTest, ReadbackSubrect) { |
scoped_refptr<SolidColorLayer> background = |
CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(100, 100, 100, 100), SK_ColorGREEN); |
+ CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
background->AddChild(green); |
scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(50, 50, 50, 50), SK_ColorBLUE); |
+ CreateSolidColorLayer(gfx::Rect(100, 100, 50, 50), SK_ColorBLUE); |
green->AddChild(blue); |
- RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_GL, |
- READBACK_BITMAP, |
- background, |
- green.get(), |
+ // Grab the middle of the root layer. |
+ copy_subrect_ = gfx::Rect(50, 50, 100, 100); |
+ |
+ RunReadbackTest( |
+ GetParam().pixel_test_type, GetParam().readback_type, background, |
base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
} |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackSmallNonRootLayerWithChild_GL) { |
+TEST_P(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayerSubrect) { |
scoped_refptr<SolidColorLayer> background = |
CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(100, 100, 100, 100), SK_ColorGREEN); |
+ CreateSolidColorLayer(gfx::Rect(25, 25, 150, 150), SK_ColorGREEN); |
background->AddChild(green); |
scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(50, 50, 50, 50), SK_ColorBLUE); |
+ CreateSolidColorLayer(gfx::Rect(75, 75, 50, 50), SK_ColorBLUE); |
green->AddChild(blue); |
+ // Grab the middle of the green layer. |
+ copy_subrect_ = gfx::Rect(25, 25, 100, 100); |
+ |
RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_GL, |
- READBACK_DEFAULT, |
- background, |
+ GetParam().pixel_test_type, GetParam().readback_type, background, |
green.get(), |
base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
} |
-TEST_F(LayerTreeHostReadbackPixelTest, |
- ReadbackSubtreeSurroundsTargetLayer_Software) { |
+TEST_P(LayerTreeHostReadbackPixelTest, ReadbackWhenNoDamage) { |
scoped_refptr<SolidColorLayer> background = |
CreateSolidColorLayer(gfx::Rect(0, 0, 200, 200), SK_ColorWHITE); |
- scoped_refptr<SolidColorLayer> target = |
- CreateSolidColorLayer(gfx::Rect(100, 100, 100, 100), SK_ColorRED); |
- background->AddChild(target); |
+ scoped_refptr<SolidColorLayer> parent = |
+ CreateSolidColorLayer(gfx::Rect(0, 0, 150, 150), SK_ColorRED); |
+ background->AddChild(parent); |
- scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(-100, -100, 300, 300), SK_ColorGREEN); |
- target->AddChild(green); |
+ scoped_refptr<SolidColorLayer> target = |
+ CreateSolidColorLayer(gfx::Rect(0, 0, 100, 100), SK_ColorGREEN); |
+ parent->AddChild(target); |
scoped_refptr<SolidColorLayer> blue = |
CreateSolidColorLayer(gfx::Rect(50, 50, 50, 50), SK_ColorBLUE); |
target->AddChild(blue); |
- copy_subrect_ = gfx::Rect(0, 0, 100, 100); |
+ insert_copy_request_after_frame_count_ = 1; |
RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_SOFTWARE, |
- READBACK_DEFAULT, |
- background, |
+ GetParam().pixel_test_type, GetParam().readback_type, background, |
target.get(), |
base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
} |
-TEST_F(LayerTreeHostReadbackPixelTest, |
- ReadbackSubtreeSurroundsLayer_GL_Bitmap) { |
+TEST_P(LayerTreeHostReadbackPixelTest, ReadbackOutsideViewportWhenNoDamage) { |
scoped_refptr<SolidColorLayer> background = |
CreateSolidColorLayer(gfx::Rect(0, 0, 200, 200), SK_ColorWHITE); |
- scoped_refptr<SolidColorLayer> target = |
- CreateSolidColorLayer(gfx::Rect(100, 100, 100, 100), SK_ColorRED); |
- background->AddChild(target); |
+ scoped_refptr<SolidColorLayer> parent = |
+ CreateSolidColorLayer(gfx::Rect(0, 0, 200, 200), SK_ColorRED); |
+ EXPECT_FALSE(parent->masks_to_bounds()); |
+ background->AddChild(parent); |
- scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(-100, -100, 300, 300), SK_ColorGREEN); |
- target->AddChild(green); |
+ scoped_refptr<SolidColorLayer> target = |
+ CreateSolidColorLayer(gfx::Rect(250, 250, 100, 100), SK_ColorGREEN); |
+ parent->AddChild(target); |
scoped_refptr<SolidColorLayer> blue = |
CreateSolidColorLayer(gfx::Rect(50, 50, 50, 50), SK_ColorBLUE); |
target->AddChild(blue); |
- copy_subrect_ = gfx::Rect(0, 0, 100, 100); |
+ insert_copy_request_after_frame_count_ = 1; |
RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_GL, |
- READBACK_BITMAP, |
- background, |
+ GetParam().pixel_test_type, GetParam().readback_type, background, |
target.get(), |
base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
} |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackSubtreeSurroundsTargetLayer_GL) { |
+TEST_P(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayerOutsideViewport) { |
scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(0, 0, 200, 200), SK_ColorWHITE); |
- |
- scoped_refptr<SolidColorLayer> target = |
- CreateSolidColorLayer(gfx::Rect(100, 100, 100, 100), SK_ColorRED); |
- background->AddChild(target); |
+ CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(-100, -100, 300, 300), SK_ColorGREEN); |
- target->AddChild(green); |
+ CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
+ // Only the top left quarter of the layer is inside the viewport, so the |
+ // blue layer is entirely outside. |
+ green->SetPosition(gfx::Point(100, 100)); |
+ background->AddChild(green); |
scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(50, 50, 50, 50), SK_ColorBLUE); |
- target->AddChild(blue); |
+ CreateSolidColorLayer(gfx::Rect(150, 150, 50, 50), SK_ColorBLUE); |
+ green->AddChild(blue); |
- copy_subrect_ = gfx::Rect(0, 0, 100, 100); |
RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_GL, |
- READBACK_DEFAULT, |
- background, |
- target.get(), |
- base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
+ GetParam().pixel_test_type, GetParam().readback_type, background, |
+ green.get(), |
+ base::FilePath(FILE_PATH_LITERAL("green_with_blue_corner.png"))); |
} |
-TEST_F(LayerTreeHostReadbackPixelTest, |
- ReadbackSubtreeExtendsBeyondTargetLayer_Software) { |
+TEST_P(LayerTreeHostReadbackPixelTest, ReadbackNonRootOrFirstLayer) { |
+ // This test has 3 render passes with the copy request on the render pass in |
+ // the middle. This test caught an issue where copy requests on non-root |
+ // non-first render passes were being treated differently from the first |
+ // render pass. |
scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(0, 0, 200, 200), SK_ColorWHITE); |
- |
- scoped_refptr<SolidColorLayer> target = |
- CreateSolidColorLayer(gfx::Rect(50, 50, 150, 150), SK_ColorRED); |
- background->AddChild(target); |
- |
- scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(50, 50, 200, 200), SK_ColorGREEN); |
- target->AddChild(green); |
+ CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(100, 100, 50, 50), SK_ColorBLUE); |
- target->AddChild(blue); |
+ CreateSolidColorLayer(gfx::Rect(150, 150, 50, 50), SK_ColorBLUE); |
+ blue->RequestCopyOfOutput(CopyOutputRequest::CreateBitmapRequest( |
+ base::Bind(&IgnoreReadbackResult))); |
+ background->AddChild(blue); |
- copy_subrect_ = gfx::Rect(50, 50, 100, 100); |
RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_SOFTWARE, |
- READBACK_DEFAULT, |
- background, |
- target.get(), |
- base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
+ GetParam().pixel_test_type, GetParam().readback_type, background, |
+ background.get(), |
+ base::FilePath(FILE_PATH_LITERAL("green_with_blue_corner.png"))); |
} |
-TEST_F(LayerTreeHostReadbackPixelTest, |
- ReadbackSubtreeExtendsBeyondTargetLayer_GL_Bitmap) { |
+TEST_P(LayerTreeHostReadbackPixelTest, MultipleReadbacksOnLayer) { |
+ // This test has 2 copy requests on the background layer. One is added in the |
+ // test body, another is added in RunReadbackTestWithReadbackTarget. For every |
+ // copy request after the first, state must be restored via a call to |
+ // UseRenderPass (see http://crbug.com/99393). This test ensures that the |
+ // renderer correctly handles cases where UseRenderPass is called multiple |
+ // times for a single layer. |
scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(0, 0, 200, 200), SK_ColorWHITE); |
- |
- scoped_refptr<SolidColorLayer> target = |
- CreateSolidColorLayer(gfx::Rect(50, 50, 150, 150), SK_ColorRED); |
- background->AddChild(target); |
- |
- scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(50, 50, 200, 200), SK_ColorGREEN); |
- target->AddChild(green); |
+ CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(100, 100, 50, 50), SK_ColorBLUE); |
- target->AddChild(blue); |
+ background->RequestCopyOfOutput(CopyOutputRequest::CreateBitmapRequest( |
+ base::Bind(&IgnoreReadbackResult))); |
- copy_subrect_ = gfx::Rect(50, 50, 100, 100); |
RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_GL, |
- READBACK_BITMAP, |
- background, |
- target.get(), |
- base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
+ GetParam().pixel_test_type, GetParam().readback_type, background, |
+ background.get(), base::FilePath(FILE_PATH_LITERAL("green.png"))); |
} |
-TEST_F(LayerTreeHostReadbackPixelTest, |
- ReadbackSubtreeExtendsBeyondTargetLayer_GL) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(0, 0, 200, 200), SK_ColorWHITE); |
- |
- scoped_refptr<SolidColorLayer> target = |
- CreateSolidColorLayer(gfx::Rect(50, 50, 150, 150), SK_ColorRED); |
- background->AddChild(target); |
- |
- scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(50, 50, 200, 200), SK_ColorGREEN); |
- target->AddChild(green); |
- |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(100, 100, 50, 50), SK_ColorBLUE); |
- target->AddChild(blue); |
- |
- copy_subrect_ = gfx::Rect(50, 50, 100, 100); |
- RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_GL, |
- READBACK_DEFAULT, |
- background, |
- target.get(), |
- base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackHiddenSubtree_Software) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorBLACK); |
- |
- scoped_refptr<SolidColorLayer> hidden_target = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
- hidden_target->SetHideLayerAndSubtree(true); |
- background->AddChild(hidden_target); |
- |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(150, 150, 50, 50), SK_ColorBLUE); |
- hidden_target->AddChild(blue); |
- |
- RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_SOFTWARE, |
- READBACK_DEFAULT, |
- background, |
- hidden_target.get(), |
- base::FilePath(FILE_PATH_LITERAL("green_with_blue_corner.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackHiddenSubtree_GL_Bitmap) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorBLACK); |
- |
- scoped_refptr<SolidColorLayer> hidden_target = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
- hidden_target->SetHideLayerAndSubtree(true); |
- background->AddChild(hidden_target); |
- |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(150, 150, 50, 50), SK_ColorBLUE); |
- hidden_target->AddChild(blue); |
- |
- RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_GL, |
- READBACK_BITMAP, |
- background, |
- hidden_target.get(), |
- base::FilePath(FILE_PATH_LITERAL("green_with_blue_corner.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackHiddenSubtree_GL) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorBLACK); |
- |
- scoped_refptr<SolidColorLayer> hidden_target = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
- hidden_target->SetHideLayerAndSubtree(true); |
- background->AddChild(hidden_target); |
- |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(150, 150, 50, 50), SK_ColorBLUE); |
- hidden_target->AddChild(blue); |
- |
- RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_GL, |
- READBACK_DEFAULT, |
- background, |
- hidden_target.get(), |
- base::FilePath(FILE_PATH_LITERAL("green_with_blue_corner.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, |
- HiddenSubtreeNotVisibleWhenDrawnForReadback_Software) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorBLACK); |
- |
- scoped_refptr<SolidColorLayer> hidden_target = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
- hidden_target->SetHideLayerAndSubtree(true); |
- background->AddChild(hidden_target); |
- |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(150, 150, 50, 50), SK_ColorBLUE); |
- hidden_target->AddChild(blue); |
- |
- hidden_target->RequestCopyOfOutput(CopyOutputRequest::CreateBitmapRequest( |
- base::Bind(&IgnoreReadbackResult))); |
- RunReadbackTest(PIXEL_TEST_SOFTWARE, |
- READBACK_DEFAULT, |
- background, |
- base::FilePath(FILE_PATH_LITERAL("black.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, |
- HiddenSubtreeNotVisibleWhenDrawnForReadback_GL_Bitmap) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorBLACK); |
- |
- scoped_refptr<SolidColorLayer> hidden_target = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
- hidden_target->SetHideLayerAndSubtree(true); |
- background->AddChild(hidden_target); |
- |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(150, 150, 50, 50), SK_ColorBLUE); |
- hidden_target->AddChild(blue); |
- |
- hidden_target->RequestCopyOfOutput(CopyOutputRequest::CreateBitmapRequest( |
- base::Bind(&IgnoreReadbackResult))); |
- RunReadbackTest(PIXEL_TEST_GL, |
- READBACK_BITMAP, |
- background, |
- base::FilePath(FILE_PATH_LITERAL("black.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, |
- HiddenSubtreeNotVisibleWhenDrawnForReadback_GL) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorBLACK); |
- |
- scoped_refptr<SolidColorLayer> hidden_target = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
- hidden_target->SetHideLayerAndSubtree(true); |
- background->AddChild(hidden_target); |
- |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(150, 150, 50, 50), SK_ColorBLUE); |
- hidden_target->AddChild(blue); |
- |
- hidden_target->RequestCopyOfOutput(CopyOutputRequest::CreateBitmapRequest( |
- base::Bind(&IgnoreReadbackResult))); |
- RunReadbackTest(PIXEL_TEST_GL, |
- READBACK_DEFAULT, |
- background, |
- base::FilePath(FILE_PATH_LITERAL("black.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackSubrect_Software) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
- |
- scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
- background->AddChild(green); |
- |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(100, 100, 50, 50), SK_ColorBLUE); |
- green->AddChild(blue); |
- |
- // Grab the middle of the root layer. |
- copy_subrect_ = gfx::Rect(50, 50, 100, 100); |
- |
- RunReadbackTest( |
- PIXEL_TEST_SOFTWARE, |
- READBACK_DEFAULT, |
- background, |
- base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackSubrect_GL_Bitmap) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
- |
- scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
- background->AddChild(green); |
- |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(100, 100, 50, 50), SK_ColorBLUE); |
- green->AddChild(blue); |
- |
- // Grab the middle of the root layer. |
- copy_subrect_ = gfx::Rect(50, 50, 100, 100); |
- |
- RunReadbackTest( |
- PIXEL_TEST_GL, |
- READBACK_BITMAP, |
- background, |
- base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackSubrect_GL) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
- |
- scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
- background->AddChild(green); |
- |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(100, 100, 50, 50), SK_ColorBLUE); |
- green->AddChild(blue); |
- |
- // Grab the middle of the root layer. |
- copy_subrect_ = gfx::Rect(50, 50, 100, 100); |
- |
- RunReadbackTest( |
- PIXEL_TEST_GL, |
- READBACK_DEFAULT, |
- background, |
- base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayerSubrect_Software) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
- |
- scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(25, 25, 150, 150), SK_ColorGREEN); |
- background->AddChild(green); |
- |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(75, 75, 50, 50), SK_ColorBLUE); |
- green->AddChild(blue); |
- |
- // Grab the middle of the green layer. |
- copy_subrect_ = gfx::Rect(25, 25, 100, 100); |
- |
- RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_SOFTWARE, |
- READBACK_DEFAULT, |
- background, |
- green.get(), |
- base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayerSubrect_GL_Bitmap) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
- |
- scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(25, 25, 150, 150), SK_ColorGREEN); |
- background->AddChild(green); |
- |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(75, 75, 50, 50), SK_ColorBLUE); |
- green->AddChild(blue); |
- |
- // Grab the middle of the green layer. |
- copy_subrect_ = gfx::Rect(25, 25, 100, 100); |
- |
- RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_GL, |
- READBACK_BITMAP, |
- background, |
- green.get(), |
- base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayerSubrect_GL) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
- |
- scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(25, 25, 150, 150), SK_ColorGREEN); |
- background->AddChild(green); |
- |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(75, 75, 50, 50), SK_ColorBLUE); |
- green->AddChild(blue); |
- |
- // Grab the middle of the green layer. |
- copy_subrect_ = gfx::Rect(25, 25, 100, 100); |
- |
- RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_GL, |
- READBACK_DEFAULT, |
- background, |
- green.get(), |
- base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackWhenNoDamage_Software) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(0, 0, 200, 200), SK_ColorWHITE); |
- |
- scoped_refptr<SolidColorLayer> parent = |
- CreateSolidColorLayer(gfx::Rect(0, 0, 150, 150), SK_ColorRED); |
- background->AddChild(parent); |
- |
- scoped_refptr<SolidColorLayer> target = |
- CreateSolidColorLayer(gfx::Rect(0, 0, 100, 100), SK_ColorGREEN); |
- parent->AddChild(target); |
- |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(50, 50, 50, 50), SK_ColorBLUE); |
- target->AddChild(blue); |
- |
- insert_copy_request_after_frame_count_ = 1; |
- RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_SOFTWARE, |
- READBACK_DEFAULT, |
- background, |
- target.get(), |
- base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackWhenNoDamage_GL_Bitmap) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(0, 0, 200, 200), SK_ColorWHITE); |
- |
- scoped_refptr<SolidColorLayer> parent = |
- CreateSolidColorLayer(gfx::Rect(0, 0, 150, 150), SK_ColorRED); |
- background->AddChild(parent); |
- |
- scoped_refptr<SolidColorLayer> target = |
- CreateSolidColorLayer(gfx::Rect(0, 0, 100, 100), SK_ColorGREEN); |
- parent->AddChild(target); |
- |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(50, 50, 50, 50), SK_ColorBLUE); |
- target->AddChild(blue); |
- |
- insert_copy_request_after_frame_count_ = 1; |
- RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_GL, |
- READBACK_BITMAP, |
- background, |
- target.get(), |
- base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackWhenNoDamage_GL) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(0, 0, 200, 200), SK_ColorWHITE); |
- |
- scoped_refptr<SolidColorLayer> parent = |
- CreateSolidColorLayer(gfx::Rect(0, 0, 150, 150), SK_ColorRED); |
- background->AddChild(parent); |
- |
- scoped_refptr<SolidColorLayer> target = |
- CreateSolidColorLayer(gfx::Rect(0, 0, 100, 100), SK_ColorGREEN); |
- parent->AddChild(target); |
- |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(50, 50, 50, 50), SK_ColorBLUE); |
- target->AddChild(blue); |
- |
- insert_copy_request_after_frame_count_ = 1; |
- RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_GL, |
- READBACK_DEFAULT, |
- background, |
- target.get(), |
- base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, |
- ReadbackOutsideViewportWhenNoDamage_Software) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(0, 0, 200, 200), SK_ColorWHITE); |
- |
- scoped_refptr<SolidColorLayer> parent = |
- CreateSolidColorLayer(gfx::Rect(0, 0, 200, 200), SK_ColorRED); |
- EXPECT_FALSE(parent->masks_to_bounds()); |
- background->AddChild(parent); |
- |
- scoped_refptr<SolidColorLayer> target = |
- CreateSolidColorLayer(gfx::Rect(250, 250, 100, 100), SK_ColorGREEN); |
- parent->AddChild(target); |
- |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(50, 50, 50, 50), SK_ColorBLUE); |
- target->AddChild(blue); |
- |
- insert_copy_request_after_frame_count_ = 1; |
- RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_SOFTWARE, |
- READBACK_DEFAULT, |
- background, |
- target.get(), |
- base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, |
- ReadbackOutsideViewportWhenNoDamage_GL_Bitmap) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(0, 0, 200, 200), SK_ColorWHITE); |
- |
- scoped_refptr<SolidColorLayer> parent = |
- CreateSolidColorLayer(gfx::Rect(0, 0, 200, 200), SK_ColorRED); |
- EXPECT_FALSE(parent->masks_to_bounds()); |
- background->AddChild(parent); |
- |
- scoped_refptr<SolidColorLayer> target = |
- CreateSolidColorLayer(gfx::Rect(250, 250, 100, 100), SK_ColorGREEN); |
- parent->AddChild(target); |
- |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(50, 50, 50, 50), SK_ColorBLUE); |
- target->AddChild(blue); |
- |
- insert_copy_request_after_frame_count_ = 1; |
- RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_GL, |
- READBACK_BITMAP, |
- background, |
- target.get(), |
- base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackOutsideViewportWhenNoDamage_GL) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(0, 0, 200, 200), SK_ColorWHITE); |
- |
- scoped_refptr<SolidColorLayer> parent = |
- CreateSolidColorLayer(gfx::Rect(0, 0, 200, 200), SK_ColorRED); |
- EXPECT_FALSE(parent->masks_to_bounds()); |
- background->AddChild(parent); |
- |
- scoped_refptr<SolidColorLayer> target = |
- CreateSolidColorLayer(gfx::Rect(250, 250, 100, 100), SK_ColorGREEN); |
- parent->AddChild(target); |
- |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(50, 50, 50, 50), SK_ColorBLUE); |
- target->AddChild(blue); |
- |
- insert_copy_request_after_frame_count_ = 1; |
- RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_GL, |
- READBACK_DEFAULT, |
- background, |
- target.get(), |
- base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
-} |
+INSTANTIATE_TEST_CASE_P( |
+ LayerTreeHostReadbackPixelTests, |
+ LayerTreeHostReadbackPixelTest, |
+ ::testing::Values( |
+ ReadbackTestConfig(LayerTreeHostReadbackPixelTest::PIXEL_TEST_SOFTWARE, |
+ READBACK_DEFAULT), |
+ ReadbackTestConfig(LayerTreeHostReadbackPixelTest::PIXEL_TEST_GL, |
+ READBACK_DEFAULT), |
+ ReadbackTestConfig(LayerTreeHostReadbackPixelTest::PIXEL_TEST_GL, |
+ READBACK_BITMAP))); |
class LayerTreeHostReadbackDeviceScalePixelTest |
: public LayerTreeHostReadbackPixelTest { |
@@ -999,36 +483,7 @@ class LayerTreeHostReadbackDeviceScalePixelTest |
SolidColorContentLayerClient blue_client_; |
}; |
-TEST_F(LayerTreeHostReadbackDeviceScalePixelTest, ReadbackSubrect_Software) { |
- scoped_refptr<FakePictureLayer> background = |
- FakePictureLayer::Create(&white_client_); |
- background->SetBounds(gfx::Size(100, 100)); |
- background->SetIsDrawable(true); |
- |
- scoped_refptr<FakePictureLayer> green = |
- FakePictureLayer::Create(&green_client_); |
- green->SetBounds(gfx::Size(100, 100)); |
- green->SetIsDrawable(true); |
- background->AddChild(green); |
- |
- scoped_refptr<FakePictureLayer> blue = |
- FakePictureLayer::Create(&blue_client_); |
- blue->SetPosition(gfx::Point(50, 50)); |
- blue->SetBounds(gfx::Size(25, 25)); |
- blue->SetIsDrawable(true); |
- green->AddChild(blue); |
- |
- // Grab the middle of the root layer. |
- copy_subrect_ = gfx::Rect(25, 25, 50, 50); |
- device_scale_factor_ = 2.f; |
- RunReadbackTest( |
- PIXEL_TEST_SOFTWARE, |
- READBACK_DEFAULT, |
- background, |
- base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackDeviceScalePixelTest, ReadbackSubrect_GL) { |
+TEST_P(LayerTreeHostReadbackDeviceScalePixelTest, ReadbackSubrect) { |
scoped_refptr<FakePictureLayer> background = |
FakePictureLayer::Create(&white_client_); |
background->SetBounds(gfx::Size(100, 100)); |
@@ -1051,46 +506,11 @@ TEST_F(LayerTreeHostReadbackDeviceScalePixelTest, ReadbackSubrect_GL) { |
copy_subrect_ = gfx::Rect(25, 25, 50, 50); |
device_scale_factor_ = 2.f; |
RunReadbackTest( |
- PIXEL_TEST_GL, |
- READBACK_DEFAULT, |
- background, |
- base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
-} |
- |
-TEST_F(LayerTreeHostReadbackDeviceScalePixelTest, |
- ReadbackNonRootLayerSubrect_Software) { |
- scoped_refptr<FakePictureLayer> background = |
- FakePictureLayer::Create(&white_client_); |
- background->SetBounds(gfx::Size(100, 100)); |
- background->SetIsDrawable(true); |
- |
- scoped_refptr<FakePictureLayer> green = |
- FakePictureLayer::Create(&green_client_); |
- green->SetPosition(gfx::Point(10, 20)); |
- green->SetBounds(gfx::Size(90, 80)); |
- green->SetIsDrawable(true); |
- background->AddChild(green); |
- |
- scoped_refptr<FakePictureLayer> blue = |
- FakePictureLayer::Create(&blue_client_); |
- blue->SetPosition(gfx::Point(50, 50)); |
- blue->SetBounds(gfx::Size(25, 25)); |
- blue->SetIsDrawable(true); |
- green->AddChild(blue); |
- |
- // Grab the green layer's content with blue in the bottom right. |
- copy_subrect_ = gfx::Rect(25, 25, 50, 50); |
- device_scale_factor_ = 2.f; |
- RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_SOFTWARE, |
- READBACK_DEFAULT, |
- background, |
- green.get(), |
+ GetParam().pixel_test_type, GetParam().readback_type, background, |
base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
} |
-TEST_F(LayerTreeHostReadbackDeviceScalePixelTest, |
- ReadbackNonRootLayerSubrect_GL) { |
+TEST_P(LayerTreeHostReadbackDeviceScalePixelTest, ReadbackNonRootLayerSubrect) { |
scoped_refptr<FakePictureLayer> background = |
FakePictureLayer::Create(&white_client_); |
background->SetBounds(gfx::Size(100, 100)); |
@@ -1114,35 +534,21 @@ TEST_F(LayerTreeHostReadbackDeviceScalePixelTest, |
copy_subrect_ = gfx::Rect(25, 25, 50, 50); |
device_scale_factor_ = 2.f; |
RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_GL, |
- READBACK_DEFAULT, |
- background, |
+ GetParam().pixel_test_type, GetParam().readback_type, background, |
green.get(), |
base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png"))); |
} |
-TEST_F(LayerTreeHostReadbackPixelTest, ReadbackNonRootLayerOutsideViewport) { |
- scoped_refptr<SolidColorLayer> background = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorWHITE); |
- |
- scoped_refptr<SolidColorLayer> green = |
- CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorGREEN); |
- // Only the top left quarter of the layer is inside the viewport, so the |
- // blue layer is entirely outside. |
- green->SetPosition(gfx::Point(100, 100)); |
- background->AddChild(green); |
- |
- scoped_refptr<SolidColorLayer> blue = |
- CreateSolidColorLayer(gfx::Rect(150, 150, 50, 50), SK_ColorBLUE); |
- green->AddChild(blue); |
- |
- RunReadbackTestWithReadbackTarget( |
- PIXEL_TEST_GL, |
- READBACK_DEFAULT, |
- background, |
- green.get(), |
- base::FilePath(FILE_PATH_LITERAL("green_with_blue_corner.png"))); |
-} |
+INSTANTIATE_TEST_CASE_P( |
+ LayerTreeHostReadbackDeviceScalePixelTests, |
+ LayerTreeHostReadbackDeviceScalePixelTest, |
+ ::testing::Values( |
+ ReadbackTestConfig(LayerTreeHostReadbackPixelTest::PIXEL_TEST_SOFTWARE, |
+ READBACK_DEFAULT), |
+ ReadbackTestConfig(LayerTreeHostReadbackPixelTest::PIXEL_TEST_GL, |
+ READBACK_DEFAULT), |
+ ReadbackTestConfig(LayerTreeHostReadbackPixelTest::PIXEL_TEST_GL, |
+ READBACK_BITMAP))); |
} // namespace |
} // namespace cc |