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

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

Issue 1126963006: Move VISUAL_STATE promise to activation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update documentation Created 5 years, 7 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 unified diff | Download patch
« no previous file with comments | « cc/trees/layer_tree_host.cc ('k') | cc/trees/layer_tree_impl.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 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 <algorithm> 7 #include <algorithm>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 4909 matching lines...) Expand 10 before | Expand all | Expand 10 after
4920 size_t second_output_surface_memory_limit_; 4920 size_t second_output_surface_memory_limit_;
4921 FakeContentLayerClient client_; 4921 FakeContentLayerClient client_;
4922 scoped_refptr<Layer> root_; 4922 scoped_refptr<Layer> root_;
4923 }; 4923 };
4924 4924
4925 SINGLE_AND_MULTI_THREAD_TEST_F( 4925 SINGLE_AND_MULTI_THREAD_TEST_F(
4926 LayerTreeHostTestSetMemoryPolicyOnLostOutputSurface); 4926 LayerTreeHostTestSetMemoryPolicyOnLostOutputSurface);
4927 4927
4928 struct TestSwapPromiseResult { 4928 struct TestSwapPromiseResult {
4929 TestSwapPromiseResult() 4929 TestSwapPromiseResult()
4930 : did_swap_called(false), 4930 : did_activate_called(false),
4931 did_swap_called(false),
4931 did_not_swap_called(false), 4932 did_not_swap_called(false),
4932 dtor_called(false), 4933 dtor_called(false),
4933 reason(SwapPromise::DID_NOT_SWAP_UNKNOWN) {} 4934 reason(SwapPromise::COMMIT_FAILS) {}
4934 4935
4936 bool did_activate_called;
4935 bool did_swap_called; 4937 bool did_swap_called;
4936 bool did_not_swap_called; 4938 bool did_not_swap_called;
4937 bool dtor_called; 4939 bool dtor_called;
4938 SwapPromise::DidNotSwapReason reason; 4940 SwapPromise::DidNotSwapReason reason;
4939 base::Lock lock; 4941 base::Lock lock;
4940 }; 4942 };
4941 4943
4942 class TestSwapPromise : public SwapPromise { 4944 class TestSwapPromise : public SwapPromise {
4943 public: 4945 public:
4944 explicit TestSwapPromise(TestSwapPromiseResult* result) : result_(result) {} 4946 explicit TestSwapPromise(TestSwapPromiseResult* result) : result_(result) {}
4945 4947
4946 ~TestSwapPromise() override { 4948 ~TestSwapPromise() override {
4947 base::AutoLock lock(result_->lock); 4949 base::AutoLock lock(result_->lock);
4948 result_->dtor_called = true; 4950 result_->dtor_called = true;
4949 } 4951 }
4950 4952
4953 void DidActivate() override {
4954 base::AutoLock lock(result_->lock);
4955 EXPECT_FALSE(result_->did_swap_called);
4956 EXPECT_FALSE(result_->did_not_swap_called);
boliu 2015/05/13 16:07:46 EXPECT_FALSE(did_activate_called) as well
Tobias Sargeant 2015/05/14 11:31:59 Done.
4957 result_->did_activate_called = true;
4958 }
4959
4951 void DidSwap(CompositorFrameMetadata* metadata) override { 4960 void DidSwap(CompositorFrameMetadata* metadata) override {
4952 base::AutoLock lock(result_->lock); 4961 base::AutoLock lock(result_->lock);
4962 EXPECT_TRUE(result_->did_activate_called);
4953 EXPECT_FALSE(result_->did_swap_called); 4963 EXPECT_FALSE(result_->did_swap_called);
4954 EXPECT_FALSE(result_->did_not_swap_called); 4964 EXPECT_FALSE(result_->did_not_swap_called);
4955 result_->did_swap_called = true; 4965 result_->did_swap_called = true;
4956 } 4966 }
4957 4967
4958 void DidNotSwap(DidNotSwapReason reason) override { 4968 void DidNotSwap(DidNotSwapReason reason) override {
4959 base::AutoLock lock(result_->lock); 4969 base::AutoLock lock(result_->lock);
4960 EXPECT_FALSE(result_->did_swap_called); 4970 EXPECT_FALSE(result_->did_swap_called);
4961 EXPECT_FALSE(result_->did_not_swap_called); 4971 EXPECT_FALSE(result_->did_not_swap_called);
4972 EXPECT_FALSE(reason == DidNotSwapReason::ACTIVATION_FAILS &&
boliu 2015/05/13 16:07:46 There is DCHECK_IMPLIES, could use that to make th
Tobias Sargeant 2015/05/14 11:31:59 I think that it's a good idea to stick with gtest-
4973 result_->did_activate_called);
4962 result_->did_not_swap_called = true; 4974 result_->did_not_swap_called = true;
4963 result_->reason = reason; 4975 result_->reason = reason;
4964 } 4976 }
4965 4977
4966 int64 TraceId() const override { return 0; } 4978 int64 TraceId() const override { return 0; }
4967 4979
4968 private: 4980 private:
4969 // Not owned. 4981 // Not owned.
4970 TestSwapPromiseResult* result_; 4982 TestSwapPromiseResult* result_;
4971 }; 4983 };
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
5012 // the promise. 5024 // the promise.
5013 base::AutoLock lock(swap_promise_result_[0].lock); 5025 base::AutoLock lock(swap_promise_result_[0].lock);
5014 EXPECT_TRUE(swap_promise_result_[0].did_swap_called); 5026 EXPECT_TRUE(swap_promise_result_[0].did_swap_called);
5015 EXPECT_FALSE(swap_promise_result_[0].did_not_swap_called); 5027 EXPECT_FALSE(swap_promise_result_[0].did_not_swap_called);
5016 EXPECT_TRUE(swap_promise_result_[0].dtor_called); 5028 EXPECT_TRUE(swap_promise_result_[0].dtor_called);
5017 } 5029 }
5018 5030
5019 { 5031 {
5020 // The second commit is aborted since it contains no updates. 5032 // The second commit is aborted since it contains no updates.
5021 base::AutoLock lock(swap_promise_result_[1].lock); 5033 base::AutoLock lock(swap_promise_result_[1].lock);
5034 EXPECT_FALSE(swap_promise_result_[1].did_activate_called);
5022 EXPECT_FALSE(swap_promise_result_[1].did_swap_called); 5035 EXPECT_FALSE(swap_promise_result_[1].did_swap_called);
5023 EXPECT_TRUE(swap_promise_result_[1].did_not_swap_called); 5036 EXPECT_TRUE(swap_promise_result_[1].did_not_swap_called);
5024 EXPECT_EQ(SwapPromise::COMMIT_NO_UPDATE, swap_promise_result_[1].reason); 5037 EXPECT_EQ(SwapPromise::COMMIT_NO_UPDATE, swap_promise_result_[1].reason);
5025 EXPECT_TRUE(swap_promise_result_[1].dtor_called); 5038 EXPECT_TRUE(swap_promise_result_[1].dtor_called);
5026 } 5039 }
5027 5040
5028 { 5041 {
5029 // The last commit completes but it does not cause swap buffer because 5042 // The last commit completes but it does not cause swap buffer because
5030 // there is no damage in the frame data. 5043 // there is no damage in the frame data.
5031 base::AutoLock lock(swap_promise_result_[2].lock); 5044 base::AutoLock lock(swap_promise_result_[2].lock);
5045 EXPECT_TRUE(swap_promise_result_[2].did_activate_called);
5032 EXPECT_FALSE(swap_promise_result_[2].did_swap_called); 5046 EXPECT_FALSE(swap_promise_result_[2].did_swap_called);
5033 EXPECT_TRUE(swap_promise_result_[2].did_not_swap_called); 5047 EXPECT_TRUE(swap_promise_result_[2].did_not_swap_called);
5034 EXPECT_EQ(SwapPromise::SWAP_FAILS, swap_promise_result_[2].reason); 5048 EXPECT_EQ(SwapPromise::SWAP_FAILS, swap_promise_result_[2].reason);
5035 EXPECT_TRUE(swap_promise_result_[2].dtor_called); 5049 EXPECT_TRUE(swap_promise_result_[2].dtor_called);
5036 } 5050 }
5037 } 5051 }
5038 5052
5039 int commit_count_; 5053 int commit_count_;
5040 int commit_complete_count_; 5054 int commit_complete_count_;
5041 TestSwapPromiseResult swap_promise_result_[3]; 5055 TestSwapPromiseResult swap_promise_result_[3];
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
5120 } 5134 }
5121 5135
5122 void BeginMainFrameAbortedOnThread(LayerTreeHostImpl* host_impl, 5136 void BeginMainFrameAbortedOnThread(LayerTreeHostImpl* host_impl,
5123 CommitEarlyOutReason reason) override { 5137 CommitEarlyOutReason reason) override {
5124 EndTest(); 5138 EndTest();
5125 } 5139 }
5126 5140
5127 void AfterTest() override { 5141 void AfterTest() override {
5128 { 5142 {
5129 base::AutoLock lock(swap_promise_result_.lock); 5143 base::AutoLock lock(swap_promise_result_.lock);
5144 EXPECT_FALSE(swap_promise_result_.did_activate_called);
5130 EXPECT_FALSE(swap_promise_result_.did_swap_called); 5145 EXPECT_FALSE(swap_promise_result_.did_swap_called);
5131 EXPECT_TRUE(swap_promise_result_.did_not_swap_called); 5146 EXPECT_TRUE(swap_promise_result_.did_not_swap_called);
5132 EXPECT_EQ(SwapPromise::COMMIT_FAILS, swap_promise_result_.reason); 5147 EXPECT_EQ(SwapPromise::COMMIT_FAILS, swap_promise_result_.reason);
5133 EXPECT_TRUE(swap_promise_result_.dtor_called); 5148 EXPECT_TRUE(swap_promise_result_.dtor_called);
5134 } 5149 }
5135 } 5150 }
5136 5151
5137 TestSwapPromiseResult swap_promise_result_; 5152 TestSwapPromiseResult swap_promise_result_;
5138 }; 5153 };
5139 5154
(...skipping 29 matching lines...) Expand all
5169 void BeginMainFrameAbortedOnThread(LayerTreeHostImpl* host_impl, 5184 void BeginMainFrameAbortedOnThread(LayerTreeHostImpl* host_impl,
5170 CommitEarlyOutReason reason) override { 5185 CommitEarlyOutReason reason) override {
5171 // This is needed so that the impl-thread state matches main-thread state. 5186 // This is needed so that the impl-thread state matches main-thread state.
5172 host_impl->DidLoseOutputSurface(); 5187 host_impl->DidLoseOutputSurface();
5173 EndTest(); 5188 EndTest();
5174 } 5189 }
5175 5190
5176 void AfterTest() override { 5191 void AfterTest() override {
5177 { 5192 {
5178 base::AutoLock lock(swap_promise_result_.lock); 5193 base::AutoLock lock(swap_promise_result_.lock);
5194 EXPECT_FALSE(swap_promise_result_.did_activate_called);
5179 EXPECT_FALSE(swap_promise_result_.did_swap_called); 5195 EXPECT_FALSE(swap_promise_result_.did_swap_called);
5180 EXPECT_TRUE(swap_promise_result_.did_not_swap_called); 5196 EXPECT_TRUE(swap_promise_result_.did_not_swap_called);
5181 EXPECT_EQ(SwapPromise::COMMIT_FAILS, swap_promise_result_.reason); 5197 EXPECT_EQ(SwapPromise::COMMIT_FAILS, swap_promise_result_.reason);
5182 EXPECT_TRUE(swap_promise_result_.dtor_called); 5198 EXPECT_TRUE(swap_promise_result_.dtor_called);
5183 } 5199 }
5184 } 5200 }
5185 5201
5186 bool output_surface_lost_triggered_; 5202 bool output_surface_lost_triggered_;
5187 TestSwapPromiseResult swap_promise_result_; 5203 TestSwapPromiseResult swap_promise_result_;
5188 }; 5204 };
(...skipping 633 matching lines...) Expand 10 before | Expand all | Expand 10 after
5822 { 5838 {
5823 base::AutoLock lock(swap_promise_result_[0].lock); 5839 base::AutoLock lock(swap_promise_result_[0].lock);
5824 EXPECT_TRUE(swap_promise_result_[0].did_swap_called); 5840 EXPECT_TRUE(swap_promise_result_[0].did_swap_called);
5825 EXPECT_FALSE(swap_promise_result_[0].did_not_swap_called); 5841 EXPECT_FALSE(swap_promise_result_[0].did_not_swap_called);
5826 EXPECT_TRUE(swap_promise_result_[0].dtor_called); 5842 EXPECT_TRUE(swap_promise_result_[0].dtor_called);
5827 } 5843 }
5828 5844
5829 // Second swap promise fails to swap. 5845 // Second swap promise fails to swap.
5830 { 5846 {
5831 base::AutoLock lock(swap_promise_result_[1].lock); 5847 base::AutoLock lock(swap_promise_result_[1].lock);
5848 EXPECT_TRUE(swap_promise_result_[1].did_activate_called);
5832 EXPECT_FALSE(swap_promise_result_[1].did_swap_called); 5849 EXPECT_FALSE(swap_promise_result_[1].did_swap_called);
5833 EXPECT_TRUE(swap_promise_result_[1].did_not_swap_called); 5850 EXPECT_TRUE(swap_promise_result_[1].did_not_swap_called);
5834 EXPECT_EQ(SwapPromise::SWAP_FAILS, swap_promise_result_[1].reason); 5851 EXPECT_EQ(SwapPromise::SWAP_FAILS, swap_promise_result_[1].reason);
5835 EXPECT_TRUE(swap_promise_result_[1].dtor_called); 5852 EXPECT_TRUE(swap_promise_result_[1].dtor_called);
5836 } 5853 }
5837 5854
5838 // Third swap promises also fails to swap (and draw). 5855 // Third swap promises also fails to swap (and draw).
5839 { 5856 {
5840 base::AutoLock lock(swap_promise_result_[2].lock); 5857 base::AutoLock lock(swap_promise_result_[2].lock);
5858 EXPECT_TRUE(swap_promise_result_[2].did_activate_called);
5841 EXPECT_FALSE(swap_promise_result_[2].did_swap_called); 5859 EXPECT_FALSE(swap_promise_result_[2].did_swap_called);
5842 EXPECT_TRUE(swap_promise_result_[2].did_not_swap_called); 5860 EXPECT_TRUE(swap_promise_result_[2].did_not_swap_called);
5843 EXPECT_EQ(SwapPromise::SWAP_FAILS, swap_promise_result_[2].reason); 5861 EXPECT_EQ(SwapPromise::SWAP_FAILS, swap_promise_result_[2].reason);
5844 EXPECT_TRUE(swap_promise_result_[2].dtor_called); 5862 EXPECT_TRUE(swap_promise_result_[2].dtor_called);
5845 } 5863 }
5846 } 5864 }
5847 5865
5848 int commit_count_; 5866 int commit_count_;
5849 TestSwapPromiseResult swap_promise_result_[3]; 5867 TestSwapPromiseResult swap_promise_result_[3];
5850 }; 5868 };
(...skipping 1335 matching lines...) Expand 10 before | Expand all | Expand 10 after
7186 void AfterTest() override {} 7204 void AfterTest() override {}
7187 7205
7188 scoped_refptr<FakePictureLayer> content_child_layer_; 7206 scoped_refptr<FakePictureLayer> content_child_layer_;
7189 FakeContentLayerClient client_; 7207 FakeContentLayerClient client_;
7190 }; 7208 };
7191 7209
7192 SINGLE_AND_MULTI_THREAD_TEST_F( 7210 SINGLE_AND_MULTI_THREAD_TEST_F(
7193 LayerTreeTestReflectionMaskLayerForSurfaceWithUnclippedChild); 7211 LayerTreeTestReflectionMaskLayerForSurfaceWithUnclippedChild);
7194 7212
7195 } // namespace cc 7213 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host.cc ('k') | cc/trees/layer_tree_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698