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..b100756a190a03836631b9a636a85deef80b576d 100644 |
--- a/cc/trees/layer_tree_host_unittest.cc |
+++ b/cc/trees/layer_tree_host_unittest.cc |
@@ -475,6 +475,60 @@ class LayerTreeHostTestSetNeedsRedrawRect : public LayerTreeHostTest { |
SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestSetNeedsRedrawRect); |
+// After a viewport size change, PushProperties must be called a second time. |
+class LayerTreeHostTestGpuRasterDeviceSizeChanged : public LayerTreeHostTest { |
+ public: |
+ LayerTreeHostTestGpuRasterDeviceSizeChanged() |
+ : num_draws_(0), bounds_(400, 50), invalid_rect_(10, 10, 20, 20) {} |
+ |
+ void BeginTest() override { |
+ root_layer_ = FakePictureLayer::Create(&client_); |
+ root_layer_->SetIsDrawable(true); |
+ 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 DidCommitAndDrawFrame() override { |
+ // On the second commit, resize the viewport. |
+ if (num_draws_ == 1) { |
+ gfx::Size bounds2_(500, 60); |
+ layer_tree_host()->SetViewportSize(bounds2_); |
+ } |
+ } |
+ |
+ void AfterTest() override { |
+ EXPECT_EQ(2, num_draws_); |
+ EXPECT_EQ(2, root_layer_->push_properties_count()); |
+ } |
+ |
+ 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 { |