| Index: cc/trees/layer_tree_host_impl_unittest.cc
|
| diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc
|
| index b2cc8160761dcda3e939f68d976800951d016fce..ec37a3ff834b5bcdff96ba23c75950ab506596f0 100644
|
| --- a/cc/trees/layer_tree_host_impl_unittest.cc
|
| +++ b/cc/trees/layer_tree_host_impl_unittest.cc
|
| @@ -64,6 +64,7 @@ class LayerTreeHostImplTest : public testing::Test,
|
| : proxy_(scoped_ptr<Thread>(NULL)),
|
| always_impl_thread_(&proxy_),
|
| always_main_thread_blocked_(&proxy_),
|
| + did_try_initialize_renderer_(false),
|
| on_can_draw_state_changed_called_(false),
|
| has_pending_tree_(false),
|
| did_request_commit_(false),
|
| @@ -90,6 +91,11 @@ class LayerTreeHostImplTest : public testing::Test,
|
|
|
| virtual void TearDown() OVERRIDE {}
|
|
|
| + virtual void DidTryInitializeRendererOnImplThread(
|
| + bool success,
|
| + scoped_refptr<ContextProvider> offscreen_context_provider) OVERRIDE {
|
| + did_try_initialize_renderer_ = true;
|
| + }
|
| virtual void DidLoseOutputSurfaceOnImplThread() OVERRIDE {}
|
| virtual void OnSwapBuffersCompleteOnImplThread() OVERRIDE {}
|
| virtual void OnVSyncParametersChanged(base::TimeTicks timebase,
|
| @@ -277,6 +283,7 @@ class LayerTreeHostImplTest : public testing::Test,
|
|
|
| scoped_ptr<LayerTreeHostImpl> host_impl_;
|
| FakeRenderingStatsInstrumentation stats_instrumentation_;
|
| + bool did_try_initialize_renderer_;
|
| bool on_can_draw_state_changed_called_;
|
| bool has_pending_tree_;
|
| bool did_request_commit_;
|
| @@ -5788,6 +5795,7 @@ TEST_F(LayerTreeHostImplTest, ForcedDrawToSoftwareDeviceBasicRender) {
|
| host_impl_->SetViewportSize(gfx::Size(50, 50));
|
| CountingSoftwareDevice* software_device = new CountingSoftwareDevice();
|
| FakeOutputSurface* output_surface = FakeOutputSurface::CreateDeferredGL(
|
| + scoped_ptr<WebKit::WebGraphicsContext3D>(),
|
| scoped_ptr<SoftwareOutputDevice>(software_device)).release();
|
| host_impl_->InitializeRenderer(scoped_ptr<OutputSurface>(output_surface));
|
|
|
| @@ -5810,6 +5818,7 @@ TEST_F(LayerTreeHostImplTest, ForcedDrawToSoftwareDeviceBasicRender) {
|
| TEST_F(LayerTreeHostImplTest,
|
| ForcedDrawToSoftwareDeviceSkipsUnsupportedLayers) {
|
| FakeOutputSurface* output_surface = FakeOutputSurface::CreateDeferredGL(
|
| + scoped_ptr<WebKit::WebGraphicsContext3D>(),
|
| scoped_ptr<SoftwareOutputDevice>(new CountingSoftwareDevice())).release();
|
| host_impl_->InitializeRenderer(
|
| scoped_ptr<OutputSurface>(output_surface));
|
| @@ -5840,5 +5849,37 @@ TEST_F(LayerTreeHostImplTest,
|
| EXPECT_EQ(host_impl_->active_tree()->root_layer(), frame.will_draw_layers[0]);
|
| }
|
|
|
| +TEST_F(LayerTreeHostImplTest, DeferredInitializeSmoke) {
|
| + host_impl_->InitializeRenderer(
|
| + scoped_ptr<OutputSurface>(FakeOutputSurface::CreateDeferredGL(
|
| + scoped_ptr<WebKit::WebGraphicsContext3D>(
|
| + TestWebGraphicsContext3D::Create(
|
| + WebKit::WebGraphicsContext3D::Attributes())),
|
| + scoped_ptr<SoftwareOutputDevice>(new CountingSoftwareDevice()))));
|
| +
|
| + // Add two layers.
|
| + scoped_ptr<SolidColorLayerImpl> root_layer =
|
| + SolidColorLayerImpl::Create(host_impl_->active_tree(), 1);
|
| + FakeVideoFrameProvider provider;
|
| + scoped_ptr<VideoLayerImpl> video_layer =
|
| + VideoLayerImpl::Create(host_impl_->active_tree(), 2, &provider);
|
| + video_layer->SetBounds(gfx::Size(10, 10));
|
| + video_layer->SetContentBounds(gfx::Size(10, 10));
|
| + video_layer->SetDrawsContent(true);
|
| + root_layer->AddChild(video_layer.PassAs<LayerImpl>());
|
| + SetupRootLayerImpl(root_layer.PassAs<LayerImpl>());
|
| +
|
| + // Software draw.
|
| + DrawFrame();
|
| +
|
| + // DeferredInitialize and hardware draw.
|
| + EXPECT_FALSE(did_try_initialize_renderer_);
|
| + host_impl_->DeferredInitialize(scoped_refptr<ContextProvider>());
|
| + EXPECT_TRUE(did_try_initialize_renderer_);
|
| +
|
| + // Defer intialized GL draw.
|
| + DrawFrame();
|
| +}
|
| +
|
| } // namespace
|
| } // namespace cc
|
|
|