Index: cc/trees/layer_tree_host_unittest_copyrequest.cc |
diff --git a/cc/trees/layer_tree_host_unittest_copyrequest.cc b/cc/trees/layer_tree_host_unittest_copyrequest.cc |
index 9e39762cd6b0c6a22884fa725bca247f51906403..86c7dc282727ad0502208347df9ebbdab710c9e1 100644 |
--- a/cc/trees/layer_tree_host_unittest_copyrequest.cc |
+++ b/cc/trees/layer_tree_host_unittest_copyrequest.cc |
@@ -496,6 +496,59 @@ class LayerTreeHostCopyRequestTestClippedOut |
SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F( |
LayerTreeHostCopyRequestTestClippedOut); |
+class LayerTreeHostCopyRequestTestScaledLayer |
+ : public LayerTreeHostCopyRequestTest { |
+ protected: |
+ void SetupTree() override { |
+ root_ = Layer::Create(layer_settings()); |
+ root_->SetBounds(gfx::Size(20, 20)); |
+ |
+ gfx::Transform scale; |
+ scale.Scale(2, 2); |
+ |
+ copy_layer_ = Layer::Create(layer_settings()); |
+ copy_layer_->SetBounds(gfx::Size(10, 10)); |
+ copy_layer_->SetTransform(scale); |
+ root_->AddChild(copy_layer_); |
+ |
+ child_layer_ = FakePictureLayer::Create(layer_settings(), &client_); |
+ child_layer_->SetBounds(gfx::Size(10, 10)); |
+ copy_layer_->AddChild(child_layer_); |
+ |
+ layer_tree_host()->SetRootLayer(root_); |
+ LayerTreeHostCopyRequestTest::SetupTree(); |
+ client_.set_bounds(root_->bounds()); |
+ } |
+ |
+ void BeginTest() override { |
+ PostSetNeedsCommitToMainThread(); |
+ |
+ scoped_ptr<CopyOutputRequest> request = |
+ CopyOutputRequest::CreateBitmapRequest(base::Bind( |
+ &LayerTreeHostCopyRequestTestScaledLayer::CopyOutputCallback, |
+ base::Unretained(this))); |
+ request->set_area(gfx::Rect(5, 5)); |
+ copy_layer_->RequestCopyOfOutput(std::move(request)); |
+ } |
+ |
+ void CopyOutputCallback(scoped_ptr<CopyOutputResult> result) { |
+ // The request area is expressed in layer space, but the result's size takes |
+ // into account the transform from layer space to surface space. |
+ EXPECT_EQ(gfx::Size(10, 10), result->size()); |
+ EndTest(); |
+ } |
+ |
+ void AfterTest() override {} |
+ |
+ FakeContentLayerClient client_; |
+ scoped_refptr<Layer> root_; |
+ scoped_refptr<Layer> copy_layer_; |
+ scoped_refptr<FakePictureLayer> child_layer_; |
+}; |
+ |
+SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F( |
+ LayerTreeHostCopyRequestTestScaledLayer); |
+ |
class LayerTreeHostTestAsyncTwoReadbacksWithoutDraw |
: public LayerTreeHostCopyRequestTest { |
protected: |