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 "remoting/protocol/connection_to_client.h" | 5 #include "remoting/protocol/connection_to_client.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
9 #include "base/message_loop_proxy.h" | 9 #include "base/message_loop_proxy.h" |
10 #include "remoting/base/constants.h" | 10 #include "remoting/base/constants.h" |
(...skipping 20 matching lines...) Expand all Loading... |
31 // Allocate a ClientConnection object with the mock objects. | 31 // Allocate a ClientConnection object with the mock objects. |
32 viewer_.reset(new ConnectionToClient(session_)); | 32 viewer_.reset(new ConnectionToClient(session_)); |
33 viewer_->set_clipboard_stub(&clipboard_stub_); | 33 viewer_->set_clipboard_stub(&clipboard_stub_); |
34 viewer_->set_host_stub(&host_stub_); | 34 viewer_->set_host_stub(&host_stub_); |
35 viewer_->set_input_stub(&input_stub_); | 35 viewer_->set_input_stub(&input_stub_); |
36 viewer_->SetEventHandler(&handler_); | 36 viewer_->SetEventHandler(&handler_); |
37 EXPECT_CALL(handler_, OnConnectionAuthenticated(viewer_.get())); | 37 EXPECT_CALL(handler_, OnConnectionAuthenticated(viewer_.get())); |
38 EXPECT_CALL(handler_, OnConnectionChannelsConnected(viewer_.get())); | 38 EXPECT_CALL(handler_, OnConnectionChannelsConnected(viewer_.get())); |
39 session_->event_handler()->OnSessionStateChange(Session::CONNECTED); | 39 session_->event_handler()->OnSessionStateChange(Session::CONNECTED); |
40 session_->event_handler()->OnSessionStateChange(Session::AUTHENTICATED); | 40 session_->event_handler()->OnSessionStateChange(Session::AUTHENTICATED); |
41 message_loop_.RunAllPending(); | 41 message_loop_.RunUntilIdle(); |
42 } | 42 } |
43 | 43 |
44 virtual void TearDown() OVERRIDE { | 44 virtual void TearDown() OVERRIDE { |
45 viewer_.reset(); | 45 viewer_.reset(); |
46 message_loop_.RunAllPending(); | 46 message_loop_.RunUntilIdle(); |
47 } | 47 } |
48 | 48 |
49 MessageLoop message_loop_; | 49 MessageLoop message_loop_; |
50 MockConnectionToClientEventHandler handler_; | 50 MockConnectionToClientEventHandler handler_; |
51 MockClipboardStub clipboard_stub_; | 51 MockClipboardStub clipboard_stub_; |
52 MockHostStub host_stub_; | 52 MockHostStub host_stub_; |
53 MockInputStub input_stub_; | 53 MockInputStub input_stub_; |
54 scoped_ptr<ConnectionToClient> viewer_; | 54 scoped_ptr<ConnectionToClient> viewer_; |
55 | 55 |
56 // Owned by |viewer_|. | 56 // Owned by |viewer_|. |
57 FakeSession* session_; | 57 FakeSession* session_; |
58 | 58 |
59 private: | 59 private: |
60 DISALLOW_COPY_AND_ASSIGN(ConnectionToClientTest); | 60 DISALLOW_COPY_AND_ASSIGN(ConnectionToClientTest); |
61 }; | 61 }; |
62 | 62 |
63 TEST_F(ConnectionToClientTest, SendUpdateStream) { | 63 TEST_F(ConnectionToClientTest, SendUpdateStream) { |
64 scoped_ptr<VideoPacket> packet(new VideoPacket()); | 64 scoped_ptr<VideoPacket> packet(new VideoPacket()); |
65 viewer_->video_stub()->ProcessVideoPacket(packet.Pass(), base::Closure()); | 65 viewer_->video_stub()->ProcessVideoPacket(packet.Pass(), base::Closure()); |
66 | 66 |
67 message_loop_.RunAllPending(); | 67 message_loop_.RunUntilIdle(); |
68 | 68 |
69 // Verify that something has been written. | 69 // Verify that something has been written. |
70 // TODO(sergeyu): Verify that the correct data has been written. | 70 // TODO(sergeyu): Verify that the correct data has been written. |
71 ASSERT_TRUE(session_->GetStreamChannel(kVideoChannelName)); | 71 ASSERT_TRUE(session_->GetStreamChannel(kVideoChannelName)); |
72 EXPECT_GT(session_->GetStreamChannel(kVideoChannelName)-> | 72 EXPECT_GT(session_->GetStreamChannel(kVideoChannelName)-> |
73 written_data().size(), 0u); | 73 written_data().size(), 0u); |
74 | 74 |
75 // And then close the connection to ConnectionToClient. | 75 // And then close the connection to ConnectionToClient. |
76 viewer_->Disconnect(); | 76 viewer_->Disconnect(); |
77 | 77 |
78 message_loop_.RunAllPending(); | 78 message_loop_.RunUntilIdle(); |
79 } | 79 } |
80 | 80 |
81 TEST_F(ConnectionToClientTest, NoWriteAfterDisconnect) { | 81 TEST_F(ConnectionToClientTest, NoWriteAfterDisconnect) { |
82 scoped_ptr<VideoPacket> packet(new VideoPacket()); | 82 scoped_ptr<VideoPacket> packet(new VideoPacket()); |
83 viewer_->video_stub()->ProcessVideoPacket(packet.Pass(), base::Closure()); | 83 viewer_->video_stub()->ProcessVideoPacket(packet.Pass(), base::Closure()); |
84 | 84 |
85 // And then close the connection to ConnectionToClient. | 85 // And then close the connection to ConnectionToClient. |
86 viewer_->Disconnect(); | 86 viewer_->Disconnect(); |
87 | 87 |
88 // The test will crash if data writer tries to write data to the | 88 // The test will crash if data writer tries to write data to the |
89 // channel socket. | 89 // channel socket. |
90 // TODO(sergeyu): Use MockSession to verify that no data is written? | 90 // TODO(sergeyu): Use MockSession to verify that no data is written? |
91 message_loop_.RunAllPending(); | 91 message_loop_.RunUntilIdle(); |
92 } | 92 } |
93 | 93 |
94 TEST_F(ConnectionToClientTest, StateChange) { | 94 TEST_F(ConnectionToClientTest, StateChange) { |
95 EXPECT_CALL(handler_, OnConnectionClosed(viewer_.get(), OK)); | 95 EXPECT_CALL(handler_, OnConnectionClosed(viewer_.get(), OK)); |
96 session_->event_handler()->OnSessionStateChange(Session::CLOSED); | 96 session_->event_handler()->OnSessionStateChange(Session::CLOSED); |
97 message_loop_.RunAllPending(); | 97 message_loop_.RunUntilIdle(); |
98 | 98 |
99 EXPECT_CALL(handler_, OnConnectionClosed(viewer_.get(), SESSION_REJECTED)); | 99 EXPECT_CALL(handler_, OnConnectionClosed(viewer_.get(), SESSION_REJECTED)); |
100 session_->set_error(SESSION_REJECTED); | 100 session_->set_error(SESSION_REJECTED); |
101 session_->event_handler()->OnSessionStateChange(Session::FAILED); | 101 session_->event_handler()->OnSessionStateChange(Session::FAILED); |
102 message_loop_.RunAllPending(); | 102 message_loop_.RunUntilIdle(); |
103 } | 103 } |
104 | 104 |
105 } // namespace protocol | 105 } // namespace protocol |
106 } // namespace remoting | 106 } // namespace remoting |
OLD | NEW |