Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/trees/layer_tree_host.h" | 5 #include "cc/trees/layer_tree_host.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
| 10 #include "base/synchronization/lock.h" | 10 #include "base/synchronization/lock.h" |
| (...skipping 6302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6313 } | 6313 } |
| 6314 | 6314 |
| 6315 void AfterTest() override { EXPECT_TRUE(did_commit_); } | 6315 void AfterTest() override { EXPECT_TRUE(did_commit_); } |
| 6316 | 6316 |
| 6317 private: | 6317 private: |
| 6318 bool did_commit_; | 6318 bool did_commit_; |
| 6319 }; | 6319 }; |
| 6320 | 6320 |
| 6321 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestNoTasksBetweenWillAndDidCommit); | 6321 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestNoTasksBetweenWillAndDidCommit); |
| 6322 | 6322 |
| 6323 // Verify that if a LayerImpl holds onto a copy request for multiple | |
| 6324 // frames that it will continue to have a render surface through | |
| 6325 // multiple commits, even though the Layer itself has no reason | |
| 6326 // to have a render surface. | |
| 6327 class LayerPreserveRenderSurfaceFromOutputRequests : public LayerTreeHostTest { | |
| 6328 protected: | |
| 6329 void SetupTree() override { | |
| 6330 scoped_refptr<Layer> root = Layer::Create(); | |
| 6331 root->CreateRenderSurface(); | |
| 6332 root->SetBounds(gfx::Size(10, 10)); | |
| 6333 child_ = Layer::Create(); | |
| 6334 child_->SetBounds(gfx::Size(20, 20)); | |
| 6335 root->AddChild(child_); | |
| 6336 | |
| 6337 layer_tree_host()->SetRootLayer(root); | |
| 6338 LayerTreeHostTest::SetupTree(); | |
| 6339 } | |
| 6340 | |
| 6341 static void CopyOutputCallback(scoped_ptr<CopyOutputResult> result) {} | |
| 6342 | |
| 6343 void BeginTest() override { | |
| 6344 child_->RequestCopyOfOutput( | |
| 6345 CopyOutputRequest::CreateBitmapRequest(base::Bind(CopyOutputCallback))); | |
| 6346 EXPECT_TRUE(child_->HasCopyRequest()); | |
| 6347 PostSetNeedsCommitToMainThread(); | |
| 6348 } | |
| 6349 | |
| 6350 void DidCommit() override { EXPECT_FALSE(child_->HasCopyRequest()); } | |
| 6351 | |
| 6352 void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override { | |
| 6353 LayerImpl* child_impl = host_impl->sync_tree()->LayerById(child_->id()); | |
| 6354 ASSERT_TRUE(child_impl); | |
|
danakj
2015/02/19 18:08:39
ASSERT_ in layer tree tests is marginally bleh cuz
enne (OOO)
2015/02/19 18:10:31
But crashing in a unit test ends everything?
danakj
2015/02/19 18:36:44
Not sure what you mean, it ends the test immediate
enne (OOO)
2015/02/19 18:40:33
Ok. Removed asserts.
| |
| 6355 | |
| 6356 switch (host_impl->sync_tree()->source_frame_number()) { | |
| 6357 case 0: | |
| 6358 EXPECT_TRUE(child_impl->HasCopyRequest()); | |
| 6359 EXPECT_TRUE(child_impl->render_surface()); | |
| 6360 break; | |
| 6361 case 1: | |
| 6362 if (host_impl->proxy()->CommitToActiveTree()) { | |
| 6363 EXPECT_TRUE(child_impl->HasCopyRequest()); | |
| 6364 EXPECT_TRUE(child_impl->render_surface()); | |
| 6365 } else { | |
| 6366 EXPECT_FALSE(child_impl->HasCopyRequest()); | |
| 6367 EXPECT_FALSE(child_impl->render_surface()); | |
| 6368 } | |
| 6369 break; | |
| 6370 default: | |
| 6371 NOTREACHED(); | |
| 6372 break; | |
| 6373 } | |
| 6374 } | |
| 6375 | |
| 6376 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | |
| 6377 LayerImpl* child_impl = host_impl->active_tree()->LayerById(child_->id()); | |
| 6378 ASSERT_TRUE(child_impl); | |
| 6379 EXPECT_TRUE(child_impl->HasCopyRequest()); | |
| 6380 EXPECT_TRUE(child_impl->render_surface()); | |
| 6381 | |
| 6382 switch (host_impl->active_tree()->source_frame_number()) { | |
| 6383 case 0: | |
| 6384 // Lose output surface to prevent drawing and cause another commit. | |
| 6385 host_impl->DidLoseOutputSurface(); | |
| 6386 break; | |
| 6387 case 1: | |
| 6388 EndTest(); | |
| 6389 break; | |
| 6390 default: | |
| 6391 NOTREACHED(); | |
| 6392 break; | |
| 6393 } | |
| 6394 } | |
| 6395 | |
| 6396 void AfterTest() override {} | |
| 6397 | |
| 6398 private: | |
| 6399 scoped_refptr<Layer> child_; | |
| 6400 }; | |
| 6401 | |
| 6402 SINGLE_AND_MULTI_THREAD_TEST_F(LayerPreserveRenderSurfaceFromOutputRequests); | |
| 6403 | |
| 6323 } // namespace cc | 6404 } // namespace cc |
| OLD | NEW |