| Index: cc/trees/layer_tree_host_unittest_proxy.cc
|
| diff --git a/cc/trees/layer_tree_host_unittest_proxy.cc b/cc/trees/layer_tree_host_unittest_proxy.cc
|
| index 27e28354534959926f3078947f4d95cb6afe10bf..3202983920f34facf0bf655d2e95a0a7a8d7789f 100644
|
| --- a/cc/trees/layer_tree_host_unittest_proxy.cc
|
| +++ b/cc/trees/layer_tree_host_unittest_proxy.cc
|
| @@ -420,4 +420,79 @@ class LayerTreeHostProxyTestCommitWaitsForActivationMFBA
|
|
|
| MULTI_THREAD_TEST_F(LayerTreeHostProxyTestCommitWaitsForActivationMFBA);
|
|
|
| +// Test for activation time passed in BeginFrameArgs.
|
| +class LayerTreeHostProxyTestActivationTime : public LayerTreeHostProxyTest {
|
| + protected:
|
| + LayerTreeHostProxyTestActivationTime() = default;
|
| +
|
| + void BeginTest() override { PostSetNeedsCommitToMainThread(); }
|
| +
|
| + void InitializeSettings(LayerTreeSettings* settings) override {
|
| + settings->main_frame_before_activation_enabled = true;
|
| + LayerTreeHostProxyTest::InitializeSettings(settings);
|
| + }
|
| +
|
| + void DidSendBeginMainFrameOnThread(LayerTreeHostImpl* impl) override {
|
| + if (activate_blocked_) {
|
| + impl->BlockNotifyReadyToActivateForTesting(false);
|
| + {
|
| + base::AutoLock hold(activate_blocked_lock_);
|
| + activate_blocked_ = false;
|
| + }
|
| + }
|
| + }
|
| +
|
| + void BeginMainFrame(const BeginFrameArgs& args) override {
|
| + switch (args.source_frame_number) {
|
| + case 0:
|
| + // Initial frame, no activation yet.
|
| + EXPECT_EQ(0UL, args.ready_to_activate_time.size());
|
| + break;
|
| + case 1:
|
| + // Frame #1, activation for Frame #0.
|
| + EXPECT_EQ(1UL, args.ready_to_activate_time.size());
|
| + EXPECT_EQ(0UL, args.ready_to_activate_time[0].first);
|
| + break;
|
| + case 2:
|
| + // Frame #2, activation is delayed in BeginCommitOnThread.
|
| + EXPECT_EQ(0UL, args.ready_to_activate_time.size());
|
| + break;
|
| + case 3:
|
| + // Frame #3, received activation for Frame #1 & #2.
|
| + EXPECT_EQ(2UL, args.ready_to_activate_time.size());
|
| + EXPECT_EQ(1UL, args.ready_to_activate_time[0].first);
|
| + EXPECT_EQ(2UL, args.ready_to_activate_time[1].first);
|
| + EndTest();
|
| + }
|
| + }
|
| +
|
| + void DidActivateTreeOnThread(LayerTreeHostImpl* impl) override {
|
| + if (impl->sync_tree()->source_frame_number() == 0 ||
|
| + impl->sync_tree()->source_frame_number() == 2)
|
| + PostSetNeedsCommitToMainThread(); // invoke for Frame #3
|
| + }
|
| +
|
| + void CommitCompleteOnThread(LayerTreeHostImpl* impl) override {
|
| + // Block activation for Frame #1
|
| + if (impl->sync_tree()->source_frame_number() == 1) {
|
| + impl->BlockNotifyReadyToActivateForTesting(true);
|
| + PostSetNeedsCommitToMainThread();
|
| + {
|
| + base::AutoLock hold(activate_blocked_lock_);
|
| + activate_blocked_ = true;
|
| + }
|
| + }
|
| + }
|
| +
|
| + void AfterTest() override {}
|
| +
|
| + private:
|
| + base::Lock activate_blocked_lock_;
|
| + bool activate_blocked_ = false;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(LayerTreeHostProxyTestActivationTime);
|
| +};
|
| +
|
| +MULTI_THREAD_TEST_F(LayerTreeHostProxyTestActivationTime);
|
| +
|
| } // namespace cc
|
|
|