| 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 d300575957fba5e51cc5d9e293c52d3a1b9ec5ed..3754d7981b3564402217698a6bd843c3b15e563a 100644
|
| --- a/cc/trees/layer_tree_host_impl_unittest.cc
|
| +++ b/cc/trees/layer_tree_host_impl_unittest.cc
|
| @@ -119,7 +119,10 @@ class LayerTreeHostImplTest : public testing::Test,
|
| CreateHostImpl(DefaultSettings(), CreateOutputSurface());
|
| }
|
|
|
| - void TearDown() override {}
|
| + void TearDown() override {
|
| + if (host_impl_)
|
| + host_impl_->ReleaseOutputSurface();
|
| + }
|
|
|
| void UpdateRendererCapabilitiesOnImplThread() override {}
|
| void DidLoseOutputSurfaceOnImplThread() override {}
|
| @@ -191,6 +194,8 @@ class LayerTreeHostImplTest : public testing::Test,
|
| const LayerTreeSettings& settings,
|
| std::unique_ptr<OutputSurface> output_surface,
|
| TaskRunnerProvider* task_runner_provider) {
|
| + if (host_impl_)
|
| + host_impl_->ReleaseOutputSurface();
|
| host_impl_ = LayerTreeHostImpl::Create(
|
| settings, this, task_runner_provider, &stats_instrumentation_,
|
| &shared_bitmap_manager_, &gpu_memory_buffer_manager_,
|
| @@ -343,17 +348,15 @@ class LayerTreeHostImplTest : public testing::Test,
|
| Layer::INVALID_ID, kPageScaleLayerId, kInnerViewportScrollLayerId,
|
| kOuterViewportScrollLayerId);
|
|
|
| + layer_tree_impl->property_trees()->needs_rebuild = true;
|
| + layer_tree_impl->BuildLayerListAndPropertyTreesForTesting();
|
| layer_tree_impl->DidBecomeActive();
|
| return layer_tree_impl->InnerViewportScrollLayer();
|
| }
|
|
|
| LayerImpl* SetupScrollAndContentsLayers(const gfx::Size& content_size) {
|
| - LayerImpl* scroll_layer = CreateScrollAndContentsLayers(
|
| - host_impl_->active_tree(), content_size);
|
| - SetNeedsRebuildPropertyTrees();
|
| - RebuildPropertyTrees();
|
| - host_impl_->active_tree()->DidBecomeActive();
|
| - return scroll_layer;
|
| + return CreateScrollAndContentsLayers(host_impl_->active_tree(),
|
| + content_size);
|
| }
|
|
|
| // Sets up a typical virtual viewport setup with one child content layer.
|
| @@ -381,6 +384,7 @@ class LayerTreeHostImplTest : public testing::Test,
|
| ->parent;
|
| inner_clip_layer->SetBounds(viewport_size);
|
| host_impl_->InnerViewportScrollLayer()->SetBounds(viewport_size);
|
| + host_impl_->active_tree()->property_trees()->needs_rebuild = true;
|
| host_impl_->active_tree()->BuildLayerListAndPropertyTreesForTesting();
|
|
|
| host_impl_->SetViewportSize(viewport_size);
|
| @@ -614,6 +618,7 @@ TEST_F(LayerTreeHostImplTest, ScrollDeltaTreeButNoChanges) {
|
| ->AddChild(LayerImpl::Create(host_impl_->active_tree(), 6));
|
| host_impl_->active_tree()->SetRootLayer(std::move(root));
|
| }
|
| + host_impl_->active_tree()->BuildLayerListAndPropertyTreesForTesting();
|
| LayerImpl* root = host_impl_->active_tree()->root_layer();
|
|
|
| ExpectClearedScrollDeltasRecursive(root);
|
| @@ -1359,6 +1364,8 @@ TEST_F(LayerTreeHostImplTest, AnimationSchedulingActiveTree) {
|
| child->draw_properties().visible_layer_rect = gfx::Rect(10, 10);
|
| child->SetDrawsContent(true);
|
|
|
| + host_impl_->active_tree()->BuildLayerListAndPropertyTreesForTesting();
|
| +
|
| // Add a translate from 6,7 to 8,9.
|
| TransformOperations start;
|
| start.AppendTranslate(6.f, 7.f, 0.f);
|
| @@ -1445,6 +1452,7 @@ TEST_F(LayerTreeHostImplTest, AnimationSchedulingCommitToActiveTree) {
|
| EXPECT_FALSE(did_request_commit_);
|
|
|
| // Delete the LayerTreeHostImpl before the TaskRunnerProvider goes away.
|
| + host_impl_->ReleaseOutputSurface();
|
| host_impl_ = nullptr;
|
| }
|
|
|
| @@ -1463,6 +1471,8 @@ TEST_F(LayerTreeHostImplTest, AnimationSchedulingOnLayerDestruction) {
|
| child->draw_properties().visible_layer_rect = gfx::Rect(10, 10);
|
| child->SetDrawsContent(true);
|
|
|
| + host_impl_->active_tree()->BuildLayerListAndPropertyTreesForTesting();
|
| +
|
| // Add a translate animation.
|
| TransformOperations start;
|
| start.AppendTranslate(6.f, 7.f, 0.f);
|
| @@ -1495,6 +1505,8 @@ TEST_F(LayerTreeHostImplTest, AnimationSchedulingOnLayerDestruction) {
|
| root->test_properties()->RemoveChild(child);
|
| child = nullptr;
|
|
|
| + host_impl_->active_tree()->BuildLayerListAndPropertyTreesForTesting();
|
| +
|
| // Doing Animate() doesn't request another frame after the current one.
|
| host_impl_->Animate();
|
| EXPECT_FALSE(did_request_next_frame_);
|
| @@ -2486,7 +2498,6 @@ TEST_F(LayerTreeHostImplTest, PageScaleAnimationTransferedOnSyncTreeActivate) {
|
| CreateScrollAndContentsLayers(
|
| host_impl_->pending_tree(),
|
| gfx::Size(100, 100));
|
| - host_impl_->pending_tree()->BuildLayerListAndPropertyTreesForTesting();
|
| host_impl_->ActivateSyncTree();
|
| DrawFrame();
|
|
|
| @@ -2710,6 +2721,9 @@ class LayerTreeHostImplOverridePhysicalTime : public LayerTreeHostImpl {
|
| class LayerTreeHostImplTestScrollbarAnimation : public LayerTreeHostImplTest {
|
| protected:
|
| void SetupLayers(LayerTreeSettings settings) {
|
| + host_impl_->ReleaseOutputSurface();
|
| + host_impl_ = nullptr;
|
| +
|
| gfx::Size content_size(100, 100);
|
|
|
| LayerTreeHostImplOverridePhysicalTime* host_impl_override_time =
|
| @@ -2921,6 +2935,7 @@ class LayerTreeHostImplTestScrollbarOpacity : public LayerTreeHostImplTest {
|
| scrollbar->SetScrollLayerId(scroll->id());
|
| container->test_properties()->AddChild(std::move(scrollbar));
|
| host_impl_->pending_tree()->PushPageScaleFromMainThread(1.f, 1.f, 1.f);
|
| + host_impl_->pending_tree()->property_trees()->needs_rebuild = true;
|
| host_impl_->pending_tree()->BuildLayerListAndPropertyTreesForTesting();
|
| host_impl_->ActivateSyncTree();
|
|
|
| @@ -3164,6 +3179,8 @@ void LayerTreeHostImplTest::SetupMouseMoveAtWithDeviceScale(
|
| ->InnerViewportContainerLayer()
|
| ->test_properties()
|
| ->AddChild(std::move(scrollbar));
|
| + host_impl_->active_tree()->property_trees()->needs_rebuild = true;
|
| + host_impl_->active_tree()->BuildLayerListAndPropertyTreesForTesting();
|
| host_impl_->active_tree()->DidBecomeActive();
|
|
|
| DrawFrame();
|
| @@ -3879,7 +3896,6 @@ TEST_F(LayerTreeHostImplTest, ClampingAfterActivation) {
|
| host_impl_->pending_tree()->PushPageScaleFromMainThread(1.f, 1.f, 1.f);
|
| CreateScrollAndContentsLayers(host_impl_->pending_tree(),
|
| gfx::Size(100, 100));
|
| - host_impl_->pending_tree()->BuildLayerListAndPropertyTreesForTesting();
|
| host_impl_->ActivateSyncTree();
|
|
|
| host_impl_->CreatePendingTree();
|
| @@ -3979,6 +3995,7 @@ class LayerTreeHostImplTopControlsTest : public LayerTreeHostImplTest {
|
| tree_impl->SetViewportLayersFromIds(Layer::INVALID_ID, page_scale_layer_id,
|
| inner_viewport_scroll_layer_id,
|
| outer_viewport_scroll_layer_id);
|
| + tree_impl->property_trees()->needs_rebuild = true;
|
| tree_impl->BuildLayerListAndPropertyTreesForTesting();
|
|
|
| host_impl_->SetViewportSize(inner_viewport_size);
|
| @@ -5860,12 +5877,12 @@ TEST_F(LayerTreeHostImplTest, RootLayerScrollOffsetDelegation) {
|
| host_impl_->CreatePendingTree();
|
| host_impl_->pending_tree()->PushPageScaleFromMainThread(1.f, 1.f, 1.f);
|
| CreateScrollAndContentsLayers(host_impl_->pending_tree(), new_size);
|
| - host_impl_->pending_tree()->BuildLayerListAndPropertyTreesForTesting();
|
| host_impl_->ActivateSyncTree();
|
| EXPECT_EQ(gfx::SizeF(new_size), scroll_watcher.scrollable_size());
|
|
|
| // Tear down the LayerTreeHostImpl before the InputHandlerClient.
|
| - host_impl_.reset();
|
| + host_impl_->ReleaseOutputSurface();
|
| + host_impl_ = nullptr;
|
| }
|
|
|
| void CheckLayerScrollDelta(LayerImpl* layer, gfx::Vector2dF scroll_delta) {
|
| @@ -7031,6 +7048,8 @@ TEST_F(LayerTreeHostImplTest, PartialSwapReceivesDamageRect) {
|
| expected_swap_rect = gfx::Rect(0, 0, 10, 10);
|
| EXPECT_EQ(expected_swap_rect.ToString(),
|
| fake_output_surface->last_swap_rect().ToString());
|
| +
|
| + layer_tree_host_impl->ReleaseOutputSurface();
|
| }
|
|
|
| TEST_F(LayerTreeHostImplTest, RootLayerDoesntCreateExtraSurface) {
|
| @@ -7349,6 +7368,7 @@ TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorPartialSwap) {
|
| my_host_impl->DrawLayers(&frame);
|
| my_host_impl->DidDrawAllLayers(frame);
|
| }
|
| + my_host_impl->ReleaseOutputSurface();
|
| }
|
|
|
| TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) {
|
| @@ -7379,6 +7399,7 @@ TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) {
|
| my_host_impl->DrawLayers(&frame);
|
| my_host_impl->DidDrawAllLayers(frame);
|
| }
|
| + my_host_impl->ReleaseOutputSurface();
|
| }
|
|
|
| TEST_F(LayerTreeHostImplTest, LayersFreeTextures) {
|
| @@ -7749,6 +7770,9 @@ TEST_F(LayerTreeHostImplTest,
|
| // Checks that we have a non-0 default allocation if we pass a context that
|
| // doesn't support memory management extensions.
|
| TEST_F(LayerTreeHostImplTest, DefaultMemoryAllocation) {
|
| + host_impl_->ReleaseOutputSurface();
|
| + host_impl_ = nullptr;
|
| +
|
| LayerTreeSettings settings = DefaultSettings();
|
| host_impl_ = LayerTreeHostImpl::Create(
|
| settings, this, &task_runner_provider_, &stats_instrumentation_,
|
| @@ -7931,6 +7955,7 @@ TEST_F(LayerTreeHostImplTest, ShutdownReleasesContext) {
|
| EXPECT_FALSE(context_provider->HasOneRef());
|
| EXPECT_EQ(1u, context_provider->TestContext3d()->NumTextures());
|
|
|
| + host_impl_->ReleaseOutputSurface();
|
| host_impl_ = nullptr;
|
|
|
| // The CopyOutputResult's callback was cancelled, the CopyOutputResult
|
| @@ -10277,6 +10302,7 @@ TEST_F(LayerTreeHostImplTest, InvalidLayerNotAddedToRasterQueue) {
|
| layer->tilings()->UpdateTilePriorities(gfx::Rect(gfx::Size(10, 10)), 1.f, 1.0,
|
| Occlusion(), true);
|
| host_impl_->pending_tree()->SetRootLayer(std::move(layer));
|
| + host_impl_->pending_tree()->BuildLayerListAndPropertyTreesForTesting();
|
|
|
| FakePictureLayerImpl* root_layer = static_cast<FakePictureLayerImpl*>(
|
| host_impl_->pending_tree()->root_layer());
|
| @@ -10879,6 +10905,9 @@ TEST_F(LayerTreeHostImplTest, JitterTest) {
|
| // with a software OutputSurface, LayerTreeHostImpl correctly re-computes GPU
|
| // rasterization status.
|
| TEST_F(LayerTreeHostImplTest, RecomputeGpuRasterOnOutputSurfaceChange) {
|
| + host_impl_->ReleaseOutputSurface();
|
| + host_impl_ = nullptr;
|
| +
|
| LayerTreeSettings settings = DefaultSettings();
|
| settings.gpu_rasterization_forced = true;
|
|
|
|
|