summaryrefslogtreecommitdiffstats
path: root/cc/trees/layer_tree_host_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'cc/trees/layer_tree_host_unittest.cc')
-rw-r--r--cc/trees/layer_tree_host_unittest.cc92
1 files changed, 56 insertions, 36 deletions
diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc
index ab1224e..7378694 100644
--- a/cc/trees/layer_tree_host_unittest.cc
+++ b/cc/trees/layer_tree_host_unittest.cc
@@ -2029,22 +2029,33 @@ SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestContinuousInvalidate);
class LayerTreeHostTestDeferCommits : public LayerTreeHostTest {
public:
LayerTreeHostTestDeferCommits()
- : num_commits_deferred_(0), num_complete_commits_(0) {}
+ : num_will_begin_impl_frame_(0),
+ num_send_begin_main_frame_(0) {}
void BeginTest() override { PostSetNeedsCommitToMainThread(); }
- void DidDeferCommit() override {
- num_commits_deferred_++;
- layer_tree_host()->SetDeferCommits(false);
+ void WillBeginImplFrame(const BeginFrameArgs& args) override {
+ num_will_begin_impl_frame_++;
+ switch (num_will_begin_impl_frame_) {
+ case 1:
+ break;
+ case 2:
+ PostSetNeedsCommitToMainThread();
+ break;
+ case 3:
+ PostSetDeferCommitsToMainThread(false);
+ break;
+ default:
+ NOTREACHED();
+ break;
+ }
}
- void DidCommit() override {
- num_complete_commits_++;
- switch (num_complete_commits_) {
+ void ScheduledActionSendBeginMainFrame() override {
+ num_send_begin_main_frame_++;
+ switch (num_send_begin_main_frame_) {
case 1:
- EXPECT_EQ(0, num_commits_deferred_);
- layer_tree_host()->SetDeferCommits(true);
- PostSetNeedsCommitToMainThread();
+ PostSetDeferCommitsToMainThread(true);
break;
case 2:
EndTest();
@@ -2056,13 +2067,13 @@ class LayerTreeHostTestDeferCommits : public LayerTreeHostTest {
}
void AfterTest() override {
- EXPECT_EQ(1, num_commits_deferred_);
- EXPECT_EQ(2, num_complete_commits_);
+ EXPECT_GE(3, num_will_begin_impl_frame_);
+ EXPECT_EQ(2, num_send_begin_main_frame_);
}
private:
- int num_commits_deferred_;
- int num_complete_commits_;
+ int num_will_begin_impl_frame_;
+ int num_send_begin_main_frame_;
};
SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestDeferCommits);
@@ -4798,22 +4809,24 @@ class LayerTreeHostTestKeepSwapPromise : public LayerTreeTest {
SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestKeepSwapPromise);
-class LayerTreeHostTestBreakSwapPromiseForVisibilityAbortedCommit
+class LayerTreeHostTestBreakSwapPromiseForVisibility
: public LayerTreeHostTest {
protected:
void BeginTest() override { PostSetNeedsCommitToMainThread(); }
- void DidCommit() override {
- layer_tree_host()->SetDeferCommits(true);
- layer_tree_host()->SetNeedsCommit();
- }
-
- void DidDeferCommit() override {
+ void SetVisibleFalseAndQueueSwapPromise() {
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 ScheduledActionWillSendBeginMainFrame() override {
+ MainThreadTaskRunner()->PostTask(
+ FROM_HERE,
+ base::Bind(&LayerTreeHostTestBreakSwapPromiseForVisibility
+ ::SetVisibleFalseAndQueueSwapPromise,
+ base::Unretained(this)));
}
void BeginMainFrameAbortedOnThread(LayerTreeHostImpl* host_impl,
@@ -4834,27 +4847,33 @@ class LayerTreeHostTestBreakSwapPromiseForVisibilityAbortedCommit
TestSwapPromiseResult swap_promise_result_;
};
-SINGLE_AND_MULTI_THREAD_TEST_F(
- LayerTreeHostTestBreakSwapPromiseForVisibilityAbortedCommit);
+SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestBreakSwapPromiseForVisibility);
-class LayerTreeHostTestBreakSwapPromiseForContextAbortedCommit
- : public LayerTreeHostTest {
+class LayerTreeHostTestBreakSwapPromiseForContext : public LayerTreeHostTest {
protected:
- void BeginTest() override { PostSetNeedsCommitToMainThread(); }
-
- void DidCommit() override {
- if (TestEnded())
- return;
- layer_tree_host()->SetDeferCommits(true);
- layer_tree_host()->SetNeedsCommit();
+ LayerTreeHostTestBreakSwapPromiseForContext()
+ : output_surface_lost_triggered_(false) {
}
- void DidDeferCommit() override {
+ void BeginTest() override { PostSetNeedsCommitToMainThread(); }
+
+ void LoseOutputSurfaceAndQueueSwapPromise() {
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 ScheduledActionWillSendBeginMainFrame() override {
+ if (output_surface_lost_triggered_)
+ return;
+ output_surface_lost_triggered_ = true;
+
+ MainThreadTaskRunner()->PostTask(
+ FROM_HERE,
+ base::Bind(&LayerTreeHostTestBreakSwapPromiseForContext
+ ::LoseOutputSurfaceAndQueueSwapPromise,
+ base::Unretained(this)));
}
void BeginMainFrameAbortedOnThread(LayerTreeHostImpl* host_impl,
@@ -4874,11 +4893,12 @@ class LayerTreeHostTestBreakSwapPromiseForContextAbortedCommit
}
}
+ bool output_surface_lost_triggered_;
TestSwapPromiseResult swap_promise_result_;
};
SINGLE_AND_MULTI_THREAD_TEST_F(
- LayerTreeHostTestBreakSwapPromiseForContextAbortedCommit);
+ LayerTreeHostTestBreakSwapPromiseForContext);
class SimpleSwapPromiseMonitor : public SwapPromiseMonitor {
public: