OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "remoting/host/it2me/it2me_native_messaging_host.h" | 5 #include "remoting/host/it2me/it2me_native_messaging_host.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
9 #include "base/json/json_reader.h" | 9 #include "base/json/json_reader.h" |
10 #include "base/json/json_writer.h" | 10 #include "base/json/json_writer.h" |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 } | 127 } |
128 | 128 |
129 void MockIt2MeHost::Disconnect() { | 129 void MockIt2MeHost::Disconnect() { |
130 if (!host_context()->network_task_runner()->BelongsToCurrentThread()) { | 130 if (!host_context()->network_task_runner()->BelongsToCurrentThread()) { |
131 DCHECK(task_runner()->BelongsToCurrentThread()); | 131 DCHECK(task_runner()->BelongsToCurrentThread()); |
132 host_context()->network_task_runner()->PostTask( | 132 host_context()->network_task_runner()->PostTask( |
133 FROM_HERE, base::Bind(&MockIt2MeHost::Disconnect, this)); | 133 FROM_HERE, base::Bind(&MockIt2MeHost::Disconnect, this)); |
134 return; | 134 return; |
135 } | 135 } |
136 | 136 |
137 RunSetState(kDisconnecting); | |
138 RunSetState(kDisconnected); | 137 RunSetState(kDisconnected); |
139 } | 138 } |
140 | 139 |
141 void MockIt2MeHost::RequestNatPolicy() {} | 140 void MockIt2MeHost::RequestNatPolicy() {} |
142 | 141 |
143 void MockIt2MeHost::RunSetState(It2MeHostState state) { | 142 void MockIt2MeHost::RunSetState(It2MeHostState state) { |
144 if (!host_context()->network_task_runner()->BelongsToCurrentThread()) { | 143 if (!host_context()->network_task_runner()->BelongsToCurrentThread()) { |
145 host_context()->network_task_runner()->PostTask( | 144 host_context()->network_task_runner()->PostTask( |
146 FROM_HERE, base::Bind(&It2MeHost::SetStateForTesting, this, state, "")); | 145 FROM_HERE, base::Bind(&It2MeHost::SetStateForTesting, this, state, "")); |
147 } else { | 146 } else { |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
372 ADD_FAILURE() << "Unexpected host state: " << state; | 371 ADD_FAILURE() << "Unexpected host state: " << state; |
373 } | 372 } |
374 } else { | 373 } else { |
375 ADD_FAILURE() << "Unexpected message type: " << type; | 374 ADD_FAILURE() << "Unexpected message type: " << type; |
376 } | 375 } |
377 } | 376 } |
378 } | 377 } |
379 | 378 |
380 void It2MeNativeMessagingHostTest::VerifyDisconnectResponses(int request_id) { | 379 void It2MeNativeMessagingHostTest::VerifyDisconnectResponses(int request_id) { |
381 bool disconnect_response_received = false; | 380 bool disconnect_response_received = false; |
382 bool disconnecting_received = false; | |
383 bool disconnected_received = false; | 381 bool disconnected_received = false; |
384 | 382 |
385 // We expect a total of 3 messages: 1 connectResponse and 2 hostStateChanged. | 383 // We expect a total of 3 messages: 1 connectResponse and 1 hostStateChanged. |
386 for (int i = 0; i < 3; ++i) { | 384 for (int i = 0; i < 2; ++i) { |
387 scoped_ptr<base::DictionaryValue> response = ReadMessageFromOutputPipe(); | 385 scoped_ptr<base::DictionaryValue> response = ReadMessageFromOutputPipe(); |
388 ASSERT_TRUE(response); | 386 ASSERT_TRUE(response); |
389 | 387 |
390 std::string type; | 388 std::string type; |
391 ASSERT_TRUE(response->GetString("type", &type)); | 389 ASSERT_TRUE(response->GetString("type", &type)); |
392 | 390 |
393 if (type == "disconnectResponse") { | 391 if (type == "disconnectResponse") { |
394 EXPECT_FALSE(disconnect_response_received); | 392 EXPECT_FALSE(disconnect_response_received); |
395 disconnect_response_received = true; | 393 disconnect_response_received = true; |
396 VerifyId(response.Pass(), request_id); | 394 VerifyId(response.Pass(), request_id); |
397 } else if (type == "hostStateChanged") { | 395 } else if (type == "hostStateChanged") { |
398 std::string state; | 396 std::string state; |
399 ASSERT_TRUE(response->GetString("state", &state)); | 397 ASSERT_TRUE(response->GetString("state", &state)); |
400 if (state == | 398 if (state == It2MeNativeMessagingHost::HostStateToString(kDisconnected)) { |
401 It2MeNativeMessagingHost::HostStateToString(kDisconnecting)) { | |
402 EXPECT_FALSE(disconnecting_received); | |
403 disconnecting_received = true; | |
404 } else if (state == | |
405 It2MeNativeMessagingHost::HostStateToString(kDisconnected)) { | |
406 EXPECT_FALSE(disconnected_received); | 399 EXPECT_FALSE(disconnected_received); |
407 disconnected_received = true; | 400 disconnected_received = true; |
408 } else { | 401 } else { |
409 ADD_FAILURE() << "Unexpected host state: " << state; | 402 ADD_FAILURE() << "Unexpected host state: " << state; |
410 } | 403 } |
411 } else { | 404 } else { |
412 ADD_FAILURE() << "Unexpected message type: " << type; | 405 ADD_FAILURE() << "Unexpected message type: " << type; |
413 } | 406 } |
414 } | 407 } |
415 } | 408 } |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
549 } | 542 } |
550 | 543 |
551 // Verify rejection if type is unrecognized. | 544 // Verify rejection if type is unrecognized. |
552 TEST_F(It2MeNativeMessagingHostTest, InvalidType) { | 545 TEST_F(It2MeNativeMessagingHostTest, InvalidType) { |
553 base::DictionaryValue message; | 546 base::DictionaryValue message; |
554 message.SetString("type", "xxx"); | 547 message.SetString("type", "xxx"); |
555 TestBadRequest(message, true); | 548 TestBadRequest(message, true); |
556 } | 549 } |
557 | 550 |
558 } // namespace remoting | 551 } // namespace remoting |
OLD | NEW |