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

Side by Side Diff: cc/layer_unittest.cc

Issue 11316297: Only do full tree sync if tree is actually changed, otherwise just push properties (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: extra newline Created 8 years 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 | Annotate | Revision Log
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/layer.h" 5 #include "cc/layer.h"
6 6
7 #include "cc/keyframed_animation_curve.h" 7 #include "cc/keyframed_animation_curve.h"
8 #include "cc/layer_impl.h" 8 #include "cc/layer_impl.h"
9 #include "cc/layer_painter.h" 9 #include "cc/layer_painter.h"
10 #include "cc/layer_tree_host.h" 10 #include "cc/layer_tree_host.h"
11 #include "cc/math_util.h" 11 #include "cc/math_util.h"
12 #include "cc/single_thread_proxy.h" 12 #include "cc/single_thread_proxy.h"
13 #include "cc/thread.h" 13 #include "cc/thread.h"
14 #include "cc/test/fake_layer_tree_host_client.h" 14 #include "cc/test/fake_layer_tree_host_client.h"
15 #include "cc/test/geometry_test_utils.h" 15 #include "cc/test/geometry_test_utils.h"
16 #include "testing/gmock/include/gmock/gmock.h" 16 #include "testing/gmock/include/gmock/gmock.h"
17 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
18 #include "ui/gfx/transform.h" 18 #include "ui/gfx/transform.h"
19 19
20 using namespace WebKitTests; 20 using ::testing::AnyNumber;
21 using ::testing::AtLeast;
21 using ::testing::Mock; 22 using ::testing::Mock;
23 using ::testing::StrictMock;
22 using ::testing::_; 24 using ::testing::_;
23 using ::testing::AtLeast;
24 using ::testing::AnyNumber;
25 25
26 #define EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(numTimesExpectedSetNeedsCom mit, codeToTest) do { \ 26 #define EXPECT_SET_NEEDS_COMMIT(expect, codeToTest) do { \
27 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times((numTimesExpectedS etNeedsCommit)); \ 27 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times((expect)); \
28 codeToTest; \ 28 codeToTest; \
29 Mock::VerifyAndClearExpectations(m_layerTreeHost.get()); \ 29 Mock::VerifyAndClearExpectations(m_layerTreeHost.get()); \
30 } while (0) 30 } while (0)
31 31
32 #define EXPECT_SET_NEEDS_FULL_TREE_SYNC(expect, codeToTest) do { \
33 EXPECT_CALL(*m_layerTreeHost, setNeedsFullTreeSync()).Times((expect)); \
34 codeToTest; \
35 Mock::VerifyAndClearExpectations(m_layerTreeHost.get()); \
36 } while (0)
37
38
32 namespace cc { 39 namespace cc {
33 namespace { 40 namespace {
34 41
35 class MockLayerImplTreeHost : public LayerTreeHost { 42 class MockLayerImplTreeHost : public LayerTreeHost {
36 public: 43 public:
37 MockLayerImplTreeHost() 44 MockLayerImplTreeHost()
38 : LayerTreeHost(&m_fakeClient, LayerTreeSettings()) 45 : LayerTreeHost(&m_fakeClient, LayerTreeSettings())
39 { 46 {
40 initialize(scoped_ptr<Thread>(NULL)); 47 initialize(scoped_ptr<Thread>(NULL));
41 } 48 }
42 49
43 MOCK_METHOD0(setNeedsCommit, void()); 50 MOCK_METHOD0(setNeedsCommit, void());
51 MOCK_METHOD0(setNeedsFullTreeSync, void());
44 52
45 private: 53 private:
46 FakeLayerImplTreeHostClient m_fakeClient; 54 FakeLayerImplTreeHostClient m_fakeClient;
47 }; 55 };
48 56
49 class MockLayerPainter : public LayerPainter { 57 class MockLayerPainter : public LayerPainter {
50 public: 58 public:
51 virtual void paint(SkCanvas*, const gfx::Rect&, gfx::RectF&) OVERRIDE { } 59 virtual void paint(SkCanvas*, const gfx::Rect&, gfx::RectF&) OVERRIDE { }
52 }; 60 };
53 61
54 62
55 class LayerTest : public testing::Test { 63 class LayerTest : public testing::Test {
56 public: 64 public:
57 LayerTest() 65 LayerTest()
58 { 66 {
59 } 67 }
60 68
61 protected: 69 protected:
62 virtual void SetUp() 70 virtual void SetUp()
63 { 71 {
64 m_layerTreeHost = scoped_ptr<MockLayerImplTreeHost>(new MockLayerImplTre eHost); 72 m_layerTreeHost.reset(new StrictMock<MockLayerImplTreeHost>);
65 } 73 }
66 74
67 virtual void TearDown() 75 virtual void TearDown()
68 { 76 {
69 Mock::VerifyAndClearExpectations(m_layerTreeHost.get()); 77 Mock::VerifyAndClearExpectations(m_layerTreeHost.get());
70 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times(AnyNumber()); 78 EXPECT_CALL(*m_layerTreeHost, setNeedsFullTreeSync()).Times(AnyNumber()) ;
71 m_parent = NULL; 79 m_parent = NULL;
72 m_child1 = NULL; 80 m_child1 = NULL;
73 m_child2 = NULL; 81 m_child2 = NULL;
74 m_child3 = NULL; 82 m_child3 = NULL;
75 m_grandChild1 = NULL; 83 m_grandChild1 = NULL;
76 m_grandChild2 = NULL; 84 m_grandChild2 = NULL;
77 m_grandChild3 = NULL; 85 m_grandChild3 = NULL;
78 86
79 m_layerTreeHost->setRootLayer(0); 87 m_layerTreeHost->setRootLayer(0);
80 m_layerTreeHost.reset(); 88 m_layerTreeHost.reset();
(...skipping 25 matching lines...) Expand all
106 void createSimpleTestTree() 114 void createSimpleTestTree()
107 { 115 {
108 m_parent = Layer::create(); 116 m_parent = Layer::create();
109 m_child1 = Layer::create(); 117 m_child1 = Layer::create();
110 m_child2 = Layer::create(); 118 m_child2 = Layer::create();
111 m_child3 = Layer::create(); 119 m_child3 = Layer::create();
112 m_grandChild1 = Layer::create(); 120 m_grandChild1 = Layer::create();
113 m_grandChild2 = Layer::create(); 121 m_grandChild2 = Layer::create();
114 m_grandChild3 = Layer::create(); 122 m_grandChild3 = Layer::create();
115 123
116 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times(AnyNumber()); 124 EXPECT_CALL(*m_layerTreeHost, setNeedsFullTreeSync()).Times(AnyNumber()) ;
117 m_layerTreeHost->setRootLayer(m_parent); 125 m_layerTreeHost->setRootLayer(m_parent);
118 126
119 m_parent->addChild(m_child1); 127 m_parent->addChild(m_child1);
120 m_parent->addChild(m_child2); 128 m_parent->addChild(m_child2);
121 m_parent->addChild(m_child3); 129 m_parent->addChild(m_child3);
122 m_child1->addChild(m_grandChild1); 130 m_child1->addChild(m_grandChild1);
123 m_child1->addChild(m_grandChild2); 131 m_child1->addChild(m_grandChild2);
124 m_child2->addChild(m_grandChild3); 132 m_child2->addChild(m_grandChild3);
125 133
126 Mock::VerifyAndClearExpectations(m_layerTreeHost.get()); 134 Mock::VerifyAndClearExpectations(m_layerTreeHost.get());
127 135
128 verifyTestTreeInitialState(); 136 verifyTestTreeInitialState();
129 } 137 }
130 138
131 scoped_ptr<MockLayerImplTreeHost> m_layerTreeHost; 139 scoped_ptr<StrictMock<MockLayerImplTreeHost> > m_layerTreeHost;
132 scoped_refptr<Layer> m_parent, m_child1, m_child2, m_child3, m_grandChild1, m_grandChild2, m_grandChild3; 140 scoped_refptr<Layer> m_parent, m_child1, m_child2, m_child3, m_grandChild1, m_grandChild2, m_grandChild3;
133 }; 141 };
134 142
135 TEST_F(LayerTest, basicCreateAndDestroy) 143 TEST_F(LayerTest, basicCreateAndDestroy)
136 { 144 {
137 scoped_refptr<Layer> testLayer = Layer::create(); 145 scoped_refptr<Layer> testLayer = Layer::create();
138 ASSERT_TRUE(testLayer); 146 ASSERT_TRUE(testLayer);
139 147
140 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times(0); 148 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times(0);
141 testLayer->setLayerTreeHost(m_layerTreeHost.get()); 149 testLayer->setLayerTreeHost(m_layerTreeHost.get());
142 } 150 }
143 151
144 TEST_F(LayerTest, addAndRemoveChild) 152 TEST_F(LayerTest, addAndRemoveChild)
145 { 153 {
146 scoped_refptr<Layer> parent = Layer::create(); 154 scoped_refptr<Layer> parent = Layer::create();
147 scoped_refptr<Layer> child = Layer::create(); 155 scoped_refptr<Layer> child = Layer::create();
148 156
149 // Upon creation, layers should not have children or parent. 157 // Upon creation, layers should not have children or parent.
150 ASSERT_EQ(static_cast<size_t>(0), parent->children().size()); 158 ASSERT_EQ(static_cast<size_t>(0), parent->children().size());
151 EXPECT_FALSE(child->parent()); 159 EXPECT_FALSE(child->parent());
152 160
153 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, m_layerTreeHost->setRootLaye r(parent)); 161 EXPECT_SET_NEEDS_FULL_TREE_SYNC(1, m_layerTreeHost->setRootLayer(parent));
154 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, parent->addChild(child)); 162 EXPECT_SET_NEEDS_FULL_TREE_SYNC(1, parent->addChild(child));
155 163
156 ASSERT_EQ(static_cast<size_t>(1), parent->children().size()); 164 ASSERT_EQ(static_cast<size_t>(1), parent->children().size());
157 EXPECT_EQ(child.get(), parent->children()[0]); 165 EXPECT_EQ(child.get(), parent->children()[0]);
158 EXPECT_EQ(parent.get(), child->parent()); 166 EXPECT_EQ(parent.get(), child->parent());
159 EXPECT_EQ(parent.get(), child->rootLayer()); 167 EXPECT_EQ(parent.get(), child->rootLayer());
160 168
161 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(AtLeast(1), child->removeFromPa rent()); 169 EXPECT_SET_NEEDS_FULL_TREE_SYNC(AtLeast(1), child->removeFromParent());
162 } 170 }
163 171
164 TEST_F(LayerTest, addSameChildTwice) 172 TEST_F(LayerTest, addSameChildTwice)
165 { 173 {
174 EXPECT_CALL(*m_layerTreeHost, setNeedsFullTreeSync()).Times(AtLeast(1));
175
166 scoped_refptr<Layer> parent = Layer::create(); 176 scoped_refptr<Layer> parent = Layer::create();
167 scoped_refptr<Layer> child = Layer::create(); 177 scoped_refptr<Layer> child = Layer::create();
168 178
169 m_layerTreeHost->setRootLayer(parent); 179 m_layerTreeHost->setRootLayer(parent);
170 180
171 ASSERT_EQ(0u, parent->children().size()); 181 ASSERT_EQ(0u, parent->children().size());
172 182
173 parent->addChild(child); 183 parent->addChild(child);
174 ASSERT_EQ(1u, parent->children().size()); 184 ASSERT_EQ(1u, parent->children().size());
175 EXPECT_EQ(parent.get(), child->parent()); 185 EXPECT_EQ(parent.get(), child->parent());
176 186
177 parent->addChild(child); 187 parent->addChild(child);
178 ASSERT_EQ(1u, parent->children().size()); 188 ASSERT_EQ(1u, parent->children().size());
179 EXPECT_EQ(parent.get(), child->parent()); 189 EXPECT_EQ(parent.get(), child->parent());
180 } 190 }
181 191
182 TEST_F(LayerTest, insertChild) 192 TEST_F(LayerTest, insertChild)
183 { 193 {
184 scoped_refptr<Layer> parent = Layer::create(); 194 scoped_refptr<Layer> parent = Layer::create();
185 scoped_refptr<Layer> child1 = Layer::create(); 195 scoped_refptr<Layer> child1 = Layer::create();
186 scoped_refptr<Layer> child2 = Layer::create(); 196 scoped_refptr<Layer> child2 = Layer::create();
187 scoped_refptr<Layer> child3 = Layer::create(); 197 scoped_refptr<Layer> child3 = Layer::create();
188 scoped_refptr<Layer> child4 = Layer::create(); 198 scoped_refptr<Layer> child4 = Layer::create();
189 199
190 parent->setLayerTreeHost(m_layerTreeHost.get()); 200 parent->setLayerTreeHost(m_layerTreeHost.get());
191 201
192 ASSERT_EQ(static_cast<size_t>(0), parent->children().size()); 202 ASSERT_EQ(static_cast<size_t>(0), parent->children().size());
193 203
194 // Case 1: inserting to empty list. 204 // Case 1: inserting to empty list.
195 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, parent->insertChild(child3, 0)); 205 EXPECT_SET_NEEDS_FULL_TREE_SYNC(1, parent->insertChild(child3, 0));
196 ASSERT_EQ(static_cast<size_t>(1), parent->children().size()); 206 ASSERT_EQ(static_cast<size_t>(1), parent->children().size());
197 EXPECT_EQ(child3, parent->children()[0]); 207 EXPECT_EQ(child3, parent->children()[0]);
198 EXPECT_EQ(parent.get(), child3->parent()); 208 EXPECT_EQ(parent.get(), child3->parent());
199 209
200 // Case 2: inserting to beginning of list 210 // Case 2: inserting to beginning of list
201 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, parent->insertChild(child1, 0)); 211 EXPECT_SET_NEEDS_FULL_TREE_SYNC(1, parent->insertChild(child1, 0));
202 ASSERT_EQ(static_cast<size_t>(2), parent->children().size()); 212 ASSERT_EQ(static_cast<size_t>(2), parent->children().size());
203 EXPECT_EQ(child1, parent->children()[0]); 213 EXPECT_EQ(child1, parent->children()[0]);
204 EXPECT_EQ(child3, parent->children()[1]); 214 EXPECT_EQ(child3, parent->children()[1]);
205 EXPECT_EQ(parent.get(), child1->parent()); 215 EXPECT_EQ(parent.get(), child1->parent());
206 216
207 // Case 3: inserting to middle of list 217 // Case 3: inserting to middle of list
208 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, parent->insertChild(child2, 1)); 218 EXPECT_SET_NEEDS_FULL_TREE_SYNC(1, parent->insertChild(child2, 1));
209 ASSERT_EQ(static_cast<size_t>(3), parent->children().size()); 219 ASSERT_EQ(static_cast<size_t>(3), parent->children().size());
210 EXPECT_EQ(child1, parent->children()[0]); 220 EXPECT_EQ(child1, parent->children()[0]);
211 EXPECT_EQ(child2, parent->children()[1]); 221 EXPECT_EQ(child2, parent->children()[1]);
212 EXPECT_EQ(child3, parent->children()[2]); 222 EXPECT_EQ(child3, parent->children()[2]);
213 EXPECT_EQ(parent.get(), child2->parent()); 223 EXPECT_EQ(parent.get(), child2->parent());
214 224
215 // Case 4: inserting to end of list 225 // Case 4: inserting to end of list
216 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, parent->insertChild(child4, 3)); 226 EXPECT_SET_NEEDS_FULL_TREE_SYNC(1, parent->insertChild(child4, 3));
217 227
218 ASSERT_EQ(static_cast<size_t>(4), parent->children().size()); 228 ASSERT_EQ(static_cast<size_t>(4), parent->children().size());
219 EXPECT_EQ(child1, parent->children()[0]); 229 EXPECT_EQ(child1, parent->children()[0]);
220 EXPECT_EQ(child2, parent->children()[1]); 230 EXPECT_EQ(child2, parent->children()[1]);
221 EXPECT_EQ(child3, parent->children()[2]); 231 EXPECT_EQ(child3, parent->children()[2]);
222 EXPECT_EQ(child4, parent->children()[3]); 232 EXPECT_EQ(child4, parent->children()[3]);
223 EXPECT_EQ(parent.get(), child4->parent()); 233 EXPECT_EQ(parent.get(), child4->parent());
224 234
225 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times(AtLeast(1)); 235 EXPECT_CALL(*m_layerTreeHost, setNeedsFullTreeSync()).Times(AtLeast(1));
226 } 236 }
227 237
228 TEST_F(LayerTest, insertChildPastEndOfList) 238 TEST_F(LayerTest, insertChildPastEndOfList)
229 { 239 {
230 scoped_refptr<Layer> parent = Layer::create(); 240 scoped_refptr<Layer> parent = Layer::create();
231 scoped_refptr<Layer> child1 = Layer::create(); 241 scoped_refptr<Layer> child1 = Layer::create();
232 scoped_refptr<Layer> child2 = Layer::create(); 242 scoped_refptr<Layer> child2 = Layer::create();
233 243
234 ASSERT_EQ(static_cast<size_t>(0), parent->children().size()); 244 ASSERT_EQ(static_cast<size_t>(0), parent->children().size());
235 245
(...skipping 14 matching lines...) Expand all
250 TEST_F(LayerTest, insertSameChildTwice) 260 TEST_F(LayerTest, insertSameChildTwice)
251 { 261 {
252 scoped_refptr<Layer> parent = Layer::create(); 262 scoped_refptr<Layer> parent = Layer::create();
253 scoped_refptr<Layer> child1 = Layer::create(); 263 scoped_refptr<Layer> child1 = Layer::create();
254 scoped_refptr<Layer> child2 = Layer::create(); 264 scoped_refptr<Layer> child2 = Layer::create();
255 265
256 parent->setLayerTreeHost(m_layerTreeHost.get()); 266 parent->setLayerTreeHost(m_layerTreeHost.get());
257 267
258 ASSERT_EQ(static_cast<size_t>(0), parent->children().size()); 268 ASSERT_EQ(static_cast<size_t>(0), parent->children().size());
259 269
260 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, parent->insertChild(child1, 0)); 270 EXPECT_SET_NEEDS_FULL_TREE_SYNC(1, parent->insertChild(child1, 0));
261 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, parent->insertChild(child2, 1)); 271 EXPECT_SET_NEEDS_FULL_TREE_SYNC(1, parent->insertChild(child2, 1));
262 272
263 ASSERT_EQ(static_cast<size_t>(2), parent->children().size()); 273 ASSERT_EQ(static_cast<size_t>(2), parent->children().size());
264 EXPECT_EQ(child1, parent->children()[0]); 274 EXPECT_EQ(child1, parent->children()[0]);
265 EXPECT_EQ(child2, parent->children()[1]); 275 EXPECT_EQ(child2, parent->children()[1]);
266 276
267 // Inserting the same child again should cause the child to be removed and r e-inserted at the new location. 277 // Inserting the same child again should cause the child to be removed and r e-inserted at the new location.
268 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(AtLeast(1), parent->insertChild (child1, 1)); 278 EXPECT_SET_NEEDS_FULL_TREE_SYNC(AtLeast(1), parent->insertChild(child1, 1));
269 279
270 // child1 should now be at the end of the list. 280 // child1 should now be at the end of the list.
271 ASSERT_EQ(static_cast<size_t>(2), parent->children().size()); 281 ASSERT_EQ(static_cast<size_t>(2), parent->children().size());
272 EXPECT_EQ(child2, parent->children()[0]); 282 EXPECT_EQ(child2, parent->children()[0]);
273 EXPECT_EQ(child1, parent->children()[1]); 283 EXPECT_EQ(child1, parent->children()[1]);
274 284
275 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times(AtLeast(1)); 285 EXPECT_CALL(*m_layerTreeHost, setNeedsFullTreeSync()).Times(AtLeast(1));
276 } 286 }
277 287
278 TEST_F(LayerTest, replaceChildWithNewChild) 288 TEST_F(LayerTest, replaceChildWithNewChild)
279 { 289 {
280 createSimpleTestTree(); 290 createSimpleTestTree();
281 scoped_refptr<Layer> child4 = Layer::create(); 291 scoped_refptr<Layer> child4 = Layer::create();
282 292
283 EXPECT_FALSE(child4->parent()); 293 EXPECT_FALSE(child4->parent());
284 294
285 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(AtLeast(1), m_parent->replaceCh ild(m_child2.get(), child4)); 295 EXPECT_SET_NEEDS_FULL_TREE_SYNC(AtLeast(1), m_parent->replaceChild(m_child2. get(), child4));
286 296
287 ASSERT_EQ(static_cast<size_t>(3), m_parent->children().size()); 297 ASSERT_EQ(static_cast<size_t>(3), m_parent->children().size());
288 EXPECT_EQ(m_child1, m_parent->children()[0]); 298 EXPECT_EQ(m_child1, m_parent->children()[0]);
289 EXPECT_EQ(child4, m_parent->children()[1]); 299 EXPECT_EQ(child4, m_parent->children()[1]);
290 EXPECT_EQ(m_child3, m_parent->children()[2]); 300 EXPECT_EQ(m_child3, m_parent->children()[2]);
291 EXPECT_EQ(m_parent.get(), child4->parent()); 301 EXPECT_EQ(m_parent.get(), child4->parent());
292 302
293 EXPECT_FALSE(m_child2->parent()); 303 EXPECT_FALSE(m_child2->parent());
294 } 304 }
295 305
296 TEST_F(LayerTest, replaceChildWithNewChildThatHasOtherParent) 306 TEST_F(LayerTest, replaceChildWithNewChildThatHasOtherParent)
297 { 307 {
298 createSimpleTestTree(); 308 createSimpleTestTree();
299 309
300 // create another simple tree with testLayer and child4. 310 // create another simple tree with testLayer and child4.
301 scoped_refptr<Layer> testLayer = Layer::create(); 311 scoped_refptr<Layer> testLayer = Layer::create();
302 scoped_refptr<Layer> child4 = Layer::create(); 312 scoped_refptr<Layer> child4 = Layer::create();
303 testLayer->addChild(child4); 313 testLayer->addChild(child4);
304 ASSERT_EQ(static_cast<size_t>(1), testLayer->children().size()); 314 ASSERT_EQ(static_cast<size_t>(1), testLayer->children().size());
305 EXPECT_EQ(child4, testLayer->children()[0]); 315 EXPECT_EQ(child4, testLayer->children()[0]);
306 EXPECT_EQ(testLayer.get(), child4->parent()); 316 EXPECT_EQ(testLayer.get(), child4->parent());
307 317
308 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(AtLeast(1), m_parent->replaceCh ild(m_child2.get(), child4)); 318 EXPECT_SET_NEEDS_FULL_TREE_SYNC(AtLeast(1), m_parent->replaceChild(m_child2. get(), child4));
309 319
310 ASSERT_EQ(static_cast<size_t>(3), m_parent->children().size()); 320 ASSERT_EQ(static_cast<size_t>(3), m_parent->children().size());
311 EXPECT_EQ(m_child1, m_parent->children()[0]); 321 EXPECT_EQ(m_child1, m_parent->children()[0]);
312 EXPECT_EQ(child4, m_parent->children()[1]); 322 EXPECT_EQ(child4, m_parent->children()[1]);
313 EXPECT_EQ(m_child3, m_parent->children()[2]); 323 EXPECT_EQ(m_child3, m_parent->children()[2]);
314 EXPECT_EQ(m_parent.get(), child4->parent()); 324 EXPECT_EQ(m_parent.get(), child4->parent());
315 325
316 // testLayer should no longer have child4, 326 // testLayer should no longer have child4,
317 // and child2 should no longer have a parent. 327 // and child2 should no longer have a parent.
318 ASSERT_EQ(static_cast<size_t>(0), testLayer->children().size()); 328 ASSERT_EQ(static_cast<size_t>(0), testLayer->children().size());
319 EXPECT_FALSE(m_child2->parent()); 329 EXPECT_FALSE(m_child2->parent());
320 } 330 }
321 331
322 TEST_F(LayerTest, replaceChildWithSameChild) 332 TEST_F(LayerTest, replaceChildWithSameChild)
323 { 333 {
324 createSimpleTestTree(); 334 createSimpleTestTree();
325 335
326 // setNeedsCommit should not be called because its the same child 336 // setNeedsFullTreeSync / setNeedsCommit should not be called because its th e same child
327 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(0, m_parent->replaceChild(m_chi ld2.get(), m_child2)); 337 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times(0);
338 EXPECT_CALL(*m_layerTreeHost, setNeedsFullTreeSync()).Times(0);
339 m_parent->replaceChild(m_child2.get(), m_child2);
328 340
329 verifyTestTreeInitialState(); 341 verifyTestTreeInitialState();
330 } 342 }
331 343
332 TEST_F(LayerTest, removeAllChildren) 344 TEST_F(LayerTest, removeAllChildren)
333 { 345 {
334 createSimpleTestTree(); 346 createSimpleTestTree();
335 347
336 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(AtLeast(3), m_parent->removeAll Children()); 348 EXPECT_SET_NEEDS_FULL_TREE_SYNC(AtLeast(3), m_parent->removeAllChildren());
337 349
338 ASSERT_EQ(static_cast<size_t>(0), m_parent->children().size()); 350 ASSERT_EQ(static_cast<size_t>(0), m_parent->children().size());
339 EXPECT_FALSE(m_child1->parent()); 351 EXPECT_FALSE(m_child1->parent());
340 EXPECT_FALSE(m_child2->parent()); 352 EXPECT_FALSE(m_child2->parent());
341 EXPECT_FALSE(m_child3->parent()); 353 EXPECT_FALSE(m_child3->parent());
342 } 354 }
343 355
344 TEST_F(LayerTest, setChildren) 356 TEST_F(LayerTest, setChildren)
345 { 357 {
346 scoped_refptr<Layer> oldParent = Layer::create(); 358 scoped_refptr<Layer> oldParent = Layer::create();
347 scoped_refptr<Layer> newParent = Layer::create(); 359 scoped_refptr<Layer> newParent = Layer::create();
348 360
349 scoped_refptr<Layer> child1 = Layer::create(); 361 scoped_refptr<Layer> child1 = Layer::create();
350 scoped_refptr<Layer> child2 = Layer::create(); 362 scoped_refptr<Layer> child2 = Layer::create();
351 363
352 std::vector<scoped_refptr<Layer> > newChildren; 364 std::vector<scoped_refptr<Layer> > newChildren;
353 newChildren.push_back(child1); 365 newChildren.push_back(child1);
354 newChildren.push_back(child2); 366 newChildren.push_back(child2);
355 367
356 // Set up and verify initial test conditions: child1 has a parent, child2 ha s no parent. 368 // Set up and verify initial test conditions: child1 has a parent, child2 ha s no parent.
357 oldParent->addChild(child1); 369 oldParent->addChild(child1);
358 ASSERT_EQ(static_cast<size_t>(0), newParent->children().size()); 370 ASSERT_EQ(static_cast<size_t>(0), newParent->children().size());
359 EXPECT_EQ(oldParent.get(), child1->parent()); 371 EXPECT_EQ(oldParent.get(), child1->parent());
360 EXPECT_FALSE(child2->parent()); 372 EXPECT_FALSE(child2->parent());
361 373
362 newParent->setLayerTreeHost(m_layerTreeHost.get()); 374 newParent->setLayerTreeHost(m_layerTreeHost.get());
363 375
364 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(AtLeast(1), newParent->setChild ren(newChildren)); 376 EXPECT_SET_NEEDS_FULL_TREE_SYNC(AtLeast(1), newParent->setChildren(newChildr en));
365 377
366 ASSERT_EQ(static_cast<size_t>(2), newParent->children().size()); 378 ASSERT_EQ(static_cast<size_t>(2), newParent->children().size());
367 EXPECT_EQ(newParent.get(), child1->parent()); 379 EXPECT_EQ(newParent.get(), child1->parent());
368 EXPECT_EQ(newParent.get(), child2->parent()); 380 EXPECT_EQ(newParent.get(), child2->parent());
369 381
370 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times(AtLeast(1)); 382 EXPECT_CALL(*m_layerTreeHost, setNeedsFullTreeSync()).Times(AtLeast(1));
371 } 383 }
372 384
373 TEST_F(LayerTest, getRootLayerAfterTreeManipulations) 385 TEST_F(LayerTest, getRootLayerAfterTreeManipulations)
374 { 386 {
375 createSimpleTestTree(); 387 createSimpleTestTree();
376 388
377 // For this test we don't care about setNeedsCommit calls. 389 // For this test we don't care about setNeedsFullTreeSync calls.
378 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times(AtLeast(1)); 390 EXPECT_CALL(*m_layerTreeHost, setNeedsFullTreeSync()).Times(AnyNumber());
379 391
380 scoped_refptr<Layer> child4 = Layer::create(); 392 scoped_refptr<Layer> child4 = Layer::create();
381 393
382 EXPECT_EQ(m_parent.get(), m_parent->rootLayer()); 394 EXPECT_EQ(m_parent.get(), m_parent->rootLayer());
383 EXPECT_EQ(m_parent.get(), m_child1->rootLayer()); 395 EXPECT_EQ(m_parent.get(), m_child1->rootLayer());
384 EXPECT_EQ(m_parent.get(), m_child2->rootLayer()); 396 EXPECT_EQ(m_parent.get(), m_child2->rootLayer());
385 EXPECT_EQ(m_parent.get(), m_child3->rootLayer()); 397 EXPECT_EQ(m_parent.get(), m_child3->rootLayer());
386 EXPECT_EQ(child4.get(), child4->rootLayer()); 398 EXPECT_EQ(child4.get(), child4->rootLayer());
387 EXPECT_EQ(m_parent.get(), m_grandChild1->rootLayer()); 399 EXPECT_EQ(m_parent.get(), m_grandChild1->rootLayer());
388 EXPECT_EQ(m_parent.get(), m_grandChild2->rootLayer()); 400 EXPECT_EQ(m_parent.get(), m_grandChild2->rootLayer());
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 } 437 }
426 438
427 TEST_F(LayerTest, checkSetNeedsDisplayCausesCorrectBehavior) 439 TEST_F(LayerTest, checkSetNeedsDisplayCausesCorrectBehavior)
428 { 440 {
429 // The semantics for setNeedsDisplay which are tested here: 441 // The semantics for setNeedsDisplay which are tested here:
430 // 1. sets needsDisplay flag appropriately. 442 // 1. sets needsDisplay flag appropriately.
431 // 2. indirectly calls setNeedsCommit, exactly once for each call to setNe edsDisplay. 443 // 2. indirectly calls setNeedsCommit, exactly once for each call to setNe edsDisplay.
432 444
433 scoped_refptr<Layer> testLayer = Layer::create(); 445 scoped_refptr<Layer> testLayer = Layer::create();
434 testLayer->setLayerTreeHost(m_layerTreeHost.get()); 446 testLayer->setLayerTreeHost(m_layerTreeHost.get());
435 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setIsDrawable(tru e)); 447 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setIsDrawable(true));
436 448
437 gfx::Size testBounds = gfx::Size(501, 508); 449 gfx::Size testBounds = gfx::Size(501, 508);
438 450
439 gfx::RectF dirty1 = gfx::RectF(10, 15, 1, 2); 451 gfx::RectF dirty1 = gfx::RectF(10, 15, 1, 2);
440 gfx::RectF dirty2 = gfx::RectF(20, 25, 3, 4); 452 gfx::RectF dirty2 = gfx::RectF(20, 25, 3, 4);
441 gfx::RectF emptyDirtyRect = gfx::RectF(40, 45, 0, 0); 453 gfx::RectF emptyDirtyRect = gfx::RectF(40, 45, 0, 0);
442 gfx::RectF outOfBoundsDirtyRect = gfx::RectF(400, 405, 500, 502); 454 gfx::RectF outOfBoundsDirtyRect = gfx::RectF(400, 405, 500, 502);
443 455
444 // Before anything, testLayer should not be dirty. 456 // Before anything, testLayer should not be dirty.
445 EXPECT_FALSE(testLayer->needsDisplay()); 457 EXPECT_FALSE(testLayer->needsDisplay());
446 458
447 // This is just initialization, but setNeedsCommit behavior is verified anyw ay to avoid warnings. 459 // This is just initialization, but setNeedsCommit behavior is verified anyw ay to avoid warnings.
448 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setBounds(testBou nds)); 460 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setBounds(testBounds));
449 testLayer = Layer::create(); 461 testLayer = Layer::create();
450 testLayer->setLayerTreeHost(m_layerTreeHost.get()); 462 testLayer->setLayerTreeHost(m_layerTreeHost.get());
451 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setIsDrawable(tru e)); 463 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setIsDrawable(true));
452 EXPECT_FALSE(testLayer->needsDisplay()); 464 EXPECT_FALSE(testLayer->needsDisplay());
453 465
454 // The real test begins here. 466 // The real test begins here.
455 467
456 // Case 1: needsDisplay flag should not change because of an empty dirty rec t. 468 // Case 1: needsDisplay flag should not change because of an empty dirty rec t.
457 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setNeedsDisplayRe ct(emptyDirtyRect)); 469 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setNeedsDisplayRect(emptyDirtyRect));
458 EXPECT_FALSE(testLayer->needsDisplay()); 470 EXPECT_FALSE(testLayer->needsDisplay());
459 471
460 // Case 2: basic. 472 // Case 2: basic.
461 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setNeedsDisplayRe ct(dirty1)); 473 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setNeedsDisplayRect(dirty1));
462 EXPECT_TRUE(testLayer->needsDisplay()); 474 EXPECT_TRUE(testLayer->needsDisplay());
463 475
464 // Case 3: a second dirty rect. 476 // Case 3: a second dirty rect.
465 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setNeedsDisplayRe ct(dirty2)); 477 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setNeedsDisplayRect(dirty2));
466 EXPECT_TRUE(testLayer->needsDisplay()); 478 EXPECT_TRUE(testLayer->needsDisplay());
467 479
468 // Case 4: Layer should accept dirty rects that go beyond its bounds. 480 // Case 4: Layer should accept dirty rects that go beyond its bounds.
469 testLayer = Layer::create(); 481 testLayer = Layer::create();
470 testLayer->setLayerTreeHost(m_layerTreeHost.get()); 482 testLayer->setLayerTreeHost(m_layerTreeHost.get());
471 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setIsDrawable(tru e)); 483 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setIsDrawable(true));
472 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setBounds(testBou nds)); 484 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setBounds(testBounds));
473 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setNeedsDisplayRe ct(outOfBoundsDirtyRect)); 485 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setNeedsDisplayRect(outOfBoundsDirtyRe ct));
474 EXPECT_TRUE(testLayer->needsDisplay()); 486 EXPECT_TRUE(testLayer->needsDisplay());
475 487
476 // Case 5: setNeedsDisplay() without the dirty rect arg. 488 // Case 5: setNeedsDisplay() without the dirty rect arg.
477 testLayer = Layer::create(); 489 testLayer = Layer::create();
478 testLayer->setLayerTreeHost(m_layerTreeHost.get()); 490 testLayer->setLayerTreeHost(m_layerTreeHost.get());
479 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setIsDrawable(tru e)); 491 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setIsDrawable(true));
480 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setBounds(testBou nds)); 492 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setBounds(testBounds));
481 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setNeedsDisplay() ); 493 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setNeedsDisplay());
482 EXPECT_TRUE(testLayer->needsDisplay()); 494 EXPECT_TRUE(testLayer->needsDisplay());
483 495
484 // Case 6: setNeedsDisplay() with a non-drawable layer 496 // Case 6: setNeedsDisplay() with a non-drawable layer
485 testLayer = Layer::create(); 497 testLayer = Layer::create();
486 testLayer->setLayerTreeHost(m_layerTreeHost.get()); 498 testLayer->setLayerTreeHost(m_layerTreeHost.get());
487 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(0, testLayer->setBounds(testBou nds)); 499 EXPECT_SET_NEEDS_COMMIT(0, testLayer->setBounds(testBounds));
488 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(0, testLayer->setNeedsDisplayRe ct(dirty1)); 500 EXPECT_SET_NEEDS_COMMIT(0, testLayer->setNeedsDisplayRect(dirty1));
489 EXPECT_TRUE(testLayer->needsDisplay()); 501 EXPECT_TRUE(testLayer->needsDisplay());
490 } 502 }
491 503
492 TEST_F(LayerTest, checkPropertyChangeCausesCorrectBehavior) 504 TEST_F(LayerTest, checkPropertyChangeCausesCorrectBehavior)
493 { 505 {
494 scoped_refptr<Layer> testLayer = Layer::create(); 506 scoped_refptr<Layer> testLayer = Layer::create();
495 testLayer->setLayerTreeHost(m_layerTreeHost.get()); 507 testLayer->setLayerTreeHost(m_layerTreeHost.get());
496 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setIsDrawable(tru e)); 508 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setIsDrawable(true));
497 509
498 scoped_refptr<Layer> dummyLayer = Layer::create(); // just a dummy layer for this test case. 510 scoped_refptr<Layer> dummyLayer = Layer::create(); // just a dummy layer for this test case.
499 511
500 // sanity check of initial test condition 512 // sanity check of initial test condition
501 EXPECT_FALSE(testLayer->needsDisplay()); 513 EXPECT_FALSE(testLayer->needsDisplay());
502 514
503 // Test properties that should not call needsDisplay and needsCommit when ch anged. 515 // Test properties that should not call needsDisplay and needsCommit when ch anged.
504 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(0, testLayer->setVisibleContent Rect(gfx::Rect(0, 0, 40, 50))); 516 EXPECT_SET_NEEDS_COMMIT(0, testLayer->setVisibleContentRect(gfx::Rect(0, 0, 40, 50)));
505 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(0, testLayer->setUseLCDText(tru e)); 517 EXPECT_SET_NEEDS_COMMIT(0, testLayer->setUseLCDText(true));
506 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(0, testLayer->setDrawOpacity(0. 5)); 518 EXPECT_SET_NEEDS_COMMIT(0, testLayer->setDrawOpacity(0.5));
507 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(0, testLayer->setRenderTarget(0 )); 519 EXPECT_SET_NEEDS_COMMIT(0, testLayer->setRenderTarget(0));
508 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(0, testLayer->setDrawTransform( gfx::Transform())); 520 EXPECT_SET_NEEDS_COMMIT(0, testLayer->setDrawTransform(gfx::Transform()));
509 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(0, testLayer->setScreenSpaceTra nsform(gfx::Transform())); 521 EXPECT_SET_NEEDS_COMMIT(0, testLayer->setScreenSpaceTransform(gfx::Transform ()));
510 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(0, testLayer->setDrawableConten tRect(gfx::Rect(4, 5, 6, 7))); 522 EXPECT_SET_NEEDS_COMMIT(0, testLayer->setDrawableContentRect(gfx::Rect(4, 5, 6, 7)));
511 EXPECT_FALSE(testLayer->needsDisplay()); 523 EXPECT_FALSE(testLayer->needsDisplay());
512 524
513 // Next, test properties that should call setNeedsCommit (but not setNeedsDi splay) 525 // Next, test properties that should call setNeedsCommit (but not setNeedsDi splay)
514 // All properties need to be set to new values in order for setNeedsCommit t o be called. 526 // All properties need to be set to new values in order for setNeedsCommit t o be called.
515 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setAnchorPoint(gf x::PointF(1.23f, 4.56f))); 527 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setAnchorPoint(gfx::PointF(1.23f, 4.56 f)));
516 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setAnchorPointZ(0 .7f)); 528 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setAnchorPointZ(0.7f));
517 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setBackgroundColo r(SK_ColorLTGRAY)); 529 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setBackgroundColor(SK_ColorLTGRAY));
518 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setMasksToBounds( true)); 530 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setMasksToBounds(true));
519 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setMaskLayer(dumm yLayer.get())); 531 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setOpacity(0.5));
520 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setOpacity(0.5)); 532 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setContentsOpaque(true));
521 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setContentsOpaque (true)); 533 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setPosition(gfx::PointF(4, 9)));
522 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setPosition(gfx:: PointF(4, 9))); 534 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setSublayerTransform(MathUtil::createG fxTransform(0, 0, 0, 0, 0, 0)));
523 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setReplicaLayer(d ummyLayer.get())); 535 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setScrollable(true));
524 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setSublayerTransf orm(MathUtil::createGfxTransform(0, 0, 0, 0, 0, 0))); 536 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setShouldScrollOnMainThread(true));
525 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setScrollable(tru e)); 537 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setNonFastScrollableRegion(gfx::Rect(1 , 1, 2, 2)));
526 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setShouldScrollOn MainThread(true)); 538 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setHaveWheelEventHandlers(true));
527 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setNonFastScrolla bleRegion(gfx::Rect(1, 1, 2, 2))); 539 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setTransform(MathUtil::createGfxTransf orm(0, 0, 0, 0, 0, 0)));
528 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setHaveWheelEvent Handlers(true)); 540 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setDoubleSided(false));
529 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setScrollOffset(g fx::Vector2d(10, 10))); 541 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setDebugName("Test Layer"));
530 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setTransform(Math Util::createGfxTransform(0, 0, 0, 0, 0, 0))); 542 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setDrawCheckerboardForMissingTiles(!te stLayer->drawCheckerboardForMissingTiles()));
531 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setDoubleSided(fa lse)); 543 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setForceRenderSurface(true));
532 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setDebugName("Tes t Layer")); 544
533 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setDrawCheckerboa rdForMissingTiles(!testLayer->drawCheckerboardForMissingTiles())); 545 EXPECT_SET_NEEDS_FULL_TREE_SYNC(1, testLayer->setMaskLayer(dummyLayer.get()) );
534 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setForceRenderSur face(true)); 546 EXPECT_SET_NEEDS_FULL_TREE_SYNC(1, testLayer->setReplicaLayer(dummyLayer.get ()));
547 EXPECT_SET_NEEDS_FULL_TREE_SYNC(1, testLayer->setScrollOffset(gfx::Vector2d( 10, 10)));
535 548
536 // The above tests should not have caused a change to the needsDisplay flag. 549 // The above tests should not have caused a change to the needsDisplay flag.
537 EXPECT_FALSE(testLayer->needsDisplay()); 550 EXPECT_FALSE(testLayer->needsDisplay());
538 551
539 // Test properties that should call setNeedsDisplay and setNeedsCommit 552 // Test properties that should call setNeedsDisplay and setNeedsCommit
540 EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(1, testLayer->setBounds(gfx::Si ze(5, 10))); 553 EXPECT_SET_NEEDS_COMMIT(1, testLayer->setBounds(gfx::Size(5, 10)));
541 EXPECT_TRUE(testLayer->needsDisplay()); 554 EXPECT_TRUE(testLayer->needsDisplay());
542 } 555 }
543 556
544 TEST_F(LayerTest, verifyPushPropertiesAccumulatesUpdateRect) 557 TEST_F(LayerTest, verifyPushPropertiesAccumulatesUpdateRect)
545 { 558 {
546 scoped_refptr<Layer> testLayer = Layer::create(); 559 scoped_refptr<Layer> testLayer = Layer::create();
547 scoped_ptr<LayerImpl> implLayer = LayerImpl::create(1); 560 scoped_ptr<LayerImpl> implLayer = LayerImpl::create(1);
548 561
549 testLayer->setNeedsDisplayRect(gfx::RectF(gfx::PointF(), gfx::SizeF(5, 5))); 562 testLayer->setNeedsDisplayRect(gfx::RectF(gfx::PointF(), gfx::SizeF(5, 5)));
550 testLayer->pushPropertiesTo(implLayer.get()); 563 testLayer->pushPropertiesTo(implLayer.get());
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
809 scoped_refptr<MockLayer> layer(new MockLayer); 822 scoped_refptr<MockLayer> layer(new MockLayer);
810 EXPECT_FALSE(layer->needsDisplay()); 823 EXPECT_FALSE(layer->needsDisplay());
811 layer->setBounds(gfx::Size(0, 10)); 824 layer->setBounds(gfx::Size(0, 10));
812 EXPECT_FALSE(layer->needsDisplay()); 825 EXPECT_FALSE(layer->needsDisplay());
813 layer->setBounds(gfx::Size(10, 10)); 826 layer->setBounds(gfx::Size(10, 10));
814 EXPECT_TRUE(layer->needsDisplay()); 827 EXPECT_TRUE(layer->needsDisplay());
815 } 828 }
816 829
817 } // namespace 830 } // namespace
818 } // namespace cc 831 } // namespace cc
OLDNEW
« cc/layer_tree_host.cc ('K') | « cc/layer_tree_host.cc ('k') | cc/scrollbar_layer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698