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