| Index: cc/layers/heads_up_display_layer_impl_unittest.cc
|
| diff --git a/cc/layers/heads_up_display_layer_impl_unittest.cc b/cc/layers/heads_up_display_layer_impl_unittest.cc
|
| index 722e5615fc8705811963581109befcadc51e24a1..ddfb058ef65cefbf2fe8eb799f4a8723a45167c4 100644
|
| --- a/cc/layers/heads_up_display_layer_impl_unittest.cc
|
| +++ b/cc/layers/heads_up_display_layer_impl_unittest.cc
|
| @@ -18,18 +18,21 @@ namespace {
|
|
|
| void CheckDrawLayer(HeadsUpDisplayLayerImpl* layer,
|
| ResourceProvider* resource_provider,
|
| + ContextProvider* context_provider,
|
| DrawMode draw_mode) {
|
| std::unique_ptr<RenderPass> render_pass = RenderPass::Create();
|
| AppendQuadsData data;
|
| bool will_draw = layer->WillDraw(draw_mode, resource_provider);
|
| if (will_draw)
|
| layer->AppendQuads(render_pass.get(), &data);
|
| - layer->UpdateHudTexture(draw_mode, resource_provider);
|
| + layer->UpdateHudTexture(draw_mode, resource_provider, context_provider);
|
| if (will_draw)
|
| layer->DidDraw(resource_provider);
|
|
|
| size_t expected_quad_list_size = will_draw ? 1 : 0;
|
| EXPECT_EQ(expected_quad_list_size, render_pass->quad_list.size());
|
| + EXPECT_EQ(0u, data.num_missing_tiles);
|
| + EXPECT_EQ(0u, data.num_incomplete_tiles);
|
| }
|
|
|
| TEST(HeadsUpDisplayLayerImplTest, ResourcelessSoftwareDrawAfterResourceLoss) {
|
| @@ -51,15 +54,44 @@ TEST(HeadsUpDisplayLayerImplTest, ResourcelessSoftwareDrawAfterResourceLoss) {
|
| host_impl.pending_tree()->BuildLayerListAndPropertyTreesForTesting();
|
|
|
| // Check regular hardware draw is ok.
|
| - CheckDrawLayer(layer, host_impl.resource_provider(), DRAW_MODE_HARDWARE);
|
| + CheckDrawLayer(layer, host_impl.resource_provider(),
|
| + compositor_frame_sink->context_provider(), DRAW_MODE_HARDWARE);
|
|
|
| // Simulate a resource loss on transitioning to resourceless software mode.
|
| layer->ReleaseResources();
|
|
|
| // Should skip resourceless software draw and not crash in UpdateHudTexture.
|
| CheckDrawLayer(layer, host_impl.resource_provider(),
|
| + compositor_frame_sink->context_provider(),
|
| DRAW_MODE_RESOURCELESS_SOFTWARE);
|
| }
|
|
|
| +TEST(HeadsUpDisplayLayerImplTest, CPUAndGPURasterCanvas) {
|
| + FakeImplTaskRunnerProvider task_runner_provider;
|
| + TestTaskGraphRunner task_graph_runner;
|
| + std::unique_ptr<CompositorFrameSink> compositor_frame_sink =
|
| + FakeCompositorFrameSink::Create3d();
|
| + FakeLayerTreeHostImpl host_impl(&task_runner_provider, &task_graph_runner);
|
| + host_impl.CreatePendingTree();
|
| + host_impl.SetVisible(true);
|
| + host_impl.InitializeRenderer(compositor_frame_sink.get());
|
| + std::unique_ptr<HeadsUpDisplayLayerImpl> layer_ptr =
|
| + HeadsUpDisplayLayerImpl::Create(host_impl.pending_tree(), 1);
|
| + layer_ptr->SetBounds(gfx::Size(100, 100));
|
| +
|
| + HeadsUpDisplayLayerImpl* layer = layer_ptr.get();
|
| +
|
| + host_impl.pending_tree()->SetRootLayerForTesting(std::move(layer_ptr));
|
| + host_impl.pending_tree()->BuildLayerListAndPropertyTreesForTesting();
|
| +
|
| + // Check Ganesh canvas drawing is ok.
|
| + CheckDrawLayer(layer, host_impl.resource_provider(),
|
| + compositor_frame_sink->context_provider(), DRAW_MODE_HARDWARE);
|
| +
|
| + // Check SW canvas drawing is ok.
|
| + CheckDrawLayer(layer, host_impl.resource_provider(), NULL,
|
| + DRAW_MODE_SOFTWARE);
|
| +}
|
| +
|
| } // namespace
|
| } // namespace cc
|
|
|