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

Side by Side Diff: mojo/services/public/cpp/view_manager/tests/node_unittest.cc

Issue 374933003: Remove DispositionChangePhase. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "mojo/services/public/cpp/view_manager/node.h" 5 #include "mojo/services/public/cpp/view_manager/node.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
9 #include "mojo/services/public/cpp/view_manager/lib/node_private.h" 9 #include "mojo/services/public/cpp/view_manager/lib/node_private.h"
10 #include "mojo/services/public/cpp/view_manager/node_observer.h" 10 #include "mojo/services/public/cpp/view_manager/node_observer.h"
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 EXPECT_EQ(&v111, v1.GetChildById(v111.id())); 86 EXPECT_EQ(&v111, v1.GetChildById(v111.id()));
87 } 87 }
88 88
89 // NodeObserver -------------------------------------------------------- 89 // NodeObserver --------------------------------------------------------
90 90
91 typedef testing::Test NodeObserverTest; 91 typedef testing::Test NodeObserverTest;
92 92
93 bool TreeChangeParamsMatch(const NodeObserver::TreeChangeParams& lhs, 93 bool TreeChangeParamsMatch(const NodeObserver::TreeChangeParams& lhs,
94 const NodeObserver::TreeChangeParams& rhs) { 94 const NodeObserver::TreeChangeParams& rhs) {
95 return lhs.target == rhs.target && lhs.old_parent == rhs.old_parent && 95 return lhs.target == rhs.target && lhs.old_parent == rhs.old_parent &&
96 lhs.new_parent == rhs.new_parent && lhs.receiver == rhs.receiver && 96 lhs.new_parent == rhs.new_parent && lhs.receiver == rhs.receiver;
97 lhs.phase == rhs.phase;
98 } 97 }
99 98
100 class TreeChangeObserver : public NodeObserver { 99 class TreeChangeObserver : public NodeObserver {
101 public: 100 public:
102 explicit TreeChangeObserver(Node* observee) : observee_(observee) { 101 explicit TreeChangeObserver(Node* observee) : observee_(observee) {
103 observee_->AddObserver(this); 102 observee_->AddObserver(this);
104 } 103 }
105 virtual ~TreeChangeObserver() { 104 virtual ~TreeChangeObserver() {
106 observee_->RemoveObserver(this); 105 observee_->RemoveObserver(this);
107 } 106 }
108 107
109 void Reset() { 108 void Reset() {
110 received_params_.clear(); 109 received_params_.clear();
111 } 110 }
112 111
113 const std::vector<TreeChangeParams>& received_params() { 112 const std::vector<TreeChangeParams>& received_params() {
114 return received_params_; 113 return received_params_;
115 } 114 }
116 115
117 private: 116 private:
118 // Overridden from NodeObserver: 117 // Overridden from NodeObserver:
119 virtual void OnTreeChange(const TreeChangeParams& params) OVERRIDE { 118 virtual void OnTreeChanging(const TreeChangeParams& params) OVERRIDE {
119 received_params_.push_back(params);
120 }
121 virtual void OnTreeChanged(const TreeChangeParams& params) OVERRIDE {
120 received_params_.push_back(params); 122 received_params_.push_back(params);
121 } 123 }
122 124
123 Node* observee_; 125 Node* observee_;
124 std::vector<TreeChangeParams> received_params_; 126 std::vector<TreeChangeParams> received_params_;
125 127
126 DISALLOW_COPY_AND_ASSIGN(TreeChangeObserver); 128 DISALLOW_COPY_AND_ASSIGN(TreeChangeObserver);
127 }; 129 };
128 130
129 // Adds/Removes v11 to v1. 131 // Adds/Removes v11 to v1.
130 TEST_F(NodeObserverTest, TreeChange_SimpleAddRemove) { 132 TEST_F(NodeObserverTest, TreeChange_SimpleAddRemove) {
131 TestNode v1; 133 TestNode v1;
132 TreeChangeObserver o1(&v1); 134 TreeChangeObserver o1(&v1);
133 EXPECT_TRUE(o1.received_params().empty()); 135 EXPECT_TRUE(o1.received_params().empty());
134 136
135 TestNode v11; 137 TestNode v11;
136 TreeChangeObserver o11(&v11); 138 TreeChangeObserver o11(&v11);
137 EXPECT_TRUE(o11.received_params().empty()); 139 EXPECT_TRUE(o11.received_params().empty());
138 140
139 // Add. 141 // Add.
140 142
141 v1.AddChild(&v11); 143 v1.AddChild(&v11);
142 144
143 EXPECT_EQ(2U, o1.received_params().size()); 145 EXPECT_EQ(2U, o1.received_params().size());
144 NodeObserver::TreeChangeParams p1; 146 NodeObserver::TreeChangeParams p1;
145 p1.target = &v11; 147 p1.target = &v11;
146 p1.receiver = &v1; 148 p1.receiver = &v1;
147 p1.old_parent = NULL; 149 p1.old_parent = NULL;
148 p1.new_parent = &v1; 150 p1.new_parent = &v1;
149 p1.phase = NodeObserver::DISPOSITION_CHANGED;
150 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().back())); 151 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().back()));
151 152
152 EXPECT_EQ(2U, o11.received_params().size()); 153 EXPECT_EQ(2U, o11.received_params().size());
153 NodeObserver::TreeChangeParams p11 = p1; 154 NodeObserver::TreeChangeParams p11 = p1;
154 p11.receiver = &v11; 155 p11.receiver = &v11;
155 p11.phase = NodeObserver::DISPOSITION_CHANGING;
156 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().front())); 156 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().front()));
157 p11.phase = NodeObserver::DISPOSITION_CHANGED;
158 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().back())); 157 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().back()));
159 158
160 o1.Reset(); 159 o1.Reset();
161 o11.Reset(); 160 o11.Reset();
162 EXPECT_TRUE(o1.received_params().empty()); 161 EXPECT_TRUE(o1.received_params().empty());
163 EXPECT_TRUE(o11.received_params().empty()); 162 EXPECT_TRUE(o11.received_params().empty());
164 163
165 // Remove. 164 // Remove.
166 165
167 v1.RemoveChild(&v11); 166 v1.RemoveChild(&v11);
168 167
169 EXPECT_EQ(2U, o1.received_params().size()); 168 EXPECT_EQ(2U, o1.received_params().size());
170 p1.target = &v11; 169 p1.target = &v11;
171 p1.receiver = &v1; 170 p1.receiver = &v1;
172 p1.old_parent = &v1; 171 p1.old_parent = &v1;
173 p1.new_parent = NULL; 172 p1.new_parent = NULL;
174 p1.phase = NodeObserver::DISPOSITION_CHANGING;
175 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().front())); 173 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().front()));
176 174
177 EXPECT_EQ(2U, o11.received_params().size()); 175 EXPECT_EQ(2U, o11.received_params().size());
178 p11 = p1; 176 p11 = p1;
179 p11.receiver = &v11; 177 p11.receiver = &v11;
180 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().front())); 178 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().front()));
181 p11.phase = NodeObserver::DISPOSITION_CHANGED;
182 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().back())); 179 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().back()));
183 } 180 }
184 181
185 // Creates these two trees: 182 // Creates these two trees:
186 // v1 183 // v1
187 // +- v11 184 // +- v11
188 // v111 185 // v111
189 // +- v1111 186 // +- v1111
190 // +- v1112 187 // +- v1112
191 // Then adds/removes v111 from v11. 188 // Then adds/removes v111 from v11.
(...skipping 13 matching lines...) Expand all
205 202
206 // Add. 203 // Add.
207 204
208 v11.AddChild(&v111); 205 v11.AddChild(&v111);
209 206
210 EXPECT_EQ(2U, o1.received_params().size()); 207 EXPECT_EQ(2U, o1.received_params().size());
211 p1.target = &v111; 208 p1.target = &v111;
212 p1.receiver = &v1; 209 p1.receiver = &v1;
213 p1.old_parent = NULL; 210 p1.old_parent = NULL;
214 p1.new_parent = &v11; 211 p1.new_parent = &v11;
215 p1.phase = NodeObserver::DISPOSITION_CHANGED;
216 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().back())); 212 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().back()));
217 213
218 EXPECT_EQ(2U, o11.received_params().size()); 214 EXPECT_EQ(2U, o11.received_params().size());
219 p11 = p1; 215 p11 = p1;
220 p11.receiver = &v11; 216 p11.receiver = &v11;
221 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().back())); 217 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().back()));
222 218
223 EXPECT_EQ(2U, o111.received_params().size()); 219 EXPECT_EQ(2U, o111.received_params().size());
224 p111 = p11; 220 p111 = p11;
225 p111.receiver = &v111; 221 p111.receiver = &v111;
226 p111.phase = NodeObserver::DISPOSITION_CHANGING;
227 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().front())); 222 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().front()));
228 p111.phase = NodeObserver::DISPOSITION_CHANGED;
229 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().back())); 223 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().back()));
230 224
231 EXPECT_EQ(2U, o1111.received_params().size()); 225 EXPECT_EQ(2U, o1111.received_params().size());
232 p1111 = p111; 226 p1111 = p111;
233 p1111.receiver = &v1111; 227 p1111.receiver = &v1111;
234 p1111.phase = NodeObserver::DISPOSITION_CHANGING;
235 EXPECT_TRUE(TreeChangeParamsMatch(p1111, o1111.received_params().front())); 228 EXPECT_TRUE(TreeChangeParamsMatch(p1111, o1111.received_params().front()));
236 p1111.phase = NodeObserver::DISPOSITION_CHANGED;
237 EXPECT_TRUE(TreeChangeParamsMatch(p1111, o1111.received_params().back())); 229 EXPECT_TRUE(TreeChangeParamsMatch(p1111, o1111.received_params().back()));
238 230
239 EXPECT_EQ(2U, o1112.received_params().size()); 231 EXPECT_EQ(2U, o1112.received_params().size());
240 p1112 = p111; 232 p1112 = p111;
241 p1112.receiver = &v1112; 233 p1112.receiver = &v1112;
242 p1112.phase = NodeObserver::DISPOSITION_CHANGING;
243 EXPECT_TRUE(TreeChangeParamsMatch(p1112, o1112.received_params().front())); 234 EXPECT_TRUE(TreeChangeParamsMatch(p1112, o1112.received_params().front()));
244 p1112.phase = NodeObserver::DISPOSITION_CHANGED;
245 EXPECT_TRUE(TreeChangeParamsMatch(p1112, o1112.received_params().back())); 235 EXPECT_TRUE(TreeChangeParamsMatch(p1112, o1112.received_params().back()));
246 236
247 // Remove. 237 // Remove.
248 o1.Reset(); 238 o1.Reset();
249 o11.Reset(); 239 o11.Reset();
250 o111.Reset(); 240 o111.Reset();
251 o1111.Reset(); 241 o1111.Reset();
252 o1112.Reset(); 242 o1112.Reset();
253 EXPECT_TRUE(o1.received_params().empty()); 243 EXPECT_TRUE(o1.received_params().empty());
254 EXPECT_TRUE(o11.received_params().empty()); 244 EXPECT_TRUE(o11.received_params().empty());
255 EXPECT_TRUE(o111.received_params().empty()); 245 EXPECT_TRUE(o111.received_params().empty());
256 EXPECT_TRUE(o1111.received_params().empty()); 246 EXPECT_TRUE(o1111.received_params().empty());
257 EXPECT_TRUE(o1112.received_params().empty()); 247 EXPECT_TRUE(o1112.received_params().empty());
258 248
259 v11.RemoveChild(&v111); 249 v11.RemoveChild(&v111);
260 250
261 EXPECT_EQ(2U, o1.received_params().size()); 251 EXPECT_EQ(2U, o1.received_params().size());
262 p1.target = &v111; 252 p1.target = &v111;
263 p1.receiver = &v1; 253 p1.receiver = &v1;
264 p1.old_parent = &v11; 254 p1.old_parent = &v11;
265 p1.new_parent = NULL; 255 p1.new_parent = NULL;
266 p1.phase = NodeObserver::DISPOSITION_CHANGING;
267 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().front())); 256 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().front()));
268 257
269 EXPECT_EQ(2U, o11.received_params().size()); 258 EXPECT_EQ(2U, o11.received_params().size());
270 p11 = p1; 259 p11 = p1;
271 p11.receiver = &v11; 260 p11.receiver = &v11;
272 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().front())); 261 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().front()));
273 262
274 EXPECT_EQ(2U, o111.received_params().size()); 263 EXPECT_EQ(2U, o111.received_params().size());
275 p111 = p11; 264 p111 = p11;
276 p111.receiver = &v111; 265 p111.receiver = &v111;
277 p111.phase = NodeObserver::DISPOSITION_CHANGING;
278 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().front())); 266 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().front()));
279 p111.phase = NodeObserver::DISPOSITION_CHANGED;
280 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().back())); 267 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().back()));
281 268
282 EXPECT_EQ(2U, o1111.received_params().size()); 269 EXPECT_EQ(2U, o1111.received_params().size());
283 p1111 = p111; 270 p1111 = p111;
284 p1111.receiver = &v1111; 271 p1111.receiver = &v1111;
285 p1111.phase = NodeObserver::DISPOSITION_CHANGING;
286 EXPECT_TRUE(TreeChangeParamsMatch(p1111, o1111.received_params().front())); 272 EXPECT_TRUE(TreeChangeParamsMatch(p1111, o1111.received_params().front()));
287 p1111.phase = NodeObserver::DISPOSITION_CHANGED;
288 EXPECT_TRUE(TreeChangeParamsMatch(p1111, o1111.received_params().back())); 273 EXPECT_TRUE(TreeChangeParamsMatch(p1111, o1111.received_params().back()));
289 274
290 EXPECT_EQ(2U, o1112.received_params().size()); 275 EXPECT_EQ(2U, o1112.received_params().size());
291 p1112 = p111; 276 p1112 = p111;
292 p1112.receiver = &v1112; 277 p1112.receiver = &v1112;
293 p1112.phase = NodeObserver::DISPOSITION_CHANGING;
294 EXPECT_TRUE(TreeChangeParamsMatch(p1112, o1112.received_params().front())); 278 EXPECT_TRUE(TreeChangeParamsMatch(p1112, o1112.received_params().front()));
295 p1112.phase = NodeObserver::DISPOSITION_CHANGED;
296 EXPECT_TRUE(TreeChangeParamsMatch(p1112, o1112.received_params().back())); 279 EXPECT_TRUE(TreeChangeParamsMatch(p1112, o1112.received_params().back()));
297 } 280 }
298 281
299 TEST_F(NodeObserverTest, TreeChange_Reparent) { 282 TEST_F(NodeObserverTest, TreeChange_Reparent) {
300 TestNode v1, v11, v12, v111; 283 TestNode v1, v11, v12, v111;
301 v1.AddChild(&v11); 284 v1.AddChild(&v11);
302 v1.AddChild(&v12); 285 v1.AddChild(&v12);
303 v11.AddChild(&v111); 286 v11.AddChild(&v111);
304 287
305 TreeChangeObserver o1(&v1), o11(&v11), o12(&v12), o111(&v111); 288 TreeChangeObserver o1(&v1), o11(&v11), o12(&v12), o111(&v111);
306 289
307 // Reparent. 290 // Reparent.
308 v12.AddChild(&v111); 291 v12.AddChild(&v111);
309 292
310 // v1 (root) should see both changing and changed notifications. 293 // v1 (root) should see both changing and changed notifications.
311 EXPECT_EQ(4U, o1.received_params().size()); 294 EXPECT_EQ(4U, o1.received_params().size());
312 NodeObserver::TreeChangeParams p1; 295 NodeObserver::TreeChangeParams p1;
313 p1.target = &v111; 296 p1.target = &v111;
314 p1.receiver = &v1; 297 p1.receiver = &v1;
315 p1.old_parent = &v11; 298 p1.old_parent = &v11;
316 p1.new_parent = &v12; 299 p1.new_parent = &v12;
317 p1.phase = NodeObserver::DISPOSITION_CHANGING;
318 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().front())); 300 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().front()));
319 p1.phase = NodeObserver::DISPOSITION_CHANGED;
320 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().back())); 301 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().back()));
321 302
322 // v11 should see changing notifications. 303 // v11 should see changing notifications.
323 EXPECT_EQ(2U, o11.received_params().size()); 304 EXPECT_EQ(2U, o11.received_params().size());
324 NodeObserver::TreeChangeParams p11; 305 NodeObserver::TreeChangeParams p11;
325 p11 = p1; 306 p11 = p1;
326 p11.receiver = &v11; 307 p11.receiver = &v11;
327 p11.phase = NodeObserver::DISPOSITION_CHANGING;
328 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().front())); 308 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().front()));
329 309
330 // v12 should see changed notifications. 310 // v12 should see changed notifications.
331 EXPECT_EQ(2U, o12.received_params().size()); 311 EXPECT_EQ(2U, o12.received_params().size());
332 NodeObserver::TreeChangeParams p12; 312 NodeObserver::TreeChangeParams p12;
333 p12 = p1; 313 p12 = p1;
334 p12.receiver = &v12; 314 p12.receiver = &v12;
335 p12.phase = NodeObserver::DISPOSITION_CHANGED;
336 EXPECT_TRUE(TreeChangeParamsMatch(p12, o12.received_params().back())); 315 EXPECT_TRUE(TreeChangeParamsMatch(p12, o12.received_params().back()));
337 316
338 // v111 should see both changing and changed notifications. 317 // v111 should see both changing and changed notifications.
339 EXPECT_EQ(2U, o111.received_params().size()); 318 EXPECT_EQ(2U, o111.received_params().size());
340 NodeObserver::TreeChangeParams p111; 319 NodeObserver::TreeChangeParams p111;
341 p111 = p1; 320 p111 = p1;
342 p111.receiver = &v111; 321 p111.receiver = &v111;
343 p111.phase = NodeObserver::DISPOSITION_CHANGING;
344 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().front())); 322 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().front()));
345 p111.phase = NodeObserver::DISPOSITION_CHANGED;
346 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().back())); 323 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().back()));
347 } 324 }
348 325
349 namespace { 326 namespace {
350 327
351 class OrderChangeObserver : public NodeObserver { 328 class OrderChangeObserver : public NodeObserver {
352 public: 329 public:
353 struct Change { 330 struct Change {
354 Node* node; 331 Node* node;
355 Node* relative_node; 332 Node* relative_node;
356 OrderDirection direction; 333 OrderDirection direction;
357 DispositionChangePhase phase;
358 }; 334 };
359 typedef std::vector<Change> Changes; 335 typedef std::vector<Change> Changes;
360 336
361 explicit OrderChangeObserver(Node* observee) : observee_(observee) { 337 explicit OrderChangeObserver(Node* observee) : observee_(observee) {
362 observee_->AddObserver(this); 338 observee_->AddObserver(this);
363 } 339 }
364 virtual ~OrderChangeObserver() { 340 virtual ~OrderChangeObserver() {
365 observee_->RemoveObserver(this); 341 observee_->RemoveObserver(this);
366 } 342 }
367 343
368 Changes GetAndClearChanges() { 344 Changes GetAndClearChanges() {
369 Changes changes; 345 Changes changes;
370 changes_.swap(changes); 346 changes_.swap(changes);
371 return changes; 347 return changes;
372 } 348 }
373 349
374 private: 350 private:
375 // Overridden from NodeObserver: 351 // Overridden from NodeObserver:
376 virtual void OnNodeReordered(Node* node, 352 virtual void OnNodeReordered(Node* node,
377 Node* relative_node, 353 Node* relative_node,
378 OrderDirection direction, 354 OrderDirection direction) OVERRIDE {
379 DispositionChangePhase phase) OVERRIDE {
380 Change change; 355 Change change;
381 change.node = node; 356 change.node = node;
382 change.relative_node = relative_node; 357 change.relative_node = relative_node;
383 change.direction = direction; 358 change.direction = direction;
384 change.phase = phase;
385 changes_.push_back(change); 359 changes_.push_back(change);
386 } 360 }
387 361
388 Node* observee_; 362 Node* observee_;
389 Changes changes_; 363 Changes changes_;
390 364
391 DISALLOW_COPY_AND_ASSIGN(OrderChangeObserver); 365 DISALLOW_COPY_AND_ASSIGN(OrderChangeObserver);
392 }; 366 };
393 367
394 } // namespace 368 } // namespace
(...skipping 16 matching lines...) Expand all
411 // Resulting order: v12, v13, v11 385 // Resulting order: v12, v13, v11
412 v11.MoveToFront(); 386 v11.MoveToFront();
413 EXPECT_EQ(&v12, v1.children().front()); 387 EXPECT_EQ(&v12, v1.children().front());
414 EXPECT_EQ(&v11, v1.children().back()); 388 EXPECT_EQ(&v11, v1.children().back());
415 389
416 OrderChangeObserver::Changes changes = observer.GetAndClearChanges(); 390 OrderChangeObserver::Changes changes = observer.GetAndClearChanges();
417 EXPECT_EQ(2U, changes.size()); 391 EXPECT_EQ(2U, changes.size());
418 EXPECT_EQ(&v11, changes[0].node); 392 EXPECT_EQ(&v11, changes[0].node);
419 EXPECT_EQ(&v13, changes[0].relative_node); 393 EXPECT_EQ(&v13, changes[0].relative_node);
420 EXPECT_EQ(ORDER_ABOVE, changes[0].direction); 394 EXPECT_EQ(ORDER_ABOVE, changes[0].direction);
421 EXPECT_EQ(NodeObserver::DISPOSITION_CHANGING, changes[0].phase);
422 395
423 EXPECT_EQ(&v11, changes[1].node); 396 EXPECT_EQ(&v11, changes[1].node);
424 EXPECT_EQ(&v13, changes[1].relative_node); 397 EXPECT_EQ(&v13, changes[1].relative_node);
425 EXPECT_EQ(ORDER_ABOVE, changes[1].direction); 398 EXPECT_EQ(ORDER_ABOVE, changes[1].direction);
426 EXPECT_EQ(NodeObserver::DISPOSITION_CHANGED, changes[1].phase);
427 } 399 }
428 400
429 { 401 {
430 OrderChangeObserver observer(&v11); 402 OrderChangeObserver observer(&v11);
431 403
432 // Move v11 to back. 404 // Move v11 to back.
433 // Resulting order: v11, v12, v13 405 // Resulting order: v11, v12, v13
434 v11.MoveToBack(); 406 v11.MoveToBack();
435 EXPECT_EQ(&v11, v1.children().front()); 407 EXPECT_EQ(&v11, v1.children().front());
436 EXPECT_EQ(&v13, v1.children().back()); 408 EXPECT_EQ(&v13, v1.children().back());
437 409
438 OrderChangeObserver::Changes changes = observer.GetAndClearChanges(); 410 OrderChangeObserver::Changes changes = observer.GetAndClearChanges();
439 EXPECT_EQ(2U, changes.size()); 411 EXPECT_EQ(2U, changes.size());
440 EXPECT_EQ(&v11, changes[0].node); 412 EXPECT_EQ(&v11, changes[0].node);
441 EXPECT_EQ(&v12, changes[0].relative_node); 413 EXPECT_EQ(&v12, changes[0].relative_node);
442 EXPECT_EQ(ORDER_BELOW, changes[0].direction); 414 EXPECT_EQ(ORDER_BELOW, changes[0].direction);
443 EXPECT_EQ(NodeObserver::DISPOSITION_CHANGING, changes[0].phase);
444 415
445 EXPECT_EQ(&v11, changes[1].node); 416 EXPECT_EQ(&v11, changes[1].node);
446 EXPECT_EQ(&v12, changes[1].relative_node); 417 EXPECT_EQ(&v12, changes[1].relative_node);
447 EXPECT_EQ(ORDER_BELOW, changes[1].direction); 418 EXPECT_EQ(ORDER_BELOW, changes[1].direction);
448 EXPECT_EQ(NodeObserver::DISPOSITION_CHANGED, changes[1].phase);
449 } 419 }
450 420
451 { 421 {
452 OrderChangeObserver observer(&v11); 422 OrderChangeObserver observer(&v11);
453 423
454 // Move v11 above v12. 424 // Move v11 above v12.
455 // Resulting order: v12. v11, v13 425 // Resulting order: v12. v11, v13
456 v11.Reorder(&v12, ORDER_ABOVE); 426 v11.Reorder(&v12, ORDER_ABOVE);
457 EXPECT_EQ(&v12, v1.children().front()); 427 EXPECT_EQ(&v12, v1.children().front());
458 EXPECT_EQ(&v13, v1.children().back()); 428 EXPECT_EQ(&v13, v1.children().back());
459 429
460 OrderChangeObserver::Changes changes = observer.GetAndClearChanges(); 430 OrderChangeObserver::Changes changes = observer.GetAndClearChanges();
461 EXPECT_EQ(2U, changes.size()); 431 EXPECT_EQ(2U, changes.size());
462 EXPECT_EQ(&v11, changes[0].node); 432 EXPECT_EQ(&v11, changes[0].node);
463 EXPECT_EQ(&v12, changes[0].relative_node); 433 EXPECT_EQ(&v12, changes[0].relative_node);
464 EXPECT_EQ(ORDER_ABOVE, changes[0].direction); 434 EXPECT_EQ(ORDER_ABOVE, changes[0].direction);
465 EXPECT_EQ(NodeObserver::DISPOSITION_CHANGING, changes[0].phase);
466 435
467 EXPECT_EQ(&v11, changes[1].node); 436 EXPECT_EQ(&v11, changes[1].node);
468 EXPECT_EQ(&v12, changes[1].relative_node); 437 EXPECT_EQ(&v12, changes[1].relative_node);
469 EXPECT_EQ(ORDER_ABOVE, changes[1].direction); 438 EXPECT_EQ(ORDER_ABOVE, changes[1].direction);
470 EXPECT_EQ(NodeObserver::DISPOSITION_CHANGED, changes[1].phase);
471 } 439 }
472 440
473 { 441 {
474 OrderChangeObserver observer(&v11); 442 OrderChangeObserver observer(&v11);
475 443
476 // Move v11 below v12. 444 // Move v11 below v12.
477 // Resulting order: v11, v12, v13 445 // Resulting order: v11, v12, v13
478 v11.Reorder(&v12, ORDER_BELOW); 446 v11.Reorder(&v12, ORDER_BELOW);
479 EXPECT_EQ(&v11, v1.children().front()); 447 EXPECT_EQ(&v11, v1.children().front());
480 EXPECT_EQ(&v13, v1.children().back()); 448 EXPECT_EQ(&v13, v1.children().back());
481 449
482 OrderChangeObserver::Changes changes = observer.GetAndClearChanges(); 450 OrderChangeObserver::Changes changes = observer.GetAndClearChanges();
483 EXPECT_EQ(2U, changes.size()); 451 EXPECT_EQ(2U, changes.size());
484 EXPECT_EQ(&v11, changes[0].node); 452 EXPECT_EQ(&v11, changes[0].node);
485 EXPECT_EQ(&v12, changes[0].relative_node); 453 EXPECT_EQ(&v12, changes[0].relative_node);
486 EXPECT_EQ(ORDER_BELOW, changes[0].direction); 454 EXPECT_EQ(ORDER_BELOW, changes[0].direction);
487 EXPECT_EQ(NodeObserver::DISPOSITION_CHANGING, changes[0].phase);
488 455
489 EXPECT_EQ(&v11, changes[1].node); 456 EXPECT_EQ(&v11, changes[1].node);
490 EXPECT_EQ(&v12, changes[1].relative_node); 457 EXPECT_EQ(&v12, changes[1].relative_node);
491 EXPECT_EQ(ORDER_BELOW, changes[1].direction); 458 EXPECT_EQ(ORDER_BELOW, changes[1].direction);
492 EXPECT_EQ(NodeObserver::DISPOSITION_CHANGED, changes[1].phase);
493 } 459 }
494 } 460 }
495 461
496 namespace { 462 namespace {
497 463
498 typedef std::vector<std::string> Changes; 464 typedef std::vector<std::string> Changes;
499 465
500 std::string NodeIdToString(Id id) { 466 std::string NodeIdToString(Id id) {
501 return (id == 0) ? "null" : 467 return (id == 0) ? "null" :
502 base::StringPrintf("%d,%d", HiWord(id), LoWord(id)); 468 base::StringPrintf("%d,%d", HiWord(id), LoWord(id));
503 } 469 }
504 470
505 std::string RectToString(const gfx::Rect& rect) { 471 std::string RectToString(const gfx::Rect& rect) {
506 return base::StringPrintf("%d,%d %dx%d", 472 return base::StringPrintf("%d,%d %dx%d",
507 rect.x(), rect.y(), rect.width(), rect.height()); 473 rect.x(), rect.y(), rect.width(), rect.height());
508 } 474 }
509 475
510 std::string PhaseToString(NodeObserver::DispositionChangePhase phase) {
511 return phase == NodeObserver::DISPOSITION_CHANGING ?
512 "changing" : "changed";
513 }
514
515 class BoundsChangeObserver : public NodeObserver { 476 class BoundsChangeObserver : public NodeObserver {
516 public: 477 public:
517 explicit BoundsChangeObserver(Node* node) : node_(node) { 478 explicit BoundsChangeObserver(Node* node) : node_(node) {
518 node_->AddObserver(this); 479 node_->AddObserver(this);
519 } 480 }
520 virtual ~BoundsChangeObserver() { 481 virtual ~BoundsChangeObserver() {
521 node_->RemoveObserver(this); 482 node_->RemoveObserver(this);
522 } 483 }
523 484
524 Changes GetAndClearChanges() { 485 Changes GetAndClearChanges() {
525 Changes changes; 486 Changes changes;
526 changes.swap(changes_); 487 changes.swap(changes_);
527 return changes; 488 return changes;
528 } 489 }
529 490
530 private: 491 private:
531 // Overridden from NodeObserver: 492 // Overridden from NodeObserver:
532 virtual void OnNodeBoundsChange(Node* node, 493 virtual void OnNodeBoundsChanging(Node* node,
533 const gfx::Rect& old_bounds, 494 const gfx::Rect& old_bounds,
534 const gfx::Rect& new_bounds, 495 const gfx::Rect& new_bounds) OVERRIDE {
535 DispositionChangePhase phase) OVERRIDE {
536 changes_.push_back( 496 changes_.push_back(
537 base::StringPrintf( 497 base::StringPrintf(
538 "node=%s old_bounds=%s new_bounds=%s phase=%s", 498 "node=%s old_bounds=%s new_bounds=%s phase=changing",
539 NodeIdToString(node->id()).c_str(), 499 NodeIdToString(node->id()).c_str(),
540 RectToString(old_bounds).c_str(), 500 RectToString(old_bounds).c_str(),
541 RectToString(new_bounds).c_str(), 501 RectToString(new_bounds).c_str()));
542 PhaseToString(phase).c_str())); 502 }
503 virtual void OnNodeBoundsChanged(Node* node,
504 const gfx::Rect& old_bounds,
505 const gfx::Rect& new_bounds) OVERRIDE {
506 changes_.push_back(
507 base::StringPrintf(
508 "node=%s old_bounds=%s new_bounds=%s phase=changed",
509 NodeIdToString(node->id()).c_str(),
510 RectToString(old_bounds).c_str(),
511 RectToString(new_bounds).c_str()));
543 } 512 }
544 513
545 Node* node_; 514 Node* node_;
546 Changes changes_; 515 Changes changes_;
547 516
548 DISALLOW_COPY_AND_ASSIGN(BoundsChangeObserver); 517 DISALLOW_COPY_AND_ASSIGN(BoundsChangeObserver);
549 }; 518 };
550 519
551 } // namespace 520 } // namespace
552 521
553 TEST_F(NodeObserverTest, SetBounds) { 522 TEST_F(NodeObserverTest, SetBounds) {
554 TestNode v1; 523 TestNode v1;
555 { 524 {
556 BoundsChangeObserver observer(&v1); 525 BoundsChangeObserver observer(&v1);
557 v1.SetBounds(gfx::Rect(0, 0, 100, 100)); 526 v1.SetBounds(gfx::Rect(0, 0, 100, 100));
558 527
559 Changes changes = observer.GetAndClearChanges(); 528 Changes changes = observer.GetAndClearChanges();
560 EXPECT_EQ(2U, changes.size()); 529 EXPECT_EQ(2U, changes.size());
561 EXPECT_EQ( 530 EXPECT_EQ(
562 "node=0,1 old_bounds=0,0 0x0 new_bounds=0,0 100x100 phase=changing", 531 "node=0,1 old_bounds=0,0 0x0 new_bounds=0,0 100x100 phase=changing",
563 changes[0]); 532 changes[0]);
564 EXPECT_EQ( 533 EXPECT_EQ(
565 "node=0,1 old_bounds=0,0 0x0 new_bounds=0,0 100x100 phase=changed", 534 "node=0,1 old_bounds=0,0 0x0 new_bounds=0,0 100x100 phase=changed",
566 changes[1]); 535 changes[1]);
567 } 536 }
568 } 537 }
569 538
570 } // namespace view_manager 539 } // namespace view_manager
571 } // namespace mojo 540 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698