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

Side by Side Diff: cc/trees/layer_tree_host_unittest_context.cc

Issue 1419283002: cc: Split Proxy and TaskRunnerProvider for the LayerTreeHost (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments. Created 5 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « cc/trees/layer_tree_host_unittest.cc ('k') | cc/trees/layer_tree_host_unittest_copyrequest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "cc/layers/delegated_frame_provider.h" 8 #include "cc/layers/delegated_frame_provider.h"
9 #include "cc/layers/delegated_frame_resource_collection.h" 9 #include "cc/layers/delegated_frame_resource_collection.h"
10 #include "cc/layers/heads_up_display_layer.h" 10 #include "cc/layers/heads_up_display_layer.h"
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 405
406 void CreateAndSetOutputSurface() { 406 void CreateAndSetOutputSurface() {
407 scoped_ptr<OutputSurface> surface = 407 scoped_ptr<OutputSurface> surface =
408 LayerTreeHostContextTest::CreateOutputSurface(); 408 LayerTreeHostContextTest::CreateOutputSurface();
409 CHECK(surface); 409 CHECK(surface);
410 setos_counter_++; 410 setos_counter_++;
411 layer_tree_host()->SetOutputSurface(surface.Pass()); 411 layer_tree_host()->SetOutputSurface(surface.Pass());
412 } 412 }
413 413
414 void HideAndReleaseOutputSurface() { 414 void HideAndReleaseOutputSurface() {
415 EXPECT_TRUE(layer_tree_host()->proxy()->IsMainThread()); 415 EXPECT_TRUE(layer_tree_host()->task_runner_provider()->IsMainThread());
416 layer_tree_host()->SetVisible(false); 416 layer_tree_host()->SetVisible(false);
417 scoped_ptr<OutputSurface> surface = 417 scoped_ptr<OutputSurface> surface =
418 layer_tree_host()->ReleaseOutputSurface(); 418 layer_tree_host()->ReleaseOutputSurface();
419 CHECK(surface); 419 CHECK(surface);
420 MainThreadTaskRunner()->PostTask( 420 MainThreadTaskRunner()->PostTask(
421 FROM_HERE, 421 FROM_HERE,
422 base::Bind(&LayerTreeHostClientTakeAwayOutputSurface::MakeVisible, 422 base::Bind(&LayerTreeHostClientTakeAwayOutputSurface::MakeVisible,
423 base::Unretained(this))); 423 base::Unretained(this)));
424 } 424 }
425 425
426 void DidInitializeOutputSurface() override { 426 void DidInitializeOutputSurface() override {
427 EXPECT_TRUE(layer_tree_host()->visible()); 427 EXPECT_TRUE(layer_tree_host()->visible());
428 if (setos_counter_ == 1) { 428 if (setos_counter_ == 1) {
429 MainThreadTaskRunner()->PostTask( 429 MainThreadTaskRunner()->PostTask(
430 FROM_HERE, base::Bind(&LayerTreeHostClientTakeAwayOutputSurface:: 430 FROM_HERE, base::Bind(&LayerTreeHostClientTakeAwayOutputSurface::
431 HideAndReleaseOutputSurface, 431 HideAndReleaseOutputSurface,
432 base::Unretained(this))); 432 base::Unretained(this)));
433 } else { 433 } else {
434 EndTest(); 434 EndTest();
435 } 435 }
436 } 436 }
437 437
438 void MakeVisible() { 438 void MakeVisible() {
439 EXPECT_TRUE(layer_tree_host()->proxy()->IsMainThread()); 439 EXPECT_TRUE(layer_tree_host()->task_runner_provider()->IsMainThread());
440 layer_tree_host()->SetVisible(true); 440 layer_tree_host()->SetVisible(true);
441 } 441 }
442 442
443 void AfterTest() override {} 443 void AfterTest() override {}
444 444
445 int setos_counter_; 445 int setos_counter_;
446 }; 446 };
447 447
448 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostClientTakeAwayOutputSurface); 448 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostClientTakeAwayOutputSurface);
449 449
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
717 void BeginTest() override { PostSetNeedsCommitToMainThread(); } 717 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
718 718
719 void PostEvictTextures() { 719 void PostEvictTextures() {
720 if (HasImplThread()) { 720 if (HasImplThread()) {
721 ImplThreadTaskRunner()->PostTask( 721 ImplThreadTaskRunner()->PostTask(
722 FROM_HERE, 722 FROM_HERE,
723 base::Bind(&LayerTreeHostContextTestLostContextAndEvictTextures:: 723 base::Bind(&LayerTreeHostContextTestLostContextAndEvictTextures::
724 EvictTexturesOnImplThread, 724 EvictTexturesOnImplThread,
725 base::Unretained(this))); 725 base::Unretained(this)));
726 } else { 726 } else {
727 DebugScopedSetImplThread impl(proxy()); 727 DebugScopedSetImplThread impl(task_runner_provider());
728 EvictTexturesOnImplThread(); 728 EvictTexturesOnImplThread();
729 } 729 }
730 } 730 }
731 731
732 void EvictTexturesOnImplThread() { 732 void EvictTexturesOnImplThread() {
733 impl_host_->EvictTexturesForTesting(); 733 impl_host_->EvictTexturesForTesting();
734 734
735 if (lose_after_evict_) { 735 if (lose_after_evict_) {
736 LoseContext(); 736 LoseContext();
737 lost_context_ = true; 737 lost_context_ = true;
(...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after
1217 // work on the main thread in DidCommit but that is unsuitable because 1217 // work on the main thread in DidCommit but that is unsuitable because
1218 // the main thread work for these tests must happen after 1218 // the main thread work for these tests must happen after
1219 // DidActivateTreeOnThread, which happens after DidCommit with impl-side 1219 // DidActivateTreeOnThread, which happens after DidCommit with impl-side
1220 // painting. 1220 // painting.
1221 virtual void StepCompleteOnMainThread(int time_step) = 0; 1221 virtual void StepCompleteOnMainThread(int time_step) = 0;
1222 1222
1223 // Called after DidActivateTreeOnThread. If this is done during the commit, 1223 // Called after DidActivateTreeOnThread. If this is done during the commit,
1224 // the call to StepCompleteOnMainThread will not occur until after 1224 // the call to StepCompleteOnMainThread will not occur until after
1225 // the commit completes, because the main thread is blocked. 1225 // the commit completes, because the main thread is blocked.
1226 void PostStepCompleteToMainThread() { 1226 void PostStepCompleteToMainThread() {
1227 proxy()->MainThreadTaskRunner()->PostTask( 1227 task_runner_provider()->MainThreadTaskRunner()->PostTask(
1228 FROM_HERE, 1228 FROM_HERE,
1229 base::Bind(&UIResourceLostTest::StepCompleteOnMainThreadInternal, 1229 base::Bind(&UIResourceLostTest::StepCompleteOnMainThreadInternal,
1230 base::Unretained(this), 1230 base::Unretained(this), time_step_));
1231 time_step_));
1232 } 1231 }
1233 1232
1234 void PostLoseContextToImplThread() { 1233 void PostLoseContextToImplThread() {
1235 EXPECT_TRUE(layer_tree_host()->proxy()->IsMainThread()); 1234 EXPECT_TRUE(layer_tree_host()->task_runner_provider()->IsMainThread());
1236 ImplThreadTaskRunner()->PostTask( 1235 ImplThreadTaskRunner()->PostTask(
1237 FROM_HERE, 1236 FROM_HERE,
1238 base::Bind(&LayerTreeHostContextTest::LoseContext, 1237 base::Bind(&LayerTreeHostContextTest::LoseContext,
1239 base::Unretained(this))); 1238 base::Unretained(this)));
1240 } 1239 }
1241 1240
1242 protected: 1241 protected:
1243 int time_step_; 1242 int time_step_;
1244 scoped_ptr<FakeScopedUIResource> ui_resource_; 1243 scoped_ptr<FakeScopedUIResource> ui_resource_;
1245 1244
1246 private: 1245 private:
1247 void StepCompleteOnMainThreadInternal(int step) { 1246 void StepCompleteOnMainThreadInternal(int step) {
1248 EXPECT_TRUE(layer_tree_host()->proxy()->IsMainThread()); 1247 EXPECT_TRUE(layer_tree_host()->task_runner_provider()->IsMainThread());
1249 StepCompleteOnMainThread(step); 1248 StepCompleteOnMainThread(step);
1250 } 1249 }
1251 }; 1250 };
1252 1251
1253 class UIResourceLostTestSimple : public UIResourceLostTest { 1252 class UIResourceLostTestSimple : public UIResourceLostTest {
1254 public: 1253 public:
1255 // This is called when the new layer tree has been activated. 1254 // This is called when the new layer tree has been activated.
1256 virtual void StepCompleteOnImplThread(LayerTreeHostImpl* impl) = 0; 1255 virtual void StepCompleteOnImplThread(LayerTreeHostImpl* impl) = 0;
1257 1256
1258 void DidActivateTreeOnThread(LayerTreeHostImpl* impl) override { 1257 void DidActivateTreeOnThread(LayerTreeHostImpl* impl) override {
1259 StepCompleteOnImplThread(impl); 1258 StepCompleteOnImplThread(impl);
1260 PostStepCompleteToMainThread(); 1259 PostStepCompleteToMainThread();
1261 ++time_step_; 1260 ++time_step_;
1262 } 1261 }
1263 }; 1262 };
1264 1263
1265 // Losing context after an UI resource has been created. 1264 // Losing context after an UI resource has been created.
1266 class UIResourceLostAfterCommit : public UIResourceLostTestSimple { 1265 class UIResourceLostAfterCommit : public UIResourceLostTestSimple {
1267 public: 1266 public:
1268 void StepCompleteOnMainThread(int step) override { 1267 void StepCompleteOnMainThread(int step) override {
1269 EXPECT_TRUE(layer_tree_host()->proxy()->IsMainThread()); 1268 EXPECT_TRUE(layer_tree_host()->task_runner_provider()->IsMainThread());
1270 switch (step) { 1269 switch (step) {
1271 case 0: 1270 case 0:
1272 ui_resource_ = FakeScopedUIResource::Create(layer_tree_host()); 1271 ui_resource_ = FakeScopedUIResource::Create(layer_tree_host());
1273 // Expects a valid UIResourceId. 1272 // Expects a valid UIResourceId.
1274 EXPECT_NE(0, ui_resource_->id()); 1273 EXPECT_NE(0, ui_resource_->id());
1275 PostSetNeedsCommitToMainThread(); 1274 PostSetNeedsCommitToMainThread();
1276 break; 1275 break;
1277 case 4: 1276 case 4:
1278 // Release resource before ending the test. 1277 // Release resource before ending the test.
1279 ui_resource_ = nullptr; 1278 ui_resource_ = nullptr;
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
1414 UIResourceId test_id0_; 1413 UIResourceId test_id0_;
1415 UIResourceId test_id1_; 1414 UIResourceId test_id1_;
1416 }; 1415 };
1417 1416
1418 SINGLE_AND_MULTI_THREAD_TEST_F(UIResourceLostBeforeCommit); 1417 SINGLE_AND_MULTI_THREAD_TEST_F(UIResourceLostBeforeCommit);
1419 1418
1420 // Losing UI resource before the pending trees is activated but after the 1419 // Losing UI resource before the pending trees is activated but after the
1421 // commit. Impl-side-painting only. 1420 // commit. Impl-side-painting only.
1422 class UIResourceLostBeforeActivateTree : public UIResourceLostTest { 1421 class UIResourceLostBeforeActivateTree : public UIResourceLostTest {
1423 void StepCompleteOnMainThread(int step) override { 1422 void StepCompleteOnMainThread(int step) override {
1424 EXPECT_TRUE(layer_tree_host()->proxy()->IsMainThread()); 1423 EXPECT_TRUE(layer_tree_host()->task_runner_provider()->IsMainThread());
1425 switch (step) { 1424 switch (step) {
1426 case 0: 1425 case 0:
1427 ui_resource_ = FakeScopedUIResource::Create(layer_tree_host()); 1426 ui_resource_ = FakeScopedUIResource::Create(layer_tree_host());
1428 PostSetNeedsCommitToMainThread(); 1427 PostSetNeedsCommitToMainThread();
1429 break; 1428 break;
1430 case 3: 1429 case 3:
1431 test_id_ = ui_resource_->id(); 1430 test_id_ = ui_resource_->id();
1432 ui_resource_ = nullptr; 1431 ui_resource_ = nullptr;
1433 PostSetNeedsCommitToMainThread(); 1432 PostSetNeedsCommitToMainThread();
1434 break; 1433 break;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1497 private: 1496 private:
1498 UIResourceId test_id_; 1497 UIResourceId test_id_;
1499 }; 1498 };
1500 1499
1501 SINGLE_AND_MULTI_THREAD_TEST_F(UIResourceLostBeforeActivateTree); 1500 SINGLE_AND_MULTI_THREAD_TEST_F(UIResourceLostBeforeActivateTree);
1502 1501
1503 // Resources evicted explicitly and by visibility changes. 1502 // Resources evicted explicitly and by visibility changes.
1504 class UIResourceLostEviction : public UIResourceLostTestSimple { 1503 class UIResourceLostEviction : public UIResourceLostTestSimple {
1505 public: 1504 public:
1506 void StepCompleteOnMainThread(int step) override { 1505 void StepCompleteOnMainThread(int step) override {
1507 EXPECT_TRUE(layer_tree_host()->proxy()->IsMainThread()); 1506 EXPECT_TRUE(layer_tree_host()->task_runner_provider()->IsMainThread());
1508 switch (step) { 1507 switch (step) {
1509 case 0: 1508 case 0:
1510 ui_resource_ = FakeScopedUIResource::Create(layer_tree_host()); 1509 ui_resource_ = FakeScopedUIResource::Create(layer_tree_host());
1511 EXPECT_NE(0, ui_resource_->id()); 1510 EXPECT_NE(0, ui_resource_->id());
1512 PostSetNeedsCommitToMainThread(); 1511 PostSetNeedsCommitToMainThread();
1513 break; 1512 break;
1514 case 2: 1513 case 2:
1515 // Make the tree not visible. 1514 // Make the tree not visible.
1516 PostSetVisibleToMainThread(false); 1515 PostSetVisibleToMainThread(false);
1517 break; 1516 break;
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
1623 void AfterTest() override {} 1622 void AfterTest() override {}
1624 1623
1625 bool deferred_; 1624 bool deferred_;
1626 }; 1625 };
1627 1626
1628 SINGLE_AND_MULTI_THREAD_TEST_F( 1627 SINGLE_AND_MULTI_THREAD_TEST_F(
1629 LayerTreeHostContextTestLoseAfterSendingBeginMainFrame); 1628 LayerTreeHostContextTestLoseAfterSendingBeginMainFrame);
1630 1629
1631 } // namespace 1630 } // namespace
1632 } // namespace cc 1631 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_unittest.cc ('k') | cc/trees/layer_tree_host_unittest_copyrequest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698