| 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 68a1f587aa68dfaec95c50d9588beda55e2a9ac7..b74d046ef0944a535fd96aecd615ba6263e5f96c 100644
|
| --- a/cc/trees/layer_tree_host_unittest.cc
|
| +++ b/cc/trees/layer_tree_host_unittest.cc
|
| @@ -475,6 +475,76 @@ class LayerTreeHostTestSetNeedsRedrawRect : public LayerTreeHostTest {
|
|
|
| SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestSetNeedsRedrawRect);
|
|
|
| +// After a viewport size change, max_texture_size on the pending tree must be
|
| +// updated to the new viewport size.
|
| +class LayerTreeHostTestGpuRasterDeviceSizeChanged : public LayerTreeHostTest {
|
| + public:
|
| + LayerTreeHostTestGpuRasterDeviceSizeChanged()
|
| + : num_draws_(0), bounds_(500, 64), invalid_rect_(10, 10, 20, 20) {}
|
| +
|
| + void BeginTest() override {
|
| + client_.set_fill_with_nonsolid_color(true);
|
| + root_layer_ = FakePictureLayer::Create(&client_);
|
| + root_layer_->SetIsDrawable(true);
|
| + gfx::Transform transform;
|
| + // Translate the layer out of the viewport to force it to not update its
|
| + // tile size via PushProperties.
|
| + transform.Translate(10000.0, 10000.0);
|
| + root_layer_->SetTransform(transform);
|
| + root_layer_->SetBounds(bounds_);
|
| + layer_tree_host()->SetRootLayer(root_layer_);
|
| + layer_tree_host()->SetViewportSize(bounds_);
|
| +
|
| + PostSetNeedsCommitToMainThread();
|
| + }
|
| +
|
| + void InitializeSettings(LayerTreeSettings* settings) override {
|
| + settings->gpu_rasterization_enabled = true;
|
| + settings->gpu_rasterization_forced = true;
|
| + }
|
| +
|
| + void DrawLayersOnThread(LayerTreeHostImpl* impl) override {
|
| + // Perform 2 commits.
|
| + if (!num_draws_) {
|
| + PostSetNeedsRedrawRectToMainThread(invalid_rect_);
|
| + } else {
|
| + EndTest();
|
| + }
|
| + num_draws_++;
|
| + }
|
| +
|
| + void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override {
|
| + if (num_draws_ == 2) {
|
| + auto pending_tree = host_impl->pending_tree();
|
| + auto pending_root_layer_impl =
|
| + static_cast<FakePictureLayerImpl*>(pending_tree->root_layer());
|
| + EXPECT_NE(pending_root_layer_impl, nullptr);
|
| + auto tiling_set = pending_root_layer_impl->picture_layer_tiling_set();
|
| + auto tiling = tiling_set->tiling_at(0);
|
| + EXPECT_EQ(400, tiling->TilingDataForTesting().max_texture_size().width());
|
| + }
|
| + }
|
| +
|
| + void DidCommitAndDrawFrame() override {
|
| + // On the second commit, resize the viewport.
|
| + if (num_draws_ == 1) {
|
| + layer_tree_host()->SetViewportSize(gfx::Size(400, 64));
|
| + }
|
| + }
|
| +
|
| + void AfterTest() override { EXPECT_EQ(2, num_draws_); }
|
| +
|
| + private:
|
| + int num_draws_;
|
| + const gfx::Size bounds_;
|
| + const gfx::Rect invalid_rect_;
|
| + FakeContentLayerClient client_;
|
| + scoped_refptr<FakePictureLayer> root_layer_;
|
| +};
|
| +
|
| +MULTI_THREAD_DELEGATING_RENDERER_IMPL_TEST_F(
|
| + LayerTreeHostTestGpuRasterDeviceSizeChanged);
|
| +
|
| class LayerTreeHostTestNoExtraCommitFromInvalidate : public LayerTreeHostTest {
|
| public:
|
| void InitializeSettings(LayerTreeSettings* settings) override {
|
|
|