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/at_exit.h" | 8 #include "base/at_exit.h" |
9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 | 86 |
87 // Destroys the connection, blocking until done. | 87 // Destroys the connection, blocking until done. |
88 void Destroy() { | 88 void Destroy() { |
89 router_->CloseMessagePipe(); | 89 router_->CloseMessagePipe(); |
90 } | 90 } |
91 | 91 |
92 // The following functions are cover methods for ViewManagerService. They | 92 // The following functions are cover methods for ViewManagerService. They |
93 // block until the result is received. | 93 // block until the result is received. |
94 bool CreateNode(Id node_id) { | 94 bool CreateNode(Id node_id) { |
95 changes_.clear(); | 95 changes_.clear(); |
96 bool result = false; | 96 ErrorCode result = ERROR_CODE_NONE; |
97 view_manager_->CreateNode(node_id, | 97 view_manager_->CreateNode( |
98 base::Bind(&ViewManagerProxy::GotResult, | 98 node_id, |
99 base::Unretained(this), &result)); | 99 base::Bind(&ViewManagerProxy::GotResultWithErrorCode, |
| 100 base::Unretained(this), &result)); |
| 101 RunMainLoop(); |
| 102 return result == ERROR_CODE_NONE; |
| 103 } |
| 104 ErrorCode CreateNodeWithErrorCode(Id node_id) { |
| 105 changes_.clear(); |
| 106 ErrorCode result = ERROR_CODE_NONE; |
| 107 view_manager_->CreateNode( |
| 108 node_id, |
| 109 base::Bind(&ViewManagerProxy::GotResultWithErrorCode, |
| 110 base::Unretained(this), &result)); |
100 RunMainLoop(); | 111 RunMainLoop(); |
101 return result; | 112 return result; |
102 } | 113 } |
103 bool AddNode(Id parent, Id child, Id server_change_id) { | 114 bool AddNode(Id parent, Id child, Id server_change_id) { |
104 changes_.clear(); | 115 changes_.clear(); |
105 bool result = false; | 116 bool result = false; |
106 view_manager_->AddNode(parent, child, server_change_id, | 117 view_manager_->AddNode(parent, child, server_change_id, |
107 base::Bind(&ViewManagerProxy::GotResult, | 118 base::Bind(&ViewManagerProxy::GotResult, |
108 base::Unretained(this), &result)); | 119 base::Unretained(this), &result)); |
109 RunMainLoop(); | 120 RunMainLoop(); |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
234 main_run_loop_->Quit(); | 245 main_run_loop_->Quit(); |
235 } | 246 } |
236 | 247 |
237 // Callbacks from the various ViewManagerService functions. | 248 // Callbacks from the various ViewManagerService functions. |
238 void GotResult(bool* result_cache, bool result) { | 249 void GotResult(bool* result_cache, bool result) { |
239 *result_cache = result; | 250 *result_cache = result; |
240 DCHECK(main_run_loop_); | 251 DCHECK(main_run_loop_); |
241 main_run_loop_->Quit(); | 252 main_run_loop_->Quit(); |
242 } | 253 } |
243 | 254 |
| 255 void GotResultWithErrorCode(ErrorCode* error_code_cache, |
| 256 ErrorCode error_code) { |
| 257 *error_code_cache = error_code; |
| 258 DCHECK(main_run_loop_); |
| 259 main_run_loop_->Quit(); |
| 260 } |
| 261 |
244 void GotNodeTree(std::vector<TestNode>* nodes, Array<NodeDataPtr> results) { | 262 void GotNodeTree(std::vector<TestNode>* nodes, Array<NodeDataPtr> results) { |
245 NodeDatasToTestNodes(results, nodes); | 263 NodeDatasToTestNodes(results, nodes); |
246 DCHECK(main_run_loop_); | 264 DCHECK(main_run_loop_); |
247 main_run_loop_->Quit(); | 265 main_run_loop_->Quit(); |
248 } | 266 } |
249 | 267 |
250 // TestChangeTracker::Delegate: | 268 // TestChangeTracker::Delegate: |
251 virtual void OnChangeAdded() OVERRIDE { | 269 virtual void OnChangeAdded() OVERRIDE { |
252 if (quit_count_ > 0 && --quit_count_ == 0) | 270 if (quit_count_ > 0 && --quit_count_ == 0) |
253 QuitCountReached(); | 271 QuitCountReached(); |
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
534 // Change ids start at 1 as well. | 552 // Change ids start at 1 as well. |
535 EXPECT_EQ(static_cast<Id>(1), connection2_->changes()[0].change_id); | 553 EXPECT_EQ(static_cast<Id>(1), connection2_->changes()[0].change_id); |
536 } | 554 } |
537 | 555 |
538 // Verifies client gets a valid id. | 556 // Verifies client gets a valid id. |
539 TEST_F(ViewManagerTest, CreateNode) { | 557 TEST_F(ViewManagerTest, CreateNode) { |
540 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 1))); | 558 ASSERT_TRUE(connection_->CreateNode(BuildNodeId(1, 1))); |
541 EXPECT_TRUE(connection_->changes().empty()); | 559 EXPECT_TRUE(connection_->changes().empty()); |
542 | 560 |
543 // Can't create a node with the same id. | 561 // Can't create a node with the same id. |
544 ASSERT_FALSE(connection_->CreateNode(BuildNodeId(1, 1))); | 562 ASSERT_EQ(ERROR_CODE_VALUE_IN_USE, |
| 563 connection_->CreateNodeWithErrorCode(BuildNodeId(1, 1))); |
545 EXPECT_TRUE(connection_->changes().empty()); | 564 EXPECT_TRUE(connection_->changes().empty()); |
546 | 565 |
547 // Can't create a node with a bogus connection id. | 566 // Can't create a node with a bogus connection id. |
548 EXPECT_FALSE(connection_->CreateNode(BuildNodeId(2, 1))); | 567 EXPECT_EQ( |
| 568 ERROR_CODE_ILLEGAL_ARGUMENT, |
| 569 connection_->CreateNodeWithErrorCode(BuildNodeId(2, 1))); |
549 EXPECT_TRUE(connection_->changes().empty()); | 570 EXPECT_TRUE(connection_->changes().empty()); |
550 } | 571 } |
551 | 572 |
552 TEST_F(ViewManagerTest, CreateViewFailsWithBogusConnectionId) { | 573 TEST_F(ViewManagerTest, CreateViewFailsWithBogusConnectionId) { |
553 EXPECT_FALSE(connection_->CreateView(BuildViewId(2, 1))); | 574 EXPECT_FALSE(connection_->CreateView(BuildViewId(2, 1))); |
554 EXPECT_TRUE(connection_->changes().empty()); | 575 EXPECT_TRUE(connection_->changes().empty()); |
555 } | 576 } |
556 | 577 |
557 // Verifies hierarchy changes. | 578 // Verifies hierarchy changes. |
558 TEST_F(ViewManagerTest, AddRemoveNotify) { | 579 TEST_F(ViewManagerTest, AddRemoveNotify) { |
(...skipping 817 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1376 // originating connection. | 1397 // originating connection. |
1377 | 1398 |
1378 // TODO(beng): Add tests for focus: | 1399 // TODO(beng): Add tests for focus: |
1379 // - focus between two nodes known to a connection | 1400 // - focus between two nodes known to a connection |
1380 // - focus between nodes unknown to one of the connections. | 1401 // - focus between nodes unknown to one of the connections. |
1381 // - focus between nodes unknown to either connection. | 1402 // - focus between nodes unknown to either connection. |
1382 | 1403 |
1383 } // namespace service | 1404 } // namespace service |
1384 } // namespace view_manager | 1405 } // namespace view_manager |
1385 } // namespace mojo | 1406 } // namespace mojo |
OLD | NEW |