| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/bind_helpers.h" | 6 #include "base/bind_helpers.h" |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "base/message_loop/message_loop_proxy.h" | 8 #include "base/message_loop/message_loop_proxy.h" |
| 9 #include "remoting/base/auto_thread_task_runner.h" | 9 #include "remoting/base/auto_thread_task_runner.h" |
| 10 #include "remoting/host/audio_capturer.h" | 10 #include "remoting/host/audio_capturer.h" |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 | 101 |
| 102 xmpp_login_ = "host@domain"; | 102 xmpp_login_ = "host@domain"; |
| 103 session1_ = new MockSession(); | 103 session1_ = new MockSession(); |
| 104 session2_ = new MockSession(); | 104 session2_ = new MockSession(); |
| 105 session_unowned1_.reset(new MockSession()); | 105 session_unowned1_.reset(new MockSession()); |
| 106 session_unowned2_.reset(new MockSession()); | 106 session_unowned2_.reset(new MockSession()); |
| 107 session_config1_ = SessionConfig::ForTest(); | 107 session_config1_ = SessionConfig::ForTest(); |
| 108 session_jid1_ = "user@domain/rest-of-jid"; | 108 session_jid1_ = "user@domain/rest-of-jid"; |
| 109 session_config2_ = SessionConfig::ForTest(); | 109 session_config2_ = SessionConfig::ForTest(); |
| 110 session_jid2_ = "user2@domain/rest-of-jid"; | 110 session_jid2_ = "user2@domain/rest-of-jid"; |
| 111 session_unowned_config1_ = SessionConfig::ForTest(); |
| 111 session_unowned_jid1_ = "user3@doman/rest-of-jid"; | 112 session_unowned_jid1_ = "user3@doman/rest-of-jid"; |
| 113 session_unowned_config2_ = SessionConfig::ForTest(); |
| 112 session_unowned_jid2_ = "user4@doman/rest-of-jid"; | 114 session_unowned_jid2_ = "user4@doman/rest-of-jid"; |
| 113 | 115 |
| 114 EXPECT_CALL(*session1_, jid()) | 116 EXPECT_CALL(*session1_, jid()) |
| 115 .WillRepeatedly(ReturnRef(session_jid1_)); | 117 .WillRepeatedly(ReturnRef(session_jid1_)); |
| 116 EXPECT_CALL(*session2_, jid()) | 118 EXPECT_CALL(*session2_, jid()) |
| 117 .WillRepeatedly(ReturnRef(session_jid2_)); | 119 .WillRepeatedly(ReturnRef(session_jid2_)); |
| 118 EXPECT_CALL(*session_unowned1_, jid()) | 120 EXPECT_CALL(*session_unowned1_, jid()) |
| 119 .WillRepeatedly(ReturnRef(session_unowned_jid1_)); | 121 .WillRepeatedly(ReturnRef(session_unowned_jid1_)); |
| 120 EXPECT_CALL(*session_unowned2_, jid()) | 122 EXPECT_CALL(*session_unowned2_, jid()) |
| 121 .WillRepeatedly(ReturnRef(session_unowned_jid2_)); | 123 .WillRepeatedly(ReturnRef(session_unowned_jid2_)); |
| 122 EXPECT_CALL(*session1_, SetEventHandler(_)) | 124 EXPECT_CALL(*session1_, SetEventHandler(_)) |
| 123 .Times(AnyNumber()); | 125 .Times(AnyNumber()); |
| 124 EXPECT_CALL(*session2_, SetEventHandler(_)) | 126 EXPECT_CALL(*session2_, SetEventHandler(_)) |
| 125 .Times(AnyNumber()); | 127 .Times(AnyNumber()); |
| 126 EXPECT_CALL(*session_unowned1_, SetEventHandler(_)) | 128 EXPECT_CALL(*session_unowned1_, SetEventHandler(_)) |
| 127 .Times(AnyNumber()) | 129 .Times(AnyNumber()) |
| 128 .WillRepeatedly(SaveArg<0>(&session_unowned1_event_handler_)); | 130 .WillRepeatedly(SaveArg<0>(&session_unowned1_event_handler_)); |
| 129 EXPECT_CALL(*session_unowned2_, SetEventHandler(_)) | 131 EXPECT_CALL(*session_unowned2_, SetEventHandler(_)) |
| 130 .Times(AnyNumber()) | 132 .Times(AnyNumber()) |
| 131 .WillRepeatedly(SaveArg<0>(&session_unowned2_event_handler_)); | 133 .WillRepeatedly(SaveArg<0>(&session_unowned2_event_handler_)); |
| 132 EXPECT_CALL(*session1_, config()) | 134 EXPECT_CALL(*session1_, config()) |
| 133 .WillRepeatedly(ReturnRef(*session_config1_)); | 135 .WillRepeatedly(ReturnRef(session_config1_)); |
| 134 EXPECT_CALL(*session2_, config()) | 136 EXPECT_CALL(*session2_, config()) |
| 135 .WillRepeatedly(ReturnRef(*session_config2_)); | 137 .WillRepeatedly(ReturnRef(session_config2_)); |
| 136 | 138 |
| 137 owned_connection1_.reset(new MockConnectionToClient(session1_, | 139 owned_connection1_.reset(new MockConnectionToClient(session1_, |
| 138 &host_stub1_)); | 140 &host_stub1_)); |
| 139 connection1_ = owned_connection1_.get(); | 141 connection1_ = owned_connection1_.get(); |
| 140 owned_connection2_.reset(new MockConnectionToClient(session2_, | 142 owned_connection2_.reset(new MockConnectionToClient(session2_, |
| 141 &host_stub2_)); | 143 &host_stub2_)); |
| 142 connection2_ = owned_connection2_.get(); | 144 connection2_ = owned_connection2_.get(); |
| 143 | 145 |
| 144 ON_CALL(video_stub1_, ProcessVideoPacketPtr(_, _)) | 146 ON_CALL(video_stub1_, ProcessVideoPacketPtr(_, _)) |
| 145 .WillByDefault(DeleteArg<0>()); | 147 .WillByDefault(DeleteArg<0>()); |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 412 scoped_ptr<MockDesktopEnvironmentFactory> desktop_environment_factory_; | 414 scoped_ptr<MockDesktopEnvironmentFactory> desktop_environment_factory_; |
| 413 scoped_ptr<ChromotingHost> host_; | 415 scoped_ptr<ChromotingHost> host_; |
| 414 MockHostStatusObserver host_status_observer_; | 416 MockHostStatusObserver host_status_observer_; |
| 415 protocol::MockSessionManager* session_manager_; | 417 protocol::MockSessionManager* session_manager_; |
| 416 std::string xmpp_login_; | 418 std::string xmpp_login_; |
| 417 MockConnectionToClient* connection1_; | 419 MockConnectionToClient* connection1_; |
| 418 scoped_ptr<MockConnectionToClient> owned_connection1_; | 420 scoped_ptr<MockConnectionToClient> owned_connection1_; |
| 419 ClientSession* client1_; | 421 ClientSession* client1_; |
| 420 std::string session_jid1_; | 422 std::string session_jid1_; |
| 421 MockSession* session1_; // Owned by |connection_|. | 423 MockSession* session1_; // Owned by |connection_|. |
| 422 scoped_ptr<SessionConfig> session_config1_; | 424 SessionConfig session_config1_; |
| 423 MockVideoStub video_stub1_; | 425 MockVideoStub video_stub1_; |
| 424 MockClientStub client_stub1_; | 426 MockClientStub client_stub1_; |
| 425 MockHostStub host_stub1_; | 427 MockHostStub host_stub1_; |
| 426 MockConnectionToClient* connection2_; | 428 MockConnectionToClient* connection2_; |
| 427 scoped_ptr<MockConnectionToClient> owned_connection2_; | 429 scoped_ptr<MockConnectionToClient> owned_connection2_; |
| 428 ClientSession* client2_; | 430 ClientSession* client2_; |
| 429 std::string session_jid2_; | 431 std::string session_jid2_; |
| 430 MockSession* session2_; // Owned by |connection2_|. | 432 MockSession* session2_; // Owned by |connection2_|. |
| 431 scoped_ptr<SessionConfig> session_config2_; | 433 SessionConfig session_config2_; |
| 432 MockVideoStub video_stub2_; | 434 MockVideoStub video_stub2_; |
| 433 MockClientStub client_stub2_; | 435 MockClientStub client_stub2_; |
| 434 MockHostStub host_stub2_; | 436 MockHostStub host_stub2_; |
| 435 scoped_ptr<MockSession> session_unowned1_; // Not owned by a connection. | 437 scoped_ptr<MockSession> session_unowned1_; // Not owned by a connection. |
| 438 SessionConfig session_unowned_config1_; |
| 436 std::string session_unowned_jid1_; | 439 std::string session_unowned_jid1_; |
| 437 scoped_ptr<MockSession> session_unowned2_; // Not owned by a connection. | 440 scoped_ptr<MockSession> session_unowned2_; // Not owned by a connection. |
| 441 SessionConfig session_unowned_config2_; |
| 438 std::string session_unowned_jid2_; | 442 std::string session_unowned_jid2_; |
| 439 protocol::Session::EventHandler* session_unowned1_event_handler_; | 443 protocol::Session::EventHandler* session_unowned1_event_handler_; |
| 440 protocol::Session::EventHandler* session_unowned2_event_handler_; | 444 protocol::Session::EventHandler* session_unowned2_event_handler_; |
| 441 scoped_ptr<protocol::CandidateSessionConfig> empty_candidate_config_; | 445 scoped_ptr<protocol::CandidateSessionConfig> empty_candidate_config_; |
| 442 scoped_ptr<protocol::CandidateSessionConfig> default_candidate_config_; | 446 scoped_ptr<protocol::CandidateSessionConfig> default_candidate_config_; |
| 443 | 447 |
| 444 MockConnectionToClient*& get_connection(int connection_index) { | 448 MockConnectionToClient*& get_connection(int connection_index) { |
| 445 return (connection_index == 0) ? connection1_ : connection2_; | 449 return (connection_index == 0) ? connection1_ : connection2_; |
| 446 } | 450 } |
| 447 | 451 |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 588 EXPECT_EQ(protocol::SessionManager::INCOMPATIBLE, response); | 592 EXPECT_EQ(protocol::SessionManager::INCOMPATIBLE, response); |
| 589 | 593 |
| 590 ShutdownHost(); | 594 ShutdownHost(); |
| 591 message_loop_.Run(); | 595 message_loop_.Run(); |
| 592 } | 596 } |
| 593 | 597 |
| 594 TEST_F(ChromotingHostTest, IncomingSessionAccepted) { | 598 TEST_F(ChromotingHostTest, IncomingSessionAccepted) { |
| 595 ExpectHostAndSessionManagerStart(); | 599 ExpectHostAndSessionManagerStart(); |
| 596 EXPECT_CALL(*session_unowned1_, candidate_config()).WillOnce(Return( | 600 EXPECT_CALL(*session_unowned1_, candidate_config()).WillOnce(Return( |
| 597 default_candidate_config_.get())); | 601 default_candidate_config_.get())); |
| 598 EXPECT_CALL(*session_unowned1_, set_config_ptr(_)); | 602 EXPECT_CALL(*session_unowned1_, set_config(_)); |
| 599 EXPECT_CALL(*session_unowned1_, Close()).WillOnce(InvokeWithoutArgs( | 603 EXPECT_CALL(*session_unowned1_, Close()).WillOnce(InvokeWithoutArgs( |
| 600 this, &ChromotingHostTest::NotifyConnectionClosed1)); | 604 this, &ChromotingHostTest::NotifyConnectionClosed1)); |
| 601 EXPECT_CALL(host_status_observer_, OnAccessDenied(_)); | 605 EXPECT_CALL(host_status_observer_, OnAccessDenied(_)); |
| 602 EXPECT_CALL(host_status_observer_, OnShutdown()); | 606 EXPECT_CALL(host_status_observer_, OnShutdown()); |
| 603 | 607 |
| 604 host_->Start(xmpp_login_); | 608 host_->Start(xmpp_login_); |
| 605 | 609 |
| 606 protocol::SessionManager::IncomingSessionResponse response = | 610 protocol::SessionManager::IncomingSessionResponse response = |
| 607 protocol::SessionManager::DECLINE; | 611 protocol::SessionManager::DECLINE; |
| 608 host_->OnIncomingSession(session_unowned1_.release(), &response); | 612 host_->OnIncomingSession(session_unowned1_.release(), &response); |
| 609 EXPECT_EQ(protocol::SessionManager::ACCEPT, response); | 613 EXPECT_EQ(protocol::SessionManager::ACCEPT, response); |
| 610 | 614 |
| 611 ShutdownHost(); | 615 ShutdownHost(); |
| 612 message_loop_.Run(); | 616 message_loop_.Run(); |
| 613 } | 617 } |
| 614 | 618 |
| 615 TEST_F(ChromotingHostTest, LoginBackOffUponConnection) { | 619 TEST_F(ChromotingHostTest, LoginBackOffUponConnection) { |
| 616 ExpectHostAndSessionManagerStart(); | 620 ExpectHostAndSessionManagerStart(); |
| 617 EXPECT_CALL(*session_unowned1_, candidate_config()).WillOnce( | 621 EXPECT_CALL(*session_unowned1_, candidate_config()).WillOnce( |
| 618 Return(default_candidate_config_.get())); | 622 Return(default_candidate_config_.get())); |
| 619 EXPECT_CALL(*session_unowned1_, set_config_ptr(_)); | 623 EXPECT_CALL(*session_unowned1_, set_config(_)); |
| 620 EXPECT_CALL(*session_unowned1_, Close()).WillOnce( | 624 EXPECT_CALL(*session_unowned1_, Close()).WillOnce( |
| 621 InvokeWithoutArgs(this, &ChromotingHostTest::NotifyConnectionClosed1)); | 625 InvokeWithoutArgs(this, &ChromotingHostTest::NotifyConnectionClosed1)); |
| 622 EXPECT_CALL(host_status_observer_, OnAccessDenied(_)); | 626 EXPECT_CALL(host_status_observer_, OnAccessDenied(_)); |
| 623 EXPECT_CALL(host_status_observer_, OnShutdown()); | 627 EXPECT_CALL(host_status_observer_, OnShutdown()); |
| 624 | 628 |
| 625 host_->Start(xmpp_login_); | 629 host_->Start(xmpp_login_); |
| 626 | 630 |
| 627 protocol::SessionManager::IncomingSessionResponse response = | 631 protocol::SessionManager::IncomingSessionResponse response = |
| 628 protocol::SessionManager::DECLINE; | 632 protocol::SessionManager::DECLINE; |
| 629 | 633 |
| 630 host_->OnIncomingSession(session_unowned1_.release(), &response); | 634 host_->OnIncomingSession(session_unowned1_.release(), &response); |
| 631 EXPECT_EQ(protocol::SessionManager::ACCEPT, response); | 635 EXPECT_EQ(protocol::SessionManager::ACCEPT, response); |
| 632 | 636 |
| 633 host_->OnSessionAuthenticating(get_clients_from_host().front()); | 637 host_->OnSessionAuthenticating(get_clients_from_host().front()); |
| 634 host_->OnIncomingSession(session_unowned2_.get(), &response); | 638 host_->OnIncomingSession(session_unowned2_.get(), &response); |
| 635 EXPECT_EQ(protocol::SessionManager::OVERLOAD, response); | 639 EXPECT_EQ(protocol::SessionManager::OVERLOAD, response); |
| 636 | 640 |
| 637 ShutdownHost(); | 641 ShutdownHost(); |
| 638 message_loop_.Run(); | 642 message_loop_.Run(); |
| 639 } | 643 } |
| 640 | 644 |
| 641 TEST_F(ChromotingHostTest, LoginBackOffUponAuthenticating) { | 645 TEST_F(ChromotingHostTest, LoginBackOffUponAuthenticating) { |
| 642 Expectation start = ExpectHostAndSessionManagerStart(); | 646 Expectation start = ExpectHostAndSessionManagerStart(); |
| 643 EXPECT_CALL(*session_unowned1_, candidate_config()).WillOnce( | 647 EXPECT_CALL(*session_unowned1_, candidate_config()).WillOnce( |
| 644 Return(default_candidate_config_.get())); | 648 Return(default_candidate_config_.get())); |
| 645 EXPECT_CALL(*session_unowned1_, set_config_ptr(_)); | 649 EXPECT_CALL(*session_unowned1_, set_config(_)); |
| 646 EXPECT_CALL(*session_unowned1_, Close()).WillOnce( | 650 EXPECT_CALL(*session_unowned1_, Close()).WillOnce( |
| 647 InvokeWithoutArgs(this, &ChromotingHostTest::NotifyConnectionClosed1)); | 651 InvokeWithoutArgs(this, &ChromotingHostTest::NotifyConnectionClosed1)); |
| 648 | 652 |
| 649 EXPECT_CALL(*session_unowned2_, candidate_config()).WillOnce( | 653 EXPECT_CALL(*session_unowned2_, candidate_config()).WillOnce( |
| 650 Return(default_candidate_config_.get())); | 654 Return(default_candidate_config_.get())); |
| 651 EXPECT_CALL(*session_unowned2_, set_config_ptr(_)); | 655 EXPECT_CALL(*session_unowned2_, set_config(_)); |
| 652 EXPECT_CALL(*session_unowned2_, Close()).WillOnce( | 656 EXPECT_CALL(*session_unowned2_, Close()).WillOnce( |
| 653 InvokeWithoutArgs(this, &ChromotingHostTest::NotifyConnectionClosed2)); | 657 InvokeWithoutArgs(this, &ChromotingHostTest::NotifyConnectionClosed2)); |
| 654 | 658 |
| 655 EXPECT_CALL(host_status_observer_, OnShutdown()); | 659 EXPECT_CALL(host_status_observer_, OnShutdown()); |
| 656 | 660 |
| 657 host_->Start(xmpp_login_); | 661 host_->Start(xmpp_login_); |
| 658 | 662 |
| 659 protocol::SessionManager::IncomingSessionResponse response = | 663 protocol::SessionManager::IncomingSessionResponse response = |
| 660 protocol::SessionManager::DECLINE; | 664 protocol::SessionManager::DECLINE; |
| 661 | 665 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 707 ExpectClientDisconnected(0, true, video_packet_sent, | 711 ExpectClientDisconnected(0, true, video_packet_sent, |
| 708 InvokeWithoutArgs(this, &ChromotingHostTest::ShutdownHost)); | 712 InvokeWithoutArgs(this, &ChromotingHostTest::ShutdownHost)); |
| 709 EXPECT_CALL(host_status_observer_, OnShutdown()); | 713 EXPECT_CALL(host_status_observer_, OnShutdown()); |
| 710 | 714 |
| 711 host_->Start(xmpp_login_); | 715 host_->Start(xmpp_login_); |
| 712 SimulateClientConnection(0, true, false); | 716 SimulateClientConnection(0, true, false); |
| 713 message_loop_.Run(); | 717 message_loop_.Run(); |
| 714 } | 718 } |
| 715 | 719 |
| 716 } // namespace remoting | 720 } // namespace remoting |
| OLD | NEW |