OLD | NEW |
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 <string> | 5 #include <string> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
11 #include "base/run_loop.h" | 11 #include "base/run_loop.h" |
12 #include "base/strings/stringprintf.h" | 12 #include "base/strings/stringprintf.h" |
13 #include "mojo/public/cpp/bindings/allocation_scope.h" | |
14 #include "mojo/public/cpp/environment/environment.h" | 13 #include "mojo/public/cpp/environment/environment.h" |
15 #include "mojo/public/cpp/shell/connect.h" | 14 #include "mojo/public/cpp/shell/connect.h" |
16 #include "mojo/services/public/cpp/view_manager/util.h" | 15 #include "mojo/services/public/cpp/view_manager/util.h" |
17 #include "mojo/services/public/cpp/view_manager/view_manager_types.h" | 16 #include "mojo/services/public/cpp/view_manager/view_manager_types.h" |
18 #include "mojo/services/public/interfaces/view_manager/view_manager.mojom.h" | 17 #include "mojo/services/public/interfaces/view_manager/view_manager.mojom.h" |
19 #include "mojo/shell/shell_test_helper.h" | 18 #include "mojo/shell/shell_test_helper.h" |
20 #include "testing/gtest/include/gtest/gtest.h" | 19 #include "testing/gtest/include/gtest/gtest.h" |
21 | 20 |
22 namespace mojo { | 21 namespace mojo { |
23 namespace view_manager { | 22 namespace view_manager { |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 NodeIdToString(node_id).c_str(), | 54 NodeIdToString(node_id).c_str(), |
56 NodeIdToString(parent_id).c_str(), | 55 NodeIdToString(parent_id).c_str(), |
57 NodeIdToString(view_id).c_str()); | 56 NodeIdToString(view_id).c_str()); |
58 } | 57 } |
59 | 58 |
60 TransportNodeId parent_id; | 59 TransportNodeId parent_id; |
61 TransportNodeId node_id; | 60 TransportNodeId node_id; |
62 TransportNodeId view_id; | 61 TransportNodeId view_id; |
63 }; | 62 }; |
64 | 63 |
65 void INodesToTestNodes(const mojo::Array<INode>& data, | 64 void INodesToTestNodes(const mojo::Array<INodePtr>& data, |
66 std::vector<TestNode>* test_nodes) { | 65 std::vector<TestNode>* test_nodes) { |
67 for (size_t i = 0; i < data.size(); ++i) { | 66 for (size_t i = 0; i < data.size(); ++i) { |
68 TestNode node; | 67 TestNode node; |
69 node.parent_id = data[i].parent_id(); | 68 node.parent_id = data[i]->parent_id; |
70 node.node_id = data[i].node_id(); | 69 node.node_id = data[i]->node_id; |
71 node.view_id = data[i].view_id(); | 70 node.view_id = data[i]->view_id; |
72 test_nodes->push_back(node); | 71 test_nodes->push_back(node); |
73 } | 72 } |
74 } | 73 } |
75 | 74 |
76 // Callback that results in a vector of INodes. The INodes are converted to | 75 // Callback that results in a vector of INodes. The INodes are converted to |
77 // TestNodes. | 76 // TestNodes. |
78 void INodesCallback(std::vector<TestNode>* test_nodes, | 77 void INodesCallback(std::vector<TestNode>* test_nodes, |
79 const mojo::Array<INode>& data) { | 78 mojo::Array<INodePtr> data) { |
80 INodesToTestNodes(data, test_nodes); | 79 INodesToTestNodes(data, test_nodes); |
81 current_run_loop->Quit(); | 80 current_run_loop->Quit(); |
82 } | 81 } |
83 | 82 |
84 // Creates an id used for transport from the specified parameters. | 83 // Creates an id used for transport from the specified parameters. |
85 TransportNodeId CreateNodeId(TransportConnectionId connection_id, | 84 TransportNodeId CreateNodeId(TransportConnectionId connection_id, |
86 TransportConnectionSpecificNodeId node_id) { | 85 TransportConnectionSpecificNodeId node_id) { |
87 return (connection_id << 16) | node_id; | 86 return (connection_id << 16) | node_id; |
88 } | 87 } |
89 | 88 |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 return; | 213 return; |
215 quit_count_ = count - changes_.size(); | 214 quit_count_ = count - changes_.size(); |
216 DoRunLoop(); | 215 DoRunLoop(); |
217 } | 216 } |
218 | 217 |
219 private: | 218 private: |
220 // IViewManagerClient overrides: | 219 // IViewManagerClient overrides: |
221 virtual void OnConnectionEstablished( | 220 virtual void OnConnectionEstablished( |
222 TransportConnectionId connection_id, | 221 TransportConnectionId connection_id, |
223 TransportChangeId next_server_change_id, | 222 TransportChangeId next_server_change_id, |
224 const mojo::Array<INode>& nodes) OVERRIDE { | 223 mojo::Array<INodePtr> nodes) OVERRIDE { |
225 id_ = connection_id; | 224 id_ = connection_id; |
226 next_server_change_id_ = next_server_change_id; | 225 next_server_change_id_ = next_server_change_id; |
227 INodesToTestNodes(nodes, &initial_nodes_); | 226 INodesToTestNodes(nodes, &initial_nodes_); |
228 if (current_run_loop) | 227 if (current_run_loop) |
229 current_run_loop->Quit(); | 228 current_run_loop->Quit(); |
230 } | 229 } |
231 virtual void OnServerChangeIdAdvanced( | 230 virtual void OnServerChangeIdAdvanced( |
232 uint32_t next_server_change_id) OVERRIDE { | 231 uint32_t next_server_change_id) OVERRIDE { |
233 changes_.push_back( | 232 changes_.push_back( |
234 base::StringPrintf( | 233 base::StringPrintf( |
235 "ServerChangeIdAdvanced %d", | 234 "ServerChangeIdAdvanced %d", |
236 static_cast<int>(next_server_change_id))); | 235 static_cast<int>(next_server_change_id))); |
237 QuitIfNecessary(); | 236 QuitIfNecessary(); |
238 } | 237 } |
239 virtual void OnNodeHierarchyChanged( | 238 virtual void OnNodeHierarchyChanged( |
240 TransportNodeId node, | 239 TransportNodeId node, |
241 TransportNodeId new_parent, | 240 TransportNodeId new_parent, |
242 TransportNodeId old_parent, | 241 TransportNodeId old_parent, |
243 TransportChangeId server_change_id, | 242 TransportChangeId server_change_id, |
244 const mojo::Array<INode>& nodes) OVERRIDE { | 243 mojo::Array<INodePtr> nodes) OVERRIDE { |
245 changes_.push_back( | 244 changes_.push_back( |
246 base::StringPrintf( | 245 base::StringPrintf( |
247 "HierarchyChanged change_id=%d node=%s new_parent=%s old_parent=%s", | 246 "HierarchyChanged change_id=%d node=%s new_parent=%s old_parent=%s", |
248 static_cast<int>(server_change_id), | 247 static_cast<int>(server_change_id), |
249 NodeIdToString(node).c_str(), | 248 NodeIdToString(node).c_str(), |
250 NodeIdToString(new_parent).c_str(), | 249 NodeIdToString(new_parent).c_str(), |
251 NodeIdToString(old_parent).c_str())); | 250 NodeIdToString(old_parent).c_str())); |
252 hierarchy_changed_nodes_.clear(); | 251 hierarchy_changed_nodes_.clear(); |
253 INodesToTestNodes(nodes, &hierarchy_changed_nodes_); | 252 INodesToTestNodes(nodes, &hierarchy_changed_nodes_); |
254 QuitIfNecessary(); | 253 QuitIfNecessary(); |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
379 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 1)); | 378 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 1)); |
380 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 2)); | 379 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 2)); |
381 | 380 |
382 EXPECT_TRUE(client_.GetAndClearChanges().empty()); | 381 EXPECT_TRUE(client_.GetAndClearChanges().empty()); |
383 | 382 |
384 EstablishSecondConnection(); | 383 EstablishSecondConnection(); |
385 EXPECT_TRUE(client2_.GetAndClearChanges().empty()); | 384 EXPECT_TRUE(client2_.GetAndClearChanges().empty()); |
386 | 385 |
387 // Make 2 a child of 1. | 386 // Make 2 a child of 1. |
388 { | 387 { |
389 AllocationScope scope; | |
390 ASSERT_TRUE(AddNode(view_manager_.get(), | 388 ASSERT_TRUE(AddNode(view_manager_.get(), |
391 CreateNodeId(client_.id(), 1), | 389 CreateNodeId(client_.id(), 1), |
392 CreateNodeId(client_.id(), 2), | 390 CreateNodeId(client_.id(), 2), |
393 1)); | 391 1)); |
394 Changes changes(client_.GetAndClearChanges()); | 392 Changes changes(client_.GetAndClearChanges()); |
395 ASSERT_TRUE(changes.empty()); | 393 ASSERT_TRUE(changes.empty()); |
396 | 394 |
397 client2_.DoRunLoopUntilChangesCount(1); | 395 client2_.DoRunLoopUntilChangesCount(1); |
398 changes = client2_.GetAndClearChanges(); | 396 changes = client2_.GetAndClearChanges(); |
399 ASSERT_EQ(1u, changes.size()); | 397 ASSERT_EQ(1u, changes.size()); |
400 EXPECT_EQ("ServerChangeIdAdvanced 2", changes[0]); | 398 EXPECT_EQ("ServerChangeIdAdvanced 2", changes[0]); |
401 } | 399 } |
402 | 400 |
403 // Remove 2 from its parent. | 401 // Remove 2 from its parent. |
404 { | 402 { |
405 AllocationScope scope; | |
406 ASSERT_TRUE(RemoveNodeFromParent(view_manager_.get(), | 403 ASSERT_TRUE(RemoveNodeFromParent(view_manager_.get(), |
407 CreateNodeId(client_.id(), 2), | 404 CreateNodeId(client_.id(), 2), |
408 2)); | 405 2)); |
409 Changes changes(client_.GetAndClearChanges()); | 406 Changes changes(client_.GetAndClearChanges()); |
410 ASSERT_TRUE(changes.empty()); | 407 ASSERT_TRUE(changes.empty()); |
411 | 408 |
412 client2_.DoRunLoopUntilChangesCount(1); | 409 client2_.DoRunLoopUntilChangesCount(1); |
413 changes = client2_.GetAndClearChanges(); | 410 changes = client2_.GetAndClearChanges(); |
414 ASSERT_EQ(1u, changes.size()); | 411 ASSERT_EQ(1u, changes.size()); |
415 EXPECT_EQ("ServerChangeIdAdvanced 3", changes[0]); | 412 EXPECT_EQ("ServerChangeIdAdvanced 3", changes[0]); |
416 } | 413 } |
417 } | 414 } |
418 | 415 |
419 // Verifies AddNode fails when node is already in position. | 416 // Verifies AddNode fails when node is already in position. |
420 TEST_F(ViewManagerConnectionTest, AddNodeWithNoChange) { | 417 TEST_F(ViewManagerConnectionTest, AddNodeWithNoChange) { |
421 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 1)); | 418 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 1)); |
422 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 2)); | 419 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 2)); |
423 | 420 |
424 EXPECT_TRUE(client_.GetAndClearChanges().empty()); | 421 EXPECT_TRUE(client_.GetAndClearChanges().empty()); |
425 | 422 |
426 EstablishSecondConnection(); | 423 EstablishSecondConnection(); |
427 EXPECT_TRUE(client2_.GetAndClearChanges().empty()); | 424 EXPECT_TRUE(client2_.GetAndClearChanges().empty()); |
428 | 425 |
429 // Make 2 a child of 1. | 426 // Make 2 a child of 1. |
430 { | 427 { |
431 AllocationScope scope; | |
432 ASSERT_TRUE(AddNode(view_manager_.get(), | 428 ASSERT_TRUE(AddNode(view_manager_.get(), |
433 CreateNodeId(client_.id(), 1), | 429 CreateNodeId(client_.id(), 1), |
434 CreateNodeId(client_.id(), 2), | 430 CreateNodeId(client_.id(), 2), |
435 1)); | 431 1)); |
436 Changes changes(client_.GetAndClearChanges()); | 432 Changes changes(client_.GetAndClearChanges()); |
437 ASSERT_TRUE(changes.empty()); | 433 ASSERT_TRUE(changes.empty()); |
438 | 434 |
439 client2_.DoRunLoopUntilChangesCount(1); | 435 client2_.DoRunLoopUntilChangesCount(1); |
440 changes = client2_.GetAndClearChanges(); | 436 changes = client2_.GetAndClearChanges(); |
441 ASSERT_EQ(1u, changes.size()); | 437 ASSERT_EQ(1u, changes.size()); |
442 EXPECT_EQ("ServerChangeIdAdvanced 2", changes[0]); | 438 EXPECT_EQ("ServerChangeIdAdvanced 2", changes[0]); |
443 } | 439 } |
444 | 440 |
445 // Try again, this should fail. | 441 // Try again, this should fail. |
446 { | 442 { |
447 AllocationScope scope; | |
448 EXPECT_FALSE(AddNode(view_manager_.get(), | 443 EXPECT_FALSE(AddNode(view_manager_.get(), |
449 CreateNodeId(client_.id(), 1), | 444 CreateNodeId(client_.id(), 1), |
450 CreateNodeId(client_.id(), 2), | 445 CreateNodeId(client_.id(), 2), |
451 2)); | 446 2)); |
452 Changes changes(client_.GetAndClearChanges()); | 447 Changes changes(client_.GetAndClearChanges()); |
453 EXPECT_TRUE(changes.empty()); | 448 EXPECT_TRUE(changes.empty()); |
454 } | 449 } |
455 } | 450 } |
456 | 451 |
457 // Verifies AddNode fails when node is already in position. | 452 // Verifies AddNode fails when node is already in position. |
458 TEST_F(ViewManagerConnectionTest, AddAncestorFails) { | 453 TEST_F(ViewManagerConnectionTest, AddAncestorFails) { |
459 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 1)); | 454 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 1)); |
460 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 2)); | 455 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 2)); |
461 | 456 |
462 EXPECT_TRUE(client_.GetAndClearChanges().empty()); | 457 EXPECT_TRUE(client_.GetAndClearChanges().empty()); |
463 | 458 |
464 EstablishSecondConnection(); | 459 EstablishSecondConnection(); |
465 EXPECT_TRUE(client2_.GetAndClearChanges().empty()); | 460 EXPECT_TRUE(client2_.GetAndClearChanges().empty()); |
466 | 461 |
467 // Make 2 a child of 1. | 462 // Make 2 a child of 1. |
468 { | 463 { |
469 AllocationScope scope; | |
470 ASSERT_TRUE(AddNode(view_manager_.get(), | 464 ASSERT_TRUE(AddNode(view_manager_.get(), |
471 CreateNodeId(client_.id(), 1), | 465 CreateNodeId(client_.id(), 1), |
472 CreateNodeId(client_.id(), 2), | 466 CreateNodeId(client_.id(), 2), |
473 1)); | 467 1)); |
474 Changes changes(client_.GetAndClearChanges()); | 468 Changes changes(client_.GetAndClearChanges()); |
475 ASSERT_TRUE(changes.empty()); | 469 ASSERT_TRUE(changes.empty()); |
476 | 470 |
477 client2_.DoRunLoopUntilChangesCount(1); | 471 client2_.DoRunLoopUntilChangesCount(1); |
478 changes = client2_.GetAndClearChanges(); | 472 changes = client2_.GetAndClearChanges(); |
479 ASSERT_EQ(1u, changes.size()); | 473 ASSERT_EQ(1u, changes.size()); |
480 EXPECT_EQ("ServerChangeIdAdvanced 2", changes[0]); | 474 EXPECT_EQ("ServerChangeIdAdvanced 2", changes[0]); |
481 } | 475 } |
482 | 476 |
483 // Try to make 1 a child of 2, this should fail since 1 is an ancestor of 2. | 477 // Try to make 1 a child of 2, this should fail since 1 is an ancestor of 2. |
484 { | 478 { |
485 AllocationScope scope; | |
486 EXPECT_FALSE(AddNode(view_manager_.get(), | 479 EXPECT_FALSE(AddNode(view_manager_.get(), |
487 CreateNodeId(client_.id(), 2), | 480 CreateNodeId(client_.id(), 2), |
488 CreateNodeId(client_.id(), 1), | 481 CreateNodeId(client_.id(), 1), |
489 2)); | 482 2)); |
490 Changes changes(client_.GetAndClearChanges()); | 483 Changes changes(client_.GetAndClearChanges()); |
491 EXPECT_TRUE(changes.empty()); | 484 EXPECT_TRUE(changes.empty()); |
492 } | 485 } |
493 } | 486 } |
494 | 487 |
495 // Verifies adding with an invalid id fails. | 488 // Verifies adding with an invalid id fails. |
496 TEST_F(ViewManagerConnectionTest, AddWithInvalidServerId) { | 489 TEST_F(ViewManagerConnectionTest, AddWithInvalidServerId) { |
497 // Create two nodes. | 490 // Create two nodes. |
498 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 1)); | 491 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 1)); |
499 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 2)); | 492 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 2)); |
500 | 493 |
501 // Make 2 a child of 1. Supply an invalid change id, which should fail. | 494 // Make 2 a child of 1. Supply an invalid change id, which should fail. |
502 { | 495 { |
503 AllocationScope scope; | |
504 ASSERT_FALSE(AddNode(view_manager_.get(), | 496 ASSERT_FALSE(AddNode(view_manager_.get(), |
505 CreateNodeId(client_.id(), 1), | 497 CreateNodeId(client_.id(), 1), |
506 CreateNodeId(client_.id(), 2), | 498 CreateNodeId(client_.id(), 2), |
507 0)); | 499 0)); |
508 Changes changes(client_.GetAndClearChanges()); | 500 Changes changes(client_.GetAndClearChanges()); |
509 EXPECT_TRUE(changes.empty()); | 501 EXPECT_TRUE(changes.empty()); |
510 } | 502 } |
511 } | 503 } |
512 | 504 |
513 // Verifies adding to root sends right notifications. | 505 // Verifies adding to root sends right notifications. |
514 TEST_F(ViewManagerConnectionTest, AddToRoot) { | 506 TEST_F(ViewManagerConnectionTest, AddToRoot) { |
515 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 21)); | 507 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 21)); |
516 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 3)); | 508 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 3)); |
517 EXPECT_TRUE(client_.GetAndClearChanges().empty()); | 509 EXPECT_TRUE(client_.GetAndClearChanges().empty()); |
518 | 510 |
519 EstablishSecondConnection(); | 511 EstablishSecondConnection(); |
520 EXPECT_TRUE(client2_.GetAndClearChanges().empty()); | 512 EXPECT_TRUE(client2_.GetAndClearChanges().empty()); |
521 | 513 |
522 // Make 3 a child of 21. | 514 // Make 3 a child of 21. |
523 { | 515 { |
524 AllocationScope scope; | |
525 ASSERT_TRUE(AddNode(view_manager_.get(), | 516 ASSERT_TRUE(AddNode(view_manager_.get(), |
526 CreateNodeId(client_.id(), 21), | 517 CreateNodeId(client_.id(), 21), |
527 CreateNodeId(client_.id(), 3), | 518 CreateNodeId(client_.id(), 3), |
528 1)); | 519 1)); |
529 Changes changes(client_.GetAndClearChanges()); | 520 Changes changes(client_.GetAndClearChanges()); |
530 ASSERT_TRUE(changes.empty()); | 521 ASSERT_TRUE(changes.empty()); |
531 | 522 |
532 client2_.DoRunLoopUntilChangesCount(1); | 523 client2_.DoRunLoopUntilChangesCount(1); |
533 changes = client2_.GetAndClearChanges(); | 524 changes = client2_.GetAndClearChanges(); |
534 ASSERT_EQ(1u, changes.size()); | 525 ASSERT_EQ(1u, changes.size()); |
535 EXPECT_EQ("ServerChangeIdAdvanced 2", changes[0]); | 526 EXPECT_EQ("ServerChangeIdAdvanced 2", changes[0]); |
536 } | 527 } |
537 | 528 |
538 // Make 21 a child of the root. | 529 // Make 21 a child of the root. |
539 { | 530 { |
540 AllocationScope scope; | |
541 ASSERT_TRUE(AddNode(view_manager_.get(), | 531 ASSERT_TRUE(AddNode(view_manager_.get(), |
542 CreateNodeId(0, 1), | 532 CreateNodeId(0, 1), |
543 CreateNodeId(client_.id(), 21), | 533 CreateNodeId(client_.id(), 21), |
544 2)); | 534 2)); |
545 Changes changes(client_.GetAndClearChanges()); | 535 Changes changes(client_.GetAndClearChanges()); |
546 ASSERT_TRUE(changes.empty()); | 536 ASSERT_TRUE(changes.empty()); |
547 | 537 |
548 client2_.DoRunLoopUntilChangesCount(1); | 538 client2_.DoRunLoopUntilChangesCount(1); |
549 changes = client2_.GetAndClearChanges(); | 539 changes = client2_.GetAndClearChanges(); |
550 ASSERT_EQ(1u, changes.size()); | 540 ASSERT_EQ(1u, changes.size()); |
551 EXPECT_EQ( | 541 EXPECT_EQ( |
552 "HierarchyChanged change_id=2 node=1,21 new_parent=0,1 old_parent=null", | 542 "HierarchyChanged change_id=2 node=1,21 new_parent=0,1 old_parent=null", |
553 changes[0]); | 543 changes[0]); |
554 } | 544 } |
555 } | 545 } |
556 | 546 |
557 // Verifies adding to root sends right notifications. | 547 // Verifies adding to root sends right notifications. |
558 TEST_F(ViewManagerConnectionTest, NodeHierarchyChangedNodes) { | 548 TEST_F(ViewManagerConnectionTest, NodeHierarchyChangedNodes) { |
559 // Create nodes 1 and 11 with 1 parented to the root and 11 a child of 1. | 549 // Create nodes 1 and 11 with 1 parented to the root and 11 a child of 1. |
560 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 1)); | 550 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 1)); |
561 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 11)); | 551 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 11)); |
562 | 552 |
563 // Make 11 a child of 1. | 553 // Make 11 a child of 1. |
564 { | 554 { |
565 AllocationScope scope; | |
566 ASSERT_TRUE(AddNode(view_manager_.get(), | 555 ASSERT_TRUE(AddNode(view_manager_.get(), |
567 CreateNodeId(client_.id(), 1), | 556 CreateNodeId(client_.id(), 1), |
568 CreateNodeId(client_.id(), 11), | 557 CreateNodeId(client_.id(), 11), |
569 1)); | 558 1)); |
570 ASSERT_TRUE(client_.GetAndClearChanges().empty()); | 559 ASSERT_TRUE(client_.GetAndClearChanges().empty()); |
571 } | 560 } |
572 | 561 |
573 EstablishSecondConnection(); | 562 EstablishSecondConnection(); |
574 | 563 |
575 // Make 1 a child of the root. | 564 // Make 1 a child of the root. |
576 { | 565 { |
577 AllocationScope scope; | |
578 ASSERT_TRUE(AddNode(view_manager_.get(), | 566 ASSERT_TRUE(AddNode(view_manager_.get(), |
579 CreateNodeId(0, 1), | 567 CreateNodeId(0, 1), |
580 CreateNodeId(client_.id(), 1), | 568 CreateNodeId(client_.id(), 1), |
581 2)); | 569 2)); |
582 ASSERT_TRUE(client_.GetAndClearChanges().empty()); | 570 ASSERT_TRUE(client_.GetAndClearChanges().empty()); |
583 | 571 |
584 // Client 2 should get a hierarchy change that includes the new nodes as it | 572 // Client 2 should get a hierarchy change that includes the new nodes as it |
585 // has not yet seen them. | 573 // has not yet seen them. |
586 client2_.DoRunLoopUntilChangesCount(1); | 574 client2_.DoRunLoopUntilChangesCount(1); |
587 Changes changes(client2_.GetAndClearChanges()); | 575 Changes changes(client2_.GetAndClearChanges()); |
588 ASSERT_EQ(1u, changes.size()); | 576 ASSERT_EQ(1u, changes.size()); |
589 EXPECT_EQ( | 577 EXPECT_EQ( |
590 "HierarchyChanged change_id=2 node=1,1 new_parent=0,1 old_parent=null", | 578 "HierarchyChanged change_id=2 node=1,1 new_parent=0,1 old_parent=null", |
591 changes[0]); | 579 changes[0]); |
592 const std::vector<TestNode>& nodes(client2_.hierarchy_changed_nodes()); | 580 const std::vector<TestNode>& nodes(client2_.hierarchy_changed_nodes()); |
593 ASSERT_EQ(2u, nodes.size()); | 581 ASSERT_EQ(2u, nodes.size()); |
594 EXPECT_EQ("node=1,1 parent=0,1 view=null", nodes[0].ToString()); | 582 EXPECT_EQ("node=1,1 parent=0,1 view=null", nodes[0].ToString()); |
595 EXPECT_EQ("node=1,11 parent=1,1 view=null", nodes[1].ToString()); | 583 EXPECT_EQ("node=1,11 parent=1,1 view=null", nodes[1].ToString()); |
596 } | 584 } |
597 | 585 |
598 // Remove 1 from the root. | 586 // Remove 1 from the root. |
599 { | 587 { |
600 AllocationScope scope; | |
601 ASSERT_TRUE(RemoveNodeFromParent(view_manager_.get(), | 588 ASSERT_TRUE(RemoveNodeFromParent(view_manager_.get(), |
602 CreateNodeId(client_.id(), 1), | 589 CreateNodeId(client_.id(), 1), |
603 3)); | 590 3)); |
604 ASSERT_TRUE(client_.GetAndClearChanges().empty()); | 591 ASSERT_TRUE(client_.GetAndClearChanges().empty()); |
605 | 592 |
606 client2_.DoRunLoopUntilChangesCount(1); | 593 client2_.DoRunLoopUntilChangesCount(1); |
607 Changes changes(client2_.GetAndClearChanges()); | 594 Changes changes(client2_.GetAndClearChanges()); |
608 ASSERT_EQ(1u, changes.size()); | 595 ASSERT_EQ(1u, changes.size()); |
609 EXPECT_EQ( | 596 EXPECT_EQ( |
610 "HierarchyChanged change_id=3 node=1,1 new_parent=null old_parent=0,1", | 597 "HierarchyChanged change_id=3 node=1,1 new_parent=null old_parent=0,1", |
611 changes[0]); | 598 changes[0]); |
612 } | 599 } |
613 | 600 |
614 // Create another node, 111, parent it to 11. | 601 // Create another node, 111, parent it to 11. |
615 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 111)); | 602 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 111)); |
616 { | 603 { |
617 AllocationScope scope; | |
618 ASSERT_TRUE(AddNode(view_manager_.get(), | 604 ASSERT_TRUE(AddNode(view_manager_.get(), |
619 CreateNodeId(client_.id(), 11), | 605 CreateNodeId(client_.id(), 11), |
620 CreateNodeId(client_.id(), 111), | 606 CreateNodeId(client_.id(), 111), |
621 4)); | 607 4)); |
622 ASSERT_TRUE(client_.GetAndClearChanges().empty()); | 608 ASSERT_TRUE(client_.GetAndClearChanges().empty()); |
623 | 609 |
624 client2_.DoRunLoopUntilChangesCount(1); | 610 client2_.DoRunLoopUntilChangesCount(1); |
625 Changes changes(client2_.GetAndClearChanges()); | 611 Changes changes(client2_.GetAndClearChanges()); |
626 ASSERT_EQ(1u, changes.size()); | 612 ASSERT_EQ(1u, changes.size()); |
627 // Even though 11 isn't attached to the root client 2 is still notified of | 613 // Even though 11 isn't attached to the root client 2 is still notified of |
(...skipping 27 matching lines...) Expand all Loading... |
655 TEST_F(ViewManagerConnectionTest, NodeHierarchyChangedAddingKnownToUnknown) { | 641 TEST_F(ViewManagerConnectionTest, NodeHierarchyChangedAddingKnownToUnknown) { |
656 // Create the following structure: root -> 1 -> 11 and 2->21 (2 has no | 642 // Create the following structure: root -> 1 -> 11 and 2->21 (2 has no |
657 // parent). | 643 // parent). |
658 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 1)); | 644 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 1)); |
659 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 11)); | 645 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 11)); |
660 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 2)); | 646 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 2)); |
661 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 21)); | 647 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 21)); |
662 | 648 |
663 // Set up the hierarchy. | 649 // Set up the hierarchy. |
664 { | 650 { |
665 AllocationScope scope; | |
666 ASSERT_TRUE(AddNode(view_manager_.get(), | 651 ASSERT_TRUE(AddNode(view_manager_.get(), |
667 CreateNodeId(0, 1), | 652 CreateNodeId(0, 1), |
668 CreateNodeId(client_.id(), 1), | 653 CreateNodeId(client_.id(), 1), |
669 1)); | 654 1)); |
670 ASSERT_TRUE(AddNode(view_manager_.get(), | 655 ASSERT_TRUE(AddNode(view_manager_.get(), |
671 CreateNodeId(client_.id(), 1), | 656 CreateNodeId(client_.id(), 1), |
672 CreateNodeId(client_.id(), 11), | 657 CreateNodeId(client_.id(), 11), |
673 2)); | 658 2)); |
674 ASSERT_TRUE(AddNode(view_manager_.get(), | 659 ASSERT_TRUE(AddNode(view_manager_.get(), |
675 CreateNodeId(client_.id(), 2), | 660 CreateNodeId(client_.id(), 2), |
676 CreateNodeId(client_.id(), 21), | 661 CreateNodeId(client_.id(), 21), |
677 3)); | 662 3)); |
678 } | 663 } |
679 | 664 |
680 EstablishSecondConnection(); | 665 EstablishSecondConnection(); |
681 | 666 |
682 // Remove 11. | 667 // Remove 11. |
683 { | 668 { |
684 AllocationScope scope; | |
685 ASSERT_TRUE(RemoveNodeFromParent(view_manager_.get(), | 669 ASSERT_TRUE(RemoveNodeFromParent(view_manager_.get(), |
686 CreateNodeId(client_.id(), 11), | 670 CreateNodeId(client_.id(), 11), |
687 4)); | 671 4)); |
688 ASSERT_TRUE(client_.GetAndClearChanges().empty()); | 672 ASSERT_TRUE(client_.GetAndClearChanges().empty()); |
689 | 673 |
690 client2_.DoRunLoopUntilChangesCount(1); | 674 client2_.DoRunLoopUntilChangesCount(1); |
691 Changes changes(client2_.GetAndClearChanges()); | 675 Changes changes(client2_.GetAndClearChanges()); |
692 ASSERT_EQ(1u, changes.size()); | 676 ASSERT_EQ(1u, changes.size()); |
693 EXPECT_EQ( | 677 EXPECT_EQ( |
694 "HierarchyChanged change_id=4 node=1,11 new_parent=null old_parent=1,1", | 678 "HierarchyChanged change_id=4 node=1,11 new_parent=null old_parent=1,1", |
695 changes[0]); | 679 changes[0]); |
696 EXPECT_TRUE(client2_.hierarchy_changed_nodes().empty()); | 680 EXPECT_TRUE(client2_.hierarchy_changed_nodes().empty()); |
697 } | 681 } |
698 | 682 |
699 // Add 11 to 21. As client2 knows about 11 it should receive the new | 683 // Add 11 to 21. As client2 knows about 11 it should receive the new |
700 // hierarchy. | 684 // hierarchy. |
701 { | 685 { |
702 AllocationScope scope; | |
703 ASSERT_TRUE(AddNode(view_manager_.get(), | 686 ASSERT_TRUE(AddNode(view_manager_.get(), |
704 CreateNodeId(client_.id(), 21), | 687 CreateNodeId(client_.id(), 21), |
705 CreateNodeId(client_.id(), 11), | 688 CreateNodeId(client_.id(), 11), |
706 5)); | 689 5)); |
707 ASSERT_TRUE(client_.GetAndClearChanges().empty()); | 690 ASSERT_TRUE(client_.GetAndClearChanges().empty()); |
708 | 691 |
709 client2_.DoRunLoopUntilChangesCount(1); | 692 client2_.DoRunLoopUntilChangesCount(1); |
710 Changes changes(client2_.GetAndClearChanges()); | 693 Changes changes(client2_.GetAndClearChanges()); |
711 ASSERT_EQ(1u, changes.size()); | 694 ASSERT_EQ(1u, changes.size()); |
712 EXPECT_EQ( | 695 EXPECT_EQ( |
713 "HierarchyChanged change_id=5 node=1,11 new_parent=1,21 " | 696 "HierarchyChanged change_id=5 node=1,11 new_parent=1,21 " |
714 "old_parent=null", changes[0]); | 697 "old_parent=null", changes[0]); |
715 const std::vector<TestNode>& nodes(client2_.hierarchy_changed_nodes()); | 698 const std::vector<TestNode>& nodes(client2_.hierarchy_changed_nodes()); |
716 ASSERT_EQ(2u, nodes.size()); | 699 ASSERT_EQ(2u, nodes.size()); |
717 EXPECT_EQ("node=1,2 parent=null view=null", nodes[0].ToString()); | 700 EXPECT_EQ("node=1,2 parent=null view=null", nodes[0].ToString()); |
718 EXPECT_EQ("node=1,21 parent=1,2 view=null", nodes[1].ToString()); | 701 EXPECT_EQ("node=1,21 parent=1,2 view=null", nodes[1].ToString()); |
719 } | 702 } |
720 } | 703 } |
721 | 704 |
722 // Verifies connection on told descendants of the root when connecting. | 705 // Verifies connection on told descendants of the root when connecting. |
723 TEST_F(ViewManagerConnectionTest, GetInitialNodesOnInit) { | 706 TEST_F(ViewManagerConnectionTest, GetInitialNodesOnInit) { |
724 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 21)); | 707 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 21)); |
725 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 3)); | 708 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 3)); |
726 EXPECT_TRUE(client_.GetAndClearChanges().empty()); | 709 EXPECT_TRUE(client_.GetAndClearChanges().empty()); |
727 | 710 |
728 // Make 3 a child of 21. | 711 // Make 3 a child of 21. |
729 { | 712 { |
730 AllocationScope scope; | |
731 ASSERT_TRUE(AddNode(view_manager_.get(), | 713 ASSERT_TRUE(AddNode(view_manager_.get(), |
732 CreateNodeId(client_.id(), 21), | 714 CreateNodeId(client_.id(), 21), |
733 CreateNodeId(client_.id(), 3), | 715 CreateNodeId(client_.id(), 3), |
734 1)); | 716 1)); |
735 ASSERT_TRUE(client_.GetAndClearChanges().empty()); | 717 ASSERT_TRUE(client_.GetAndClearChanges().empty()); |
736 } | 718 } |
737 | 719 |
738 // Make 21 a child of the root. | 720 // Make 21 a child of the root. |
739 { | 721 { |
740 AllocationScope scope; | |
741 ASSERT_TRUE(AddNode(view_manager_.get(), | 722 ASSERT_TRUE(AddNode(view_manager_.get(), |
742 CreateNodeId(0, 1), | 723 CreateNodeId(0, 1), |
743 CreateNodeId(client_.id(), 21), | 724 CreateNodeId(client_.id(), 21), |
744 2)); | 725 2)); |
745 ASSERT_TRUE(client_.GetAndClearChanges().empty()); | 726 ASSERT_TRUE(client_.GetAndClearChanges().empty()); |
746 } | 727 } |
747 | 728 |
748 EstablishSecondConnection(); | 729 EstablishSecondConnection(); |
749 // Should get notification of children of the root. | 730 // Should get notification of children of the root. |
750 const std::vector<TestNode>& nodes(client2_.initial_nodes()); | 731 const std::vector<TestNode>& nodes(client2_.initial_nodes()); |
751 ASSERT_EQ(3u, nodes.size()); | 732 ASSERT_EQ(3u, nodes.size()); |
752 EXPECT_EQ("node=0,1 parent=null view=null", nodes[0].ToString()); | 733 EXPECT_EQ("node=0,1 parent=null view=null", nodes[0].ToString()); |
753 EXPECT_EQ("node=1,21 parent=0,1 view=null", nodes[1].ToString()); | 734 EXPECT_EQ("node=1,21 parent=0,1 view=null", nodes[1].ToString()); |
754 EXPECT_EQ("node=1,3 parent=1,21 view=null", nodes[2].ToString()); | 735 EXPECT_EQ("node=1,3 parent=1,21 view=null", nodes[2].ToString()); |
755 } | 736 } |
756 | 737 |
757 // Verifies DeleteNode works. | 738 // Verifies DeleteNode works. |
758 TEST_F(ViewManagerConnectionTest, DeleteNode) { | 739 TEST_F(ViewManagerConnectionTest, DeleteNode) { |
759 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 1)); | 740 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 1)); |
760 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 2)); | 741 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 2)); |
761 EXPECT_TRUE(client_.GetAndClearChanges().empty()); | 742 EXPECT_TRUE(client_.GetAndClearChanges().empty()); |
762 | 743 |
763 EstablishSecondConnection(); | 744 EstablishSecondConnection(); |
764 EXPECT_TRUE(client2_.GetAndClearChanges().empty()); | 745 EXPECT_TRUE(client2_.GetAndClearChanges().empty()); |
765 | 746 |
766 // Make 2 a child of 1. | 747 // Make 2 a child of 1. |
767 { | 748 { |
768 AllocationScope scope; | |
769 ASSERT_TRUE(AddNode(view_manager_.get(), | 749 ASSERT_TRUE(AddNode(view_manager_.get(), |
770 CreateNodeId(client_.id(), 1), | 750 CreateNodeId(client_.id(), 1), |
771 CreateNodeId(client_.id(), 2), | 751 CreateNodeId(client_.id(), 2), |
772 1)); | 752 1)); |
773 Changes changes(client_.GetAndClearChanges()); | 753 Changes changes(client_.GetAndClearChanges()); |
774 ASSERT_TRUE(changes.empty()); | 754 ASSERT_TRUE(changes.empty()); |
775 | 755 |
776 client2_.DoRunLoopUntilChangesCount(1); | 756 client2_.DoRunLoopUntilChangesCount(1); |
777 changes = client2_.GetAndClearChanges(); | 757 changes = client2_.GetAndClearChanges(); |
778 ASSERT_EQ(1u, changes.size()); | 758 ASSERT_EQ(1u, changes.size()); |
779 EXPECT_EQ("ServerChangeIdAdvanced 2", changes[0]); | 759 EXPECT_EQ("ServerChangeIdAdvanced 2", changes[0]); |
780 } | 760 } |
781 | 761 |
782 // Add 1 to the root | 762 // Add 1 to the root |
783 { | 763 { |
784 AllocationScope scope; | |
785 ASSERT_TRUE(AddNode(view_manager_.get(), | 764 ASSERT_TRUE(AddNode(view_manager_.get(), |
786 CreateNodeId(0, 1), | 765 CreateNodeId(0, 1), |
787 CreateNodeId(client_.id(), 1), | 766 CreateNodeId(client_.id(), 1), |
788 2)); | 767 2)); |
789 Changes changes(client_.GetAndClearChanges()); | 768 Changes changes(client_.GetAndClearChanges()); |
790 ASSERT_TRUE(changes.empty()); | 769 ASSERT_TRUE(changes.empty()); |
791 | 770 |
792 client2_.DoRunLoopUntilChangesCount(1); | 771 client2_.DoRunLoopUntilChangesCount(1); |
793 changes = client2_.GetAndClearChanges(); | 772 changes = client2_.GetAndClearChanges(); |
794 ASSERT_EQ(1u, changes.size()); | 773 ASSERT_EQ(1u, changes.size()); |
795 EXPECT_EQ( | 774 EXPECT_EQ( |
796 "HierarchyChanged change_id=2 node=1,1 new_parent=0,1 old_parent=null", | 775 "HierarchyChanged change_id=2 node=1,1 new_parent=0,1 old_parent=null", |
797 changes[0]); | 776 changes[0]); |
798 } | 777 } |
799 | 778 |
800 // Delete 1. | 779 // Delete 1. |
801 { | 780 { |
802 AllocationScope scope; | |
803 ASSERT_TRUE(DeleteNode(view_manager_.get(), CreateNodeId(client_.id(), 1))); | 781 ASSERT_TRUE(DeleteNode(view_manager_.get(), CreateNodeId(client_.id(), 1))); |
804 Changes changes(client_.GetAndClearChanges()); | 782 Changes changes(client_.GetAndClearChanges()); |
805 ASSERT_TRUE(changes.empty()); | 783 ASSERT_TRUE(changes.empty()); |
806 | 784 |
807 client2_.DoRunLoopUntilChangesCount(1); | 785 client2_.DoRunLoopUntilChangesCount(1); |
808 changes = client2_.GetAndClearChanges(); | 786 changes = client2_.GetAndClearChanges(); |
809 ASSERT_EQ(1u, changes.size()); | 787 ASSERT_EQ(1u, changes.size()); |
810 EXPECT_EQ("NodeDeleted change_id=3 node=1,1", changes[0]); | 788 EXPECT_EQ("NodeDeleted change_id=3 node=1,1", changes[0]); |
811 } | 789 } |
812 } | 790 } |
(...skipping 15 matching lines...) Expand all Loading... |
828 // Verifies if a node was deleted and then reused that other clients are | 806 // Verifies if a node was deleted and then reused that other clients are |
829 // properly notified. | 807 // properly notified. |
830 TEST_F(ViewManagerConnectionTest, ReusedDeletedId) { | 808 TEST_F(ViewManagerConnectionTest, ReusedDeletedId) { |
831 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 1)); | 809 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 1)); |
832 EXPECT_TRUE(client_.GetAndClearChanges().empty()); | 810 EXPECT_TRUE(client_.GetAndClearChanges().empty()); |
833 | 811 |
834 EstablishSecondConnection(); | 812 EstablishSecondConnection(); |
835 | 813 |
836 // Make 1 a child of the root. | 814 // Make 1 a child of the root. |
837 { | 815 { |
838 AllocationScope scope; | |
839 ASSERT_TRUE(AddNode(view_manager_.get(), | 816 ASSERT_TRUE(AddNode(view_manager_.get(), |
840 CreateNodeId(0, 1), | 817 CreateNodeId(0, 1), |
841 CreateNodeId(client_.id(), 1), | 818 CreateNodeId(client_.id(), 1), |
842 1)); | 819 1)); |
843 EXPECT_TRUE(client_.GetAndClearChanges().empty()); | 820 EXPECT_TRUE(client_.GetAndClearChanges().empty()); |
844 | 821 |
845 client2_.DoRunLoopUntilChangesCount(1); | 822 client2_.DoRunLoopUntilChangesCount(1); |
846 Changes changes = client2_.GetAndClearChanges(); | 823 Changes changes = client2_.GetAndClearChanges(); |
847 EXPECT_EQ( | 824 EXPECT_EQ( |
848 "HierarchyChanged change_id=1 node=1,1 new_parent=0,1 old_parent=null", | 825 "HierarchyChanged change_id=1 node=1,1 new_parent=0,1 old_parent=null", |
849 changes[0]); | 826 changes[0]); |
850 const std::vector<TestNode>& nodes(client2_.hierarchy_changed_nodes()); | 827 const std::vector<TestNode>& nodes(client2_.hierarchy_changed_nodes()); |
851 ASSERT_EQ(1u, nodes.size()); | 828 ASSERT_EQ(1u, nodes.size()); |
852 EXPECT_EQ("node=1,1 parent=0,1 view=null", nodes[0].ToString()); | 829 EXPECT_EQ("node=1,1 parent=0,1 view=null", nodes[0].ToString()); |
853 } | 830 } |
854 | 831 |
855 // Delete 1. | 832 // Delete 1. |
856 { | 833 { |
857 AllocationScope scope; | |
858 ASSERT_TRUE(DeleteNode(view_manager_.get(), CreateNodeId(client_.id(), 1))); | 834 ASSERT_TRUE(DeleteNode(view_manager_.get(), CreateNodeId(client_.id(), 1))); |
859 EXPECT_TRUE(client_.GetAndClearChanges().empty()); | 835 EXPECT_TRUE(client_.GetAndClearChanges().empty()); |
860 | 836 |
861 client2_.DoRunLoopUntilChangesCount(1); | 837 client2_.DoRunLoopUntilChangesCount(1); |
862 Changes changes = client2_.GetAndClearChanges(); | 838 Changes changes = client2_.GetAndClearChanges(); |
863 ASSERT_EQ(1u, changes.size()); | 839 ASSERT_EQ(1u, changes.size()); |
864 EXPECT_EQ("NodeDeleted change_id=2 node=1,1", changes[0]); | 840 EXPECT_EQ("NodeDeleted change_id=2 node=1,1", changes[0]); |
865 } | 841 } |
866 | 842 |
867 // Create 1 again, and add it back to the root. Should get the same | 843 // Create 1 again, and add it back to the root. Should get the same |
868 // notification. | 844 // notification. |
869 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 1)); | 845 ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 1)); |
870 { | 846 { |
871 AllocationScope scope; | |
872 ASSERT_TRUE(AddNode(view_manager_.get(), | 847 ASSERT_TRUE(AddNode(view_manager_.get(), |
873 CreateNodeId(0, 1), | 848 CreateNodeId(0, 1), |
874 CreateNodeId(client_.id(), 1), | 849 CreateNodeId(client_.id(), 1), |
875 3)); | 850 3)); |
876 EXPECT_TRUE(client_.GetAndClearChanges().empty()); | 851 EXPECT_TRUE(client_.GetAndClearChanges().empty()); |
877 | 852 |
878 client2_.DoRunLoopUntilChangesCount(1); | 853 client2_.DoRunLoopUntilChangesCount(1); |
879 Changes changes = client2_.GetAndClearChanges(); | 854 Changes changes = client2_.GetAndClearChanges(); |
880 EXPECT_EQ( | 855 EXPECT_EQ( |
881 "HierarchyChanged change_id=3 node=1,1 new_parent=0,1 old_parent=null", | 856 "HierarchyChanged change_id=3 node=1,1 new_parent=0,1 old_parent=null", |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1061 4)); | 1036 4)); |
1062 | 1037 |
1063 // Attach view to node 11 in the first connection. | 1038 // Attach view to node 11 in the first connection. |
1064 ASSERT_TRUE(CreateView(view_manager_.get(), 1, 51)); | 1039 ASSERT_TRUE(CreateView(view_manager_.get(), 1, 51)); |
1065 ASSERT_TRUE(SetView(view_manager_.get(), | 1040 ASSERT_TRUE(SetView(view_manager_.get(), |
1066 CreateNodeId(client_.id(), 11), | 1041 CreateNodeId(client_.id(), 11), |
1067 CreateViewId(client_.id(), 51))); | 1042 CreateViewId(client_.id(), 51))); |
1068 | 1043 |
1069 // Verifies GetNodeTree() on the root. | 1044 // Verifies GetNodeTree() on the root. |
1070 { | 1045 { |
1071 AllocationScope scope; | |
1072 std::vector<TestNode> nodes; | 1046 std::vector<TestNode> nodes; |
1073 GetNodeTree(view_manager2_.get(), CreateNodeId(0, 1), &nodes); | 1047 GetNodeTree(view_manager2_.get(), CreateNodeId(0, 1), &nodes); |
1074 ASSERT_EQ(5u, nodes.size()); | 1048 ASSERT_EQ(5u, nodes.size()); |
1075 EXPECT_EQ("node=0,1 parent=null view=null", nodes[0].ToString()); | 1049 EXPECT_EQ("node=0,1 parent=null view=null", nodes[0].ToString()); |
1076 EXPECT_EQ("node=1,1 parent=0,1 view=null", nodes[1].ToString()); | 1050 EXPECT_EQ("node=1,1 parent=0,1 view=null", nodes[1].ToString()); |
1077 EXPECT_EQ("node=1,11 parent=1,1 view=1,51", nodes[2].ToString()); | 1051 EXPECT_EQ("node=1,11 parent=1,1 view=1,51", nodes[2].ToString()); |
1078 EXPECT_EQ("node=2,2 parent=0,1 view=null", nodes[3].ToString()); | 1052 EXPECT_EQ("node=2,2 parent=0,1 view=null", nodes[3].ToString()); |
1079 EXPECT_EQ("node=2,3 parent=0,1 view=null", nodes[4].ToString()); | 1053 EXPECT_EQ("node=2,3 parent=0,1 view=null", nodes[4].ToString()); |
1080 } | 1054 } |
1081 | 1055 |
1082 // Verifies GetNodeTree() on the node 1,1. | 1056 // Verifies GetNodeTree() on the node 1,1. |
1083 { | 1057 { |
1084 AllocationScope scope; | |
1085 std::vector<TestNode> nodes; | 1058 std::vector<TestNode> nodes; |
1086 GetNodeTree(view_manager2_.get(), CreateNodeId(1, 1), &nodes); | 1059 GetNodeTree(view_manager2_.get(), CreateNodeId(1, 1), &nodes); |
1087 ASSERT_EQ(2u, nodes.size()); | 1060 ASSERT_EQ(2u, nodes.size()); |
1088 EXPECT_EQ("node=1,1 parent=0,1 view=null", nodes[0].ToString()); | 1061 EXPECT_EQ("node=1,1 parent=0,1 view=null", nodes[0].ToString()); |
1089 EXPECT_EQ("node=1,11 parent=1,1 view=1,51", nodes[1].ToString()); | 1062 EXPECT_EQ("node=1,11 parent=1,1 view=1,51", nodes[1].ToString()); |
1090 } | 1063 } |
1091 } | 1064 } |
1092 | 1065 |
1093 } // namespace service | 1066 } // namespace service |
1094 } // namespace view_manager | 1067 } // namespace view_manager |
1095 } // namespace mojo | 1068 } // namespace mojo |
OLD | NEW |