diff options
-rw-r--r-- | cc/trees/layer_tree_host_unittest.cc | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc index ab40684..df01000 100644 --- a/cc/trees/layer_tree_host_unittest.cc +++ b/cc/trees/layer_tree_host_unittest.cc @@ -2359,6 +2359,75 @@ class LayerTreeHostTestDeferCommits : public LayerTreeHostTest { SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestDeferCommits); +class LayerTreeHostTestCompositeImmediatelyStateTransitions + : public LayerTreeHostTest { + public: + enum { + kInvalid, + kStartedTest, + kStartedImplFrame, + kStartedMainFrame, + kStartedCommit, + kCompletedCommit, + kCompletedMainFrame, + kCompletedImplFrame, + }; + + LayerTreeHostTestCompositeImmediatelyStateTransitions() + : current_state_(kInvalid), current_begin_frame_args_() {} + + void InitializeSettings(LayerTreeSettings* settings) override { + settings->single_thread_proxy_scheduler = false; + } + + void BeginTest() override { + current_state_ = kStartedTest; + PostCompositeImmediatelyToMainThread(); + } + + void WillBeginImplFrameOnThread(LayerTreeHostImpl* host_impl, + const BeginFrameArgs& args) override { + EXPECT_EQ(current_state_, kStartedTest); + current_state_ = kStartedImplFrame; + + EXPECT_FALSE(current_begin_frame_args_.IsValid()); + EXPECT_TRUE(args.IsValid()); + current_begin_frame_args_ = args; + } + void WillBeginMainFrame() override { + EXPECT_EQ(current_state_, kStartedImplFrame); + current_state_ = kStartedMainFrame; + } + void BeginMainFrame(const BeginFrameArgs& args) override { + EXPECT_EQ(current_state_, kStartedMainFrame); + EXPECT_EQ(args.frame_time, current_begin_frame_args_.frame_time); + } + void BeginCommitOnThread(LayerTreeHostImpl* host_impl) override { + EXPECT_EQ(current_state_, kStartedMainFrame); + current_state_ = kStartedCommit; + } + void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override { + EXPECT_EQ(current_state_, kStartedCommit); + current_state_ = kCompletedCommit; + } + void DidBeginMainFrame() override { + EXPECT_EQ(current_state_, kCompletedCommit); + current_state_ = kCompletedMainFrame; + } + void DidFinishImplFrameOnThread(LayerTreeHostImpl* host_impl) override { + EXPECT_EQ(current_state_, kCompletedMainFrame); + current_state_ = kCompletedImplFrame; + EndTest(); + } + void AfterTest() override { EXPECT_EQ(current_state_, kCompletedImplFrame); } + + private: + int current_state_; + BeginFrameArgs current_begin_frame_args_; +}; + +SINGLE_THREAD_TEST_F(LayerTreeHostTestCompositeImmediatelyStateTransitions); + class LayerTreeHostWithProxy : public LayerTreeHost { public: LayerTreeHostWithProxy(FakeLayerTreeHostClient* client, |