Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4208)

Unified Diff: cc/trees/layer_tree_host_impl_unittest.cc

Issue 2100353002: cc: DCHECK that the OutputSurface was released in ~LayerTreeHostImpl(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: released-outputsurface: . Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 bd031eace7f0c77a60702366cdd1cc662408c75d..b2793d24acdd602848fe76e9b153877b68173804 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();
enne (OOO) 2016/06/27 22:22:20 What's with this setup function and some tests tha
danakj 2016/06/27 22:24:36 Well, some tests replace host_impl_ with their own
+ 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());
@@ -10878,6 +10904,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;

Powered by Google App Engine
This is Rietveld 408576698