| 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 84210e0bc2f3ab93759f210218af07e52e5c2bdd..69e5272f55e451971198584ee80aa4b9b97774cb 100644
|
| --- a/cc/trees/layer_tree_host_unittest.cc
|
| +++ b/cc/trees/layer_tree_host_unittest.cc
|
| @@ -5737,6 +5737,48 @@ class LayerTreeHostTestCrispUpAfterPinchEndsWithOneCopy
|
|
|
| MULTI_THREAD_IMPL_TEST_F(LayerTreeHostTestCrispUpAfterPinchEndsWithOneCopy);
|
|
|
| +class RasterizeWithGpuRasterizationCreatesResources : public LayerTreeHostTest {
|
| + protected:
|
| + RasterizeWithGpuRasterizationCreatesResources() {}
|
| +
|
| + void InitializeSettings(LayerTreeSettings* settings) override {
|
| + settings->impl_side_painting = true;
|
| + settings->gpu_rasterization_forced = true;
|
| + }
|
| +
|
| + void SetupTree() override {
|
| + client_.set_fill_with_nonsolid_color(true);
|
| +
|
| + scoped_refptr<Layer> root = Layer::Create();
|
| + root->SetBounds(gfx::Size(500, 500));
|
| +
|
| + scoped_ptr<FakePicturePile> pile(new FakePicturePile);
|
| + scoped_refptr<FakePictureLayer> layer =
|
| + FakePictureLayer::CreateWithRecordingSource(&client_, pile.Pass());
|
| + layer->SetBounds(gfx::Size(500, 500));
|
| + layer->SetContentsOpaque(true);
|
| + root->AddChild(layer);
|
| +
|
| + layer_tree_host()->SetRootLayer(root);
|
| + LayerTreeHostTest::SetupTree();
|
| + }
|
| +
|
| + void BeginTest() override { PostSetNeedsCommitToMainThread(); }
|
| +
|
| + DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl,
|
| + LayerTreeHostImpl::FrameData* frame_data,
|
| + DrawResult draw_result) override {
|
| + EXPECT_NE(0u, host_impl->resource_provider()->num_resources());
|
| + EndTest();
|
| + return draw_result;
|
| + }
|
| + void AfterTest() override {}
|
| +
|
| + FakeContentLayerClient client_;
|
| +};
|
| +
|
| +MULTI_THREAD_IMPL_TEST_F(RasterizeWithGpuRasterizationCreatesResources);
|
| +
|
| class LayerTreeHostTestContinuousDrawWhenCreatingVisibleTiles
|
| : public LayerTreeHostTest {
|
| protected:
|
| @@ -5970,6 +6012,50 @@ class LayerTreeHostTestOneActivatePerPrepareTiles : public LayerTreeHostTest {
|
|
|
| MULTI_THREAD_IMPL_TEST_F(LayerTreeHostTestOneActivatePerPrepareTiles);
|
|
|
| +class LayerTreeHostTestActivationCausesPrepareTiles : public LayerTreeHostTest {
|
| + public:
|
| + LayerTreeHostTestActivationCausesPrepareTiles()
|
| + : scheduled_prepare_tiles_count_(0) {}
|
| +
|
| + void SetupTree() override {
|
| + client_.set_fill_with_nonsolid_color(true);
|
| + scoped_refptr<FakePictureLayer> root_layer =
|
| + FakePictureLayer::Create(&client_);
|
| + root_layer->SetBounds(gfx::Size(150, 150));
|
| + root_layer->SetIsDrawable(true);
|
| +
|
| + layer_tree_host()->SetRootLayer(root_layer);
|
| + LayerTreeHostTest::SetupTree();
|
| + }
|
| +
|
| + void BeginTest() override { PostSetNeedsCommitToMainThread(); }
|
| +
|
| + void NotifyReadyToActivateOnThread(LayerTreeHostImpl* impl) override {
|
| + // Ensure we've already activated.
|
| + EXPECT_FALSE(impl->pending_tree());
|
| +
|
| + // After activating, we either need to prepare tiles, or we've already
|
| + // called a scheduled prepare tiles. This is done because activation might
|
| + // cause us to have to memory available (old active tree is gone), so we
|
| + // need to ensure we will get a PrepareTiles call.
|
| + if (!impl->prepare_tiles_needed())
|
| + EXPECT_GE(scheduled_prepare_tiles_count_, 1);
|
| + EndTest();
|
| + }
|
| +
|
| + void ScheduledActionPrepareTiles() override {
|
| + ++scheduled_prepare_tiles_count_;
|
| + }
|
| +
|
| + void AfterTest() override {}
|
| +
|
| + protected:
|
| + FakeContentLayerClient client_;
|
| + int scheduled_prepare_tiles_count_;
|
| +};
|
| +
|
| +MULTI_THREAD_IMPL_TEST_F(LayerTreeHostTestActivationCausesPrepareTiles);
|
| +
|
| // This tests an assertion that DidCommit and WillCommit happen in the same
|
| // stack frame with no tasks that run between them. Various embedders of
|
| // cc depend on this logic. ui::Compositor holds a compositor lock between
|
|
|