summaryrefslogtreecommitdiffstats
path: root/cc/trees/layer_tree_host_unittest.cc
diff options
context:
space:
mode:
authorenne <enne@chromium.org>2015-06-12 16:56:32 -0700
committerCommit bot <commit-bot@chromium.org>2015-06-12 23:56:58 +0000
commitf44fcf9ee12b4c1b7e2c1039f639a3101d1517e3 (patch)
treeabe6fa901b67a70c2810b6a245e32d41da160984 /cc/trees/layer_tree_host_unittest.cc
parent680986697fe53bc140837bb74d495e6ad973d2c7 (diff)
downloadchromium_src-f44fcf9ee12b4c1b7e2c1039f639a3101d1517e3.zip
chromium_src-f44fcf9ee12b4c1b7e2c1039f639a3101d1517e3.tar.gz
chromium_src-f44fcf9ee12b4c1b7e2c1039f639a3101d1517e3.tar.bz2
Abort copy requests from never-drawn trees
In rare-ish cases, the scheduler will commit/activate onto the active tree without ever having drawn that tree. This happens in cases where the tree is !CanDraw, such as in cases of empty viewports or not being visible or losing a context. Preserving render surface creation on the main thread (along with clip nodes and transform nodes in the future) makes handling this edge case extra complicated, so I'd like to just abort these requests. Callers to CopyOutputRequest already have to deal with failure, so they can just re-request. R=danakj@chromium.org,vollick@chromium.org CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/1186603004 Cr-Commit-Position: refs/heads/master@{#334288}
Diffstat (limited to 'cc/trees/layer_tree_host_unittest.cc')
-rw-r--r--cc/trees/layer_tree_host_unittest.cc79
1 files changed, 0 insertions, 79 deletions
diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc
index ffe090d..79c5f53 100644
--- a/cc/trees/layer_tree_host_unittest.cc
+++ b/cc/trees/layer_tree_host_unittest.cc
@@ -5750,85 +5750,6 @@ class LayerTreeHostTestNoTasksBetweenWillAndDidCommit
SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestNoTasksBetweenWillAndDidCommit);
-// Verify that if a LayerImpl holds onto a copy request for multiple
-// frames that it will continue to have a render surface through
-// multiple commits, even though the Layer itself has no reason
-// to have a render surface.
-class LayerPreserveRenderSurfaceFromOutputRequests : public LayerTreeHostTest {
- protected:
- void SetupTree() override {
- scoped_refptr<Layer> root = Layer::Create(layer_settings());
- root->CreateRenderSurface();
- root->SetBounds(gfx::Size(10, 10));
- child_ = Layer::Create(layer_settings());
- child_->SetBounds(gfx::Size(20, 20));
- root->AddChild(child_);
-
- layer_tree_host()->SetRootLayer(root);
- LayerTreeHostTest::SetupTree();
- }
-
- static void CopyOutputCallback(scoped_ptr<CopyOutputResult> result) {}
-
- void BeginTest() override {
- child_->RequestCopyOfOutput(
- CopyOutputRequest::CreateBitmapRequest(base::Bind(CopyOutputCallback)));
- EXPECT_TRUE(child_->HasCopyRequest());
- PostSetNeedsCommitToMainThread();
- }
-
- void DidCommit() override { EXPECT_FALSE(child_->HasCopyRequest()); }
-
- void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override {
- LayerImpl* child_impl = host_impl->sync_tree()->LayerById(child_->id());
-
- switch (host_impl->sync_tree()->source_frame_number()) {
- case 0:
- EXPECT_TRUE(child_impl->HasCopyRequest());
- EXPECT_TRUE(child_impl->render_surface());
- break;
- case 1:
- if (host_impl->proxy()->CommitToActiveTree()) {
- EXPECT_TRUE(child_impl->HasCopyRequest());
- EXPECT_TRUE(child_impl->render_surface());
- } else {
- EXPECT_FALSE(child_impl->HasCopyRequest());
- EXPECT_FALSE(child_impl->render_surface());
- }
- break;
- default:
- NOTREACHED();
- break;
- }
- }
-
- void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override {
- LayerImpl* child_impl = host_impl->active_tree()->LayerById(child_->id());
- EXPECT_TRUE(child_impl->HasCopyRequest());
- EXPECT_TRUE(child_impl->render_surface());
-
- switch (host_impl->active_tree()->source_frame_number()) {
- case 0:
- // Lose output surface to prevent drawing and cause another commit.
- host_impl->DidLoseOutputSurface();
- break;
- case 1:
- EndTest();
- break;
- default:
- NOTREACHED();
- break;
- }
- }
-
- void AfterTest() override {}
-
- private:
- scoped_refptr<Layer> child_;
-};
-
-SINGLE_AND_MULTI_THREAD_TEST_F(LayerPreserveRenderSurfaceFromOutputRequests);
-
class LayerTreeHostTestUpdateCopyRequests : public LayerTreeHostTest {
protected:
void SetupTree() override {