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

Unified Diff: cc/trees/layer_tree_host_unittest.cc

Issue 337693005: cc: Control defer_commits logic by Scheduler (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 5 years, 11 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_unittest.cc
diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc
index 50ace9b7d78c4b707cbab9db9c9611365e4dd967..0966bc5635e2cc7d1610e724546f794e717bda74 100644
--- a/cc/trees/layer_tree_host_unittest.cc
+++ b/cc/trees/layer_tree_host_unittest.cc
@@ -2033,12 +2033,19 @@ SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestContinuousInvalidate);
class LayerTreeHostTestDeferCommits : public LayerTreeHostTest {
public:
LayerTreeHostTestDeferCommits()
- : num_commits_deferred_(0), num_complete_commits_(0) {}
+ : num_complete_commits_(0),
+ num_will_begin_main_frame_(0) {}
void BeginTest() override { PostSetNeedsCommitToMainThread(); }
- void DidDeferCommit() override {
- num_commits_deferred_++;
+ void WillBeginMainFrame() override {
+ num_will_begin_main_frame_++;
+ }
+
+ void TestWillBeginMainFrameCallCount(
+ int expected_will_begin_main_frame_call_count) {
+ EXPECT_EQ(expected_will_begin_main_frame_call_count,
+ num_will_begin_main_frame_);
layer_tree_host()->SetDeferCommits(false);
}
@@ -2046,9 +2053,16 @@ class LayerTreeHostTestDeferCommits : public LayerTreeHostTest {
num_complete_commits_++;
switch (num_complete_commits_) {
case 1:
- EXPECT_EQ(0, num_commits_deferred_);
+ EXPECT_EQ(1, num_will_begin_main_frame_);
layer_tree_host()->SetDeferCommits(true);
PostSetNeedsCommitToMainThread();
+ // PostDelayedTask to check whether WillBeginMainFrame is called.
enne (OOO) 2015/01/23 01:35:21 This time delay is a little weird. Could you just
simonhong 2015/01/28 19:44:24 Done.
+ MainThreadTaskRunner()->PostDelayedTask(
+ FROM_HERE,
+ base::Bind(
+ &LayerTreeHostTestDeferCommits::TestWillBeginMainFrameCallCount,
+ base::Unretained(this), 1),
+ base::TimeDelta::FromMilliseconds(100));
break;
case 2:
EndTest();
@@ -2060,13 +2074,13 @@ class LayerTreeHostTestDeferCommits : public LayerTreeHostTest {
}
void AfterTest() override {
- EXPECT_EQ(1, num_commits_deferred_);
EXPECT_EQ(2, num_complete_commits_);
+ EXPECT_EQ(2, num_will_begin_main_frame_);
}
private:
- int num_commits_deferred_;
int num_complete_commits_;
+ int num_will_begin_main_frame_;
};
SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestDeferCommits);
@@ -4802,88 +4816,6 @@ class LayerTreeHostTestKeepSwapPromise : public LayerTreeTest {
SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestKeepSwapPromise);
-class LayerTreeHostTestBreakSwapPromiseForVisibilityAbortedCommit
- : public LayerTreeHostTest {
- protected:
- void BeginTest() override { PostSetNeedsCommitToMainThread(); }
-
- void DidCommit() override {
- layer_tree_host()->SetDeferCommits(true);
- layer_tree_host()->SetNeedsCommit();
- }
-
- void DidDeferCommit() override {
- layer_tree_host()->SetVisible(false);
- scoped_ptr<SwapPromise> swap_promise(
- new TestSwapPromise(&swap_promise_result_));
- layer_tree_host()->QueueSwapPromise(swap_promise.Pass());
- layer_tree_host()->SetDeferCommits(false);
- }
-
- void BeginMainFrameAbortedOnThread(LayerTreeHostImpl* host_impl,
- CommitEarlyOutReason reason) override {
- EndTest();
- }
-
- void AfterTest() override {
- {
- base::AutoLock lock(swap_promise_result_.lock);
- EXPECT_FALSE(swap_promise_result_.did_swap_called);
- EXPECT_TRUE(swap_promise_result_.did_not_swap_called);
- EXPECT_EQ(SwapPromise::COMMIT_FAILS, swap_promise_result_.reason);
- EXPECT_TRUE(swap_promise_result_.dtor_called);
- }
- }
-
- TestSwapPromiseResult swap_promise_result_;
-};
-
-SINGLE_AND_MULTI_THREAD_TEST_F(
- LayerTreeHostTestBreakSwapPromiseForVisibilityAbortedCommit);
-
-class LayerTreeHostTestBreakSwapPromiseForContextAbortedCommit
- : public LayerTreeHostTest {
- protected:
- void BeginTest() override { PostSetNeedsCommitToMainThread(); }
-
- void DidCommit() override {
- if (TestEnded())
- return;
- layer_tree_host()->SetDeferCommits(true);
- layer_tree_host()->SetNeedsCommit();
- }
-
- void DidDeferCommit() override {
- layer_tree_host()->DidLoseOutputSurface();
- scoped_ptr<SwapPromise> swap_promise(
- new TestSwapPromise(&swap_promise_result_));
- layer_tree_host()->QueueSwapPromise(swap_promise.Pass());
- layer_tree_host()->SetDeferCommits(false);
- }
-
- void BeginMainFrameAbortedOnThread(LayerTreeHostImpl* host_impl,
- CommitEarlyOutReason reason) override {
- // This is needed so that the impl-thread state matches main-thread state.
- host_impl->DidLoseOutputSurface();
- EndTest();
- }
-
- void AfterTest() override {
- {
- base::AutoLock lock(swap_promise_result_.lock);
- EXPECT_FALSE(swap_promise_result_.did_swap_called);
- EXPECT_TRUE(swap_promise_result_.did_not_swap_called);
- EXPECT_EQ(SwapPromise::COMMIT_FAILS, swap_promise_result_.reason);
- EXPECT_TRUE(swap_promise_result_.dtor_called);
- }
- }
-
- TestSwapPromiseResult swap_promise_result_;
-};
-
-SINGLE_AND_MULTI_THREAD_TEST_F(
- LayerTreeHostTestBreakSwapPromiseForContextAbortedCommit);
-
class SimpleSwapPromiseMonitor : public SwapPromiseMonitor {
public:
SimpleSwapPromiseMonitor(LayerTreeHost* layer_tree_host,

Powered by Google App Engine
This is Rietveld 408576698