| 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/command_line.h" | 6 #include "base/command_line.h" |
| 7 #include "base/files/file_path.h" | 7 #include "base/files/file_path.h" |
| 8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
| 9 #include "base/timer/mock_timer.h" | 9 #include "base/timer/mock_timer.h" |
| 10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 | 91 |
| 92 void SetUpMockCastSocket() { | 92 void SetUpMockCastSocket() { |
| 93 extensions::CastChannelAPI* api = GetApi(); | 93 extensions::CastChannelAPI* api = GetApi(); |
| 94 timeout_timer_ = new base::MockTimer(true, false); | 94 timeout_timer_ = new base::MockTimer(true, false); |
| 95 api->SetPingTimeoutTimerForTest(base::WrapUnique(timeout_timer_)); | 95 api->SetPingTimeoutTimerForTest(base::WrapUnique(timeout_timer_)); |
| 96 | 96 |
| 97 net::IPEndPoint ip_endpoint(net::IPAddress(192, 168, 1, 1), 8009); | 97 net::IPEndPoint ip_endpoint(net::IPAddress(192, 168, 1, 1), 8009); |
| 98 mock_cast_socket_ = new MockCastSocket; | 98 mock_cast_socket_ = new MockCastSocket; |
| 99 // Transfers ownership of the socket. | 99 // Transfers ownership of the socket. |
| 100 api->SetSocketForTest(base::WrapUnique<CastSocket>(mock_cast_socket_)); | 100 api->SetSocketForTest(base::WrapUnique<CastSocket>(mock_cast_socket_)); |
| 101 ON_CALL(*mock_cast_socket_, set_id(_)) | 101 mock_cast_socket_->SetIPEndpoint(ip_endpoint_); |
| 102 .WillByDefault(SaveArg<0>(&channel_id_)); | 102 mock_cast_socket_->SetChannelAuth(ChannelAuthType::SSL_VERIFIED); |
| 103 ON_CALL(*mock_cast_socket_, id()) | 103 mock_cast_socket_->SetKeepAlive(false); |
| 104 .WillByDefault(ReturnPointee(&channel_id_)); | |
| 105 ON_CALL(*mock_cast_socket_, ip_endpoint()) | |
| 106 .WillByDefault(ReturnRef(ip_endpoint_)); | |
| 107 ON_CALL(*mock_cast_socket_, channel_auth()) | |
| 108 .WillByDefault(Return(ChannelAuthType::SSL_VERIFIED)); | |
| 109 ON_CALL(*mock_cast_socket_, keep_alive()).WillByDefault(Return(false)); | |
| 110 } | 104 } |
| 111 | 105 |
| 112 void SetUpOpenSendClose() { | 106 void SetUpOpenSendClose() { |
| 113 SetUpMockCastSocket(); | 107 SetUpMockCastSocket(); |
| 114 EXPECT_CALL(*mock_cast_socket_, error_state()) | 108 mock_cast_socket_->SetErrorState(ChannelError::NONE); |
| 115 .WillRepeatedly(Return(ChannelError::NONE)); | |
| 116 { | 109 { |
| 117 InSequence sequence; | 110 InSequence sequence; |
| 118 EXPECT_CALL(*mock_cast_socket_, ConnectRawPtr(_, _)) | 111 EXPECT_CALL(*mock_cast_socket_, ConnectRawPtr(_, _)) |
| 119 .WillOnce(InvokeCompletionCallback<1>(ChannelError::NONE)); | 112 .WillOnce(InvokeCompletionCallback<1>(ChannelError::NONE)); |
| 120 EXPECT_CALL(*mock_cast_socket_, ready_state()) | 113 EXPECT_CALL(*mock_cast_socket_, ready_state()) |
| 121 .WillOnce(Return(ReadyState::OPEN)); | 114 .WillOnce(Return(ReadyState::OPEN)); |
| 122 EXPECT_CALL(*mock_cast_socket_->mock_transport(), | 115 EXPECT_CALL(*mock_cast_socket_->mock_transport(), |
| 123 SendMessage(A<const CastMessage&>(), _)) | 116 SendMessage(A<const CastMessage&>(), _)) |
| 124 .WillOnce(InvokeCompletionCallback<1>(net::OK)); | 117 .WillOnce(InvokeCompletionCallback<1>(net::OK)); |
| 125 EXPECT_CALL(*mock_cast_socket_, ready_state()) | 118 EXPECT_CALL(*mock_cast_socket_, ready_state()) |
| 126 .WillOnce(Return(ReadyState::OPEN)); | 119 .WillOnce(Return(ReadyState::OPEN)); |
| 127 EXPECT_CALL(*mock_cast_socket_, Close(_)) | 120 EXPECT_CALL(*mock_cast_socket_, Close(_)) |
| 128 .WillOnce(InvokeCompletionCallback<0>(net::OK)); | 121 .WillOnce(InvokeCompletionCallback<0>(net::OK)); |
| 129 EXPECT_CALL(*mock_cast_socket_, ready_state()) | 122 EXPECT_CALL(*mock_cast_socket_, ready_state()) |
| 130 .WillOnce(Return(ReadyState::CLOSED)); | 123 .WillOnce(Return(ReadyState::CLOSED)); |
| 131 } | 124 } |
| 132 } | 125 } |
| 133 | 126 |
| 134 void SetUpOpenPingTimeout() { | 127 void SetUpOpenPingTimeout() { |
| 135 SetUpMockCastSocket(); | 128 SetUpMockCastSocket(); |
| 136 EXPECT_CALL(*mock_cast_socket_, error_state()) | 129 mock_cast_socket_->SetErrorState(ChannelError::NONE); |
| 137 .WillRepeatedly(Return(ChannelError::NONE)); | 130 mock_cast_socket_->SetKeepAlive(true); |
| 138 EXPECT_CALL(*mock_cast_socket_, keep_alive()).WillRepeatedly(Return(true)); | |
| 139 { | 131 { |
| 140 InSequence sequence; | 132 InSequence sequence; |
| 141 EXPECT_CALL(*mock_cast_socket_, ConnectRawPtr(_, _)) | 133 EXPECT_CALL(*mock_cast_socket_, ConnectRawPtr(_, _)) |
| 142 .WillOnce(DoAll(SaveArg<0>(&message_delegate_), | 134 .WillOnce(DoAll(SaveArg<0>(&message_delegate_), |
| 143 InvokeCompletionCallback<1>(ChannelError::NONE))); | 135 InvokeCompletionCallback<1>(ChannelError::NONE))); |
| 144 EXPECT_CALL(*mock_cast_socket_, ready_state()) | 136 EXPECT_CALL(*mock_cast_socket_, ready_state()) |
| 145 .WillOnce(Return(ReadyState::OPEN)) | 137 .WillOnce(Return(ReadyState::OPEN)) |
| 146 .RetiresOnSaturation(); | 138 .RetiresOnSaturation(); |
| 147 EXPECT_CALL(*mock_cast_socket_, ready_state()) | 139 EXPECT_CALL(*mock_cast_socket_, ready_state()) |
| 148 .WillOnce(Return(ReadyState::CLOSED)); | 140 .WillOnce(Return(ReadyState::CLOSED)); |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 290 // always return true without actually running the test. Remove when fixed. | 282 // always return true without actually running the test. Remove when fixed. |
| 291 #if defined(OS_WIN) && !defined(NDEBUG) | 283 #if defined(OS_WIN) && !defined(NDEBUG) |
| 292 #define MAYBE_TestOpenReceiveClose DISABLED_TestOpenReceiveClose | 284 #define MAYBE_TestOpenReceiveClose DISABLED_TestOpenReceiveClose |
| 293 #else | 285 #else |
| 294 #define MAYBE_TestOpenReceiveClose TestOpenReceiveClose | 286 #define MAYBE_TestOpenReceiveClose TestOpenReceiveClose |
| 295 #endif | 287 #endif |
| 296 // Test loading extension, opening a channel, adding a listener, | 288 // Test loading extension, opening a channel, adding a listener, |
| 297 // writing, reading, and closing. | 289 // writing, reading, and closing. |
| 298 IN_PROC_BROWSER_TEST_F(CastChannelAPITest, MAYBE_TestOpenReceiveClose) { | 290 IN_PROC_BROWSER_TEST_F(CastChannelAPITest, MAYBE_TestOpenReceiveClose) { |
| 299 SetUpMockCastSocket(); | 291 SetUpMockCastSocket(); |
| 300 EXPECT_CALL(*mock_cast_socket_, error_state()) | 292 mock_cast_socket_->SetErrorState(ChannelError::NONE); |
| 301 .WillRepeatedly(Return(ChannelError::NONE)); | |
| 302 | 293 |
| 303 { | 294 { |
| 304 InSequence sequence; | 295 InSequence sequence; |
| 305 EXPECT_CALL(*mock_cast_socket_, ConnectRawPtr(NotNull(), _)) | 296 EXPECT_CALL(*mock_cast_socket_, ConnectRawPtr(NotNull(), _)) |
| 306 .WillOnce(DoAll(SaveArg<0>(&message_delegate_), | 297 .WillOnce(DoAll(SaveArg<0>(&message_delegate_), |
| 307 InvokeCompletionCallback<1>(ChannelError::NONE))); | 298 InvokeCompletionCallback<1>(ChannelError::NONE))); |
| 308 EXPECT_CALL(*mock_cast_socket_, ready_state()) | 299 EXPECT_CALL(*mock_cast_socket_, ready_state()) |
| 309 .Times(3) | 300 .Times(3) |
| 310 .WillRepeatedly(Return(ReadyState::OPEN)); | 301 .WillRepeatedly(Return(ReadyState::OPEN)); |
| 311 EXPECT_CALL(*mock_cast_socket_, Close(_)) | 302 EXPECT_CALL(*mock_cast_socket_, Close(_)) |
| (...skipping 19 matching lines...) Expand all Loading... |
| 331 #define MAYBE_TestOpenError TestOpenError | 322 #define MAYBE_TestOpenError TestOpenError |
| 332 #endif | 323 #endif |
| 333 // Test the case when socket open results in an error. | 324 // Test the case when socket open results in an error. |
| 334 IN_PROC_BROWSER_TEST_F(CastChannelAPITest, MAYBE_TestOpenError) { | 325 IN_PROC_BROWSER_TEST_F(CastChannelAPITest, MAYBE_TestOpenError) { |
| 335 SetUpMockCastSocket(); | 326 SetUpMockCastSocket(); |
| 336 | 327 |
| 337 EXPECT_CALL(*mock_cast_socket_, ConnectRawPtr(NotNull(), _)) | 328 EXPECT_CALL(*mock_cast_socket_, ConnectRawPtr(NotNull(), _)) |
| 338 .WillOnce(DoAll( | 329 .WillOnce(DoAll( |
| 339 SaveArg<0>(&message_delegate_), InvokeDelegateOnError(this, GetApi()), | 330 SaveArg<0>(&message_delegate_), InvokeDelegateOnError(this, GetApi()), |
| 340 InvokeCompletionCallback<1>(ChannelError::CONNECT_ERROR))); | 331 InvokeCompletionCallback<1>(ChannelError::CONNECT_ERROR))); |
| 341 EXPECT_CALL(*mock_cast_socket_, error_state()) | 332 mock_cast_socket_->SetErrorState(ChannelError::CONNECT_ERROR); |
| 342 .WillRepeatedly(Return(ChannelError::CONNECT_ERROR)); | |
| 343 EXPECT_CALL(*mock_cast_socket_, ready_state()) | 333 EXPECT_CALL(*mock_cast_socket_, ready_state()) |
| 344 .WillRepeatedly(Return(ReadyState::CLOSED)); | 334 .WillRepeatedly(Return(ReadyState::CLOSED)); |
| 345 EXPECT_CALL(*mock_cast_socket_, Close(_)) | 335 EXPECT_CALL(*mock_cast_socket_, Close(_)) |
| 346 .WillOnce(InvokeCompletionCallback<0>(net::OK)); | 336 .WillOnce(InvokeCompletionCallback<0>(net::OK)); |
| 347 | 337 |
| 348 EXPECT_TRUE(RunExtensionSubtest("cast_channel/api", | 338 EXPECT_TRUE(RunExtensionSubtest("cast_channel/api", |
| 349 "test_open_error.html")); | 339 "test_open_error.html")); |
| 350 } | 340 } |
| 351 | 341 |
| 352 IN_PROC_BROWSER_TEST_F(CastChannelAPITest, TestOpenInvalidConnectInfo) { | 342 IN_PROC_BROWSER_TEST_F(CastChannelAPITest, TestOpenInvalidConnectInfo) { |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 431 "\"keepAlive\": true, " | 421 "\"keepAlive\": true, " |
| 432 "\"audioOnly\": false, " | 422 "\"audioOnly\": false, " |
| 433 "\"connectInfo\": " | 423 "\"connectInfo\": " |
| 434 "{\"ipAddress\": \"127.0.0.1\", \"port\": 8009, " | 424 "{\"ipAddress\": \"127.0.0.1\", \"port\": 8009, " |
| 435 "\"auth\": \"ssl_verified\"}, \"readyState\": \"open\"}, " | 425 "\"auth\": \"ssl_verified\"}, \"readyState\": \"open\"}, " |
| 436 "{\"namespace_\": \"foo\", \"sourceId\": \"src\", " | 426 "{\"namespace_\": \"foo\", \"sourceId\": \"src\", " |
| 437 "\"destinationId\": \"\", \"data\": \"data\"}]", | 427 "\"destinationId\": \"\", \"data\": \"data\"}]", |
| 438 browser()); | 428 browser()); |
| 439 EXPECT_EQ(error, "message_info.destination_id is required"); | 429 EXPECT_EQ(error, "message_info.destination_id is required"); |
| 440 } | 430 } |
| OLD | NEW |