| 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 "extensions/browser/api/cast_channel/cast_transport.h" | 5 #include "extensions/browser/api/cast_channel/cast_transport.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <queue> | 10 #include <queue> |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 139 } | 139 } |
| 140 | 140 |
| 141 virtual int SetSendBufferSize(int32_t size) { | 141 virtual int SetSendBufferSize(int32_t size) { |
| 142 NOTREACHED(); | 142 NOTREACHED(); |
| 143 return 0; | 143 return 0; |
| 144 } | 144 } |
| 145 }; | 145 }; |
| 146 | 146 |
| 147 class CastTransportTest : public testing::Test { | 147 class CastTransportTest : public testing::Test { |
| 148 public: | 148 public: |
| 149 using ChannelError = ::cast_channel::ChannelError; |
| 150 using ChannelAuthType = ::cast_channel::ChannelAuthType; |
| 151 |
| 149 CastTransportTest() : logger_(new Logger()) { | 152 CastTransportTest() : logger_(new Logger()) { |
| 150 delegate_ = new MockCastTransportDelegate; | 153 delegate_ = new MockCastTransportDelegate; |
| 151 transport_.reset(new CastTransportImpl(&mock_socket_, kChannelId, | 154 transport_.reset(new CastTransportImpl(&mock_socket_, kChannelId, |
| 152 CreateIPEndPointForTest(), | 155 CreateIPEndPointForTest(), |
| 153 auth_type_, logger_)); | 156 auth_type_, logger_)); |
| 154 transport_->SetReadDelegate(base::WrapUnique(delegate_)); | 157 transport_->SetReadDelegate(base::WrapUnique(delegate_)); |
| 155 } | 158 } |
| 156 ~CastTransportTest() override {} | 159 ~CastTransportTest() override {} |
| 157 | 160 |
| 158 protected: | 161 protected: |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 output); | 237 output); |
| 235 } | 238 } |
| 236 | 239 |
| 237 TEST_F(CastTransportTest, TestWriteFailureAsync) { | 240 TEST_F(CastTransportTest, TestWriteFailureAsync) { |
| 238 CompletionQueue socket_cbs; | 241 CompletionQueue socket_cbs; |
| 239 CompleteHandler write_handler; | 242 CompleteHandler write_handler; |
| 240 CastMessage message = CreateCastMessage(); | 243 CastMessage message = CreateCastMessage(); |
| 241 EXPECT_CALL(mock_socket_, Write(NotNull(), _, _)).WillOnce( | 244 EXPECT_CALL(mock_socket_, Write(NotNull(), _, _)).WillOnce( |
| 242 DoAll(EnqueueCallback<2>(&socket_cbs), Return(net::ERR_IO_PENDING))); | 245 DoAll(EnqueueCallback<2>(&socket_cbs), Return(net::ERR_IO_PENDING))); |
| 243 EXPECT_CALL(write_handler, Complete(net::ERR_FAILED)); | 246 EXPECT_CALL(write_handler, Complete(net::ERR_FAILED)); |
| 244 EXPECT_CALL(*delegate_, OnError(CHANNEL_ERROR_SOCKET_ERROR)); | 247 EXPECT_CALL(*delegate_, OnError(ChannelError::SOCKET_ERROR)); |
| 245 transport_->SendMessage( | 248 transport_->SendMessage( |
| 246 message, | 249 message, |
| 247 base::Bind(&CompleteHandler::Complete, base::Unretained(&write_handler))); | 250 base::Bind(&CompleteHandler::Complete, base::Unretained(&write_handler))); |
| 248 RunPendingTasks(); | 251 RunPendingTasks(); |
| 249 socket_cbs.Pop(net::ERR_CONNECTION_RESET); | 252 socket_cbs.Pop(net::ERR_CONNECTION_RESET); |
| 250 RunPendingTasks(); | 253 RunPendingTasks(); |
| 251 EXPECT_EQ(proto::SOCKET_WRITE, logger_->GetLastErrors(kChannelId).event_type); | 254 EXPECT_EQ(proto::SOCKET_WRITE, logger_->GetLastErrors(kChannelId).event_type); |
| 252 EXPECT_EQ(net::ERR_CONNECTION_RESET, | 255 EXPECT_EQ(net::ERR_CONNECTION_RESET, |
| 253 logger_->GetLastErrors(kChannelId).net_return_value); | 256 logger_->GetLastErrors(kChannelId).net_return_value); |
| 254 } | 257 } |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 415 EXPECT_CALL(*delegate_, Start()); | 418 EXPECT_CALL(*delegate_, Start()); |
| 416 | 419 |
| 417 // Read bytes [0, 3]. | 420 // Read bytes [0, 3]. |
| 418 EXPECT_CALL(mock_socket_, | 421 EXPECT_CALL(mock_socket_, |
| 419 Read(NotNull(), MessageFramer::MessageHeader::header_size(), _)) | 422 Read(NotNull(), MessageFramer::MessageHeader::header_size(), _)) |
| 420 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message), | 423 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message), |
| 421 EnqueueCallback<2>(&socket_cbs), | 424 EnqueueCallback<2>(&socket_cbs), |
| 422 Return(net::ERR_IO_PENDING))) | 425 Return(net::ERR_IO_PENDING))) |
| 423 .RetiresOnSaturation(); | 426 .RetiresOnSaturation(); |
| 424 | 427 |
| 425 EXPECT_CALL(*delegate_, OnError(CHANNEL_ERROR_SOCKET_ERROR)); | 428 EXPECT_CALL(*delegate_, OnError(ChannelError::SOCKET_ERROR)); |
| 426 transport_->Start(); | 429 transport_->Start(); |
| 427 // Header read failure. | 430 // Header read failure. |
| 428 socket_cbs.Pop(net::ERR_CONNECTION_RESET); | 431 socket_cbs.Pop(net::ERR_CONNECTION_RESET); |
| 429 EXPECT_EQ(proto::SOCKET_READ, logger_->GetLastErrors(kChannelId).event_type); | 432 EXPECT_EQ(proto::SOCKET_READ, logger_->GetLastErrors(kChannelId).event_type); |
| 430 EXPECT_EQ(net::ERR_CONNECTION_RESET, | 433 EXPECT_EQ(net::ERR_CONNECTION_RESET, |
| 431 logger_->GetLastErrors(kChannelId).net_return_value); | 434 logger_->GetLastErrors(kChannelId).net_return_value); |
| 432 } | 435 } |
| 433 | 436 |
| 434 TEST_F(CastTransportTest, TestReadErrorInBodyAsync) { | 437 TEST_F(CastTransportTest, TestReadErrorInBodyAsync) { |
| 435 CompletionQueue socket_cbs; | 438 CompletionQueue socket_cbs; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 453 serialized_message.size() - | 456 serialized_message.size() - |
| 454 MessageFramer::MessageHeader::header_size(), | 457 MessageFramer::MessageHeader::header_size(), |
| 455 _)) | 458 _)) |
| 456 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr( | 459 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr( |
| 457 MessageFramer::MessageHeader::header_size(), | 460 MessageFramer::MessageHeader::header_size(), |
| 458 serialized_message.size() - | 461 serialized_message.size() - |
| 459 MessageFramer::MessageHeader::header_size() - 1)), | 462 MessageFramer::MessageHeader::header_size() - 1)), |
| 460 EnqueueCallback<2>(&socket_cbs), | 463 EnqueueCallback<2>(&socket_cbs), |
| 461 Return(net::ERR_IO_PENDING))) | 464 Return(net::ERR_IO_PENDING))) |
| 462 .RetiresOnSaturation(); | 465 .RetiresOnSaturation(); |
| 463 EXPECT_CALL(*delegate_, OnError(CHANNEL_ERROR_SOCKET_ERROR)); | 466 EXPECT_CALL(*delegate_, OnError(ChannelError::SOCKET_ERROR)); |
| 464 transport_->Start(); | 467 transport_->Start(); |
| 465 // Header read is OK. | 468 // Header read is OK. |
| 466 socket_cbs.Pop(MessageFramer::MessageHeader::header_size()); | 469 socket_cbs.Pop(MessageFramer::MessageHeader::header_size()); |
| 467 // Body read fails. | 470 // Body read fails. |
| 468 socket_cbs.Pop(net::ERR_CONNECTION_RESET); | 471 socket_cbs.Pop(net::ERR_CONNECTION_RESET); |
| 469 EXPECT_EQ(proto::SOCKET_READ, logger_->GetLastErrors(kChannelId).event_type); | 472 EXPECT_EQ(proto::SOCKET_READ, logger_->GetLastErrors(kChannelId).event_type); |
| 470 EXPECT_EQ(net::ERR_CONNECTION_RESET, | 473 EXPECT_EQ(net::ERR_CONNECTION_RESET, |
| 471 logger_->GetLastErrors(kChannelId).net_return_value); | 474 logger_->GetLastErrors(kChannelId).net_return_value); |
| 472 } | 475 } |
| 473 | 476 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 500 MessageFramer::MessageHeader::header_size(), | 503 MessageFramer::MessageHeader::header_size(), |
| 501 _)) | 504 _)) |
| 502 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr( | 505 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr( |
| 503 MessageFramer::MessageHeader::header_size(), | 506 MessageFramer::MessageHeader::header_size(), |
| 504 serialized_message.size() - | 507 serialized_message.size() - |
| 505 MessageFramer::MessageHeader::header_size() - 1)), | 508 MessageFramer::MessageHeader::header_size() - 1)), |
| 506 EnqueueCallback<2>(&socket_cbs), | 509 EnqueueCallback<2>(&socket_cbs), |
| 507 Return(net::ERR_IO_PENDING))) | 510 Return(net::ERR_IO_PENDING))) |
| 508 .RetiresOnSaturation(); | 511 .RetiresOnSaturation(); |
| 509 | 512 |
| 510 EXPECT_CALL(*delegate_, OnError(CHANNEL_ERROR_INVALID_MESSAGE)); | 513 EXPECT_CALL(*delegate_, OnError(ChannelError::INVALID_MESSAGE)); |
| 511 transport_->Start(); | 514 transport_->Start(); |
| 512 socket_cbs.Pop(MessageFramer::MessageHeader::header_size()); | 515 socket_cbs.Pop(MessageFramer::MessageHeader::header_size()); |
| 513 socket_cbs.Pop(serialized_message.size() - | 516 socket_cbs.Pop(serialized_message.size() - |
| 514 MessageFramer::MessageHeader::header_size()); | 517 MessageFramer::MessageHeader::header_size()); |
| 515 } | 518 } |
| 516 | 519 |
| 517 // ---------------------------------------------------------------------------- | 520 // ---------------------------------------------------------------------------- |
| 518 // Synchronous read tests | 521 // Synchronous read tests |
| 519 TEST_F(CastTransportTest, TestFullReadSync) { | 522 TEST_F(CastTransportTest, TestFullReadSync) { |
| 520 InSequence s; | 523 InSequence s; |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 599 EXPECT_TRUE(MessageFramer::Serialize(message, &serialized_message)); | 602 EXPECT_TRUE(MessageFramer::Serialize(message, &serialized_message)); |
| 600 | 603 |
| 601 EXPECT_CALL(*delegate_, Start()); | 604 EXPECT_CALL(*delegate_, Start()); |
| 602 | 605 |
| 603 // Read bytes [0, 3]. | 606 // Read bytes [0, 3]. |
| 604 EXPECT_CALL(mock_socket_, | 607 EXPECT_CALL(mock_socket_, |
| 605 Read(NotNull(), MessageFramer::MessageHeader::header_size(), _)) | 608 Read(NotNull(), MessageFramer::MessageHeader::header_size(), _)) |
| 606 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message), | 609 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message), |
| 607 Return(net::ERR_CONNECTION_RESET))) | 610 Return(net::ERR_CONNECTION_RESET))) |
| 608 .RetiresOnSaturation(); | 611 .RetiresOnSaturation(); |
| 609 EXPECT_CALL(*delegate_, OnError(CHANNEL_ERROR_SOCKET_ERROR)); | 612 EXPECT_CALL(*delegate_, OnError(ChannelError::SOCKET_ERROR)); |
| 610 transport_->Start(); | 613 transport_->Start(); |
| 611 } | 614 } |
| 612 | 615 |
| 613 TEST_F(CastTransportTest, TestReadErrorInBodySync) { | 616 TEST_F(CastTransportTest, TestReadErrorInBodySync) { |
| 614 CastMessage message = CreateCastMessage(); | 617 CastMessage message = CreateCastMessage(); |
| 615 std::string serialized_message; | 618 std::string serialized_message; |
| 616 EXPECT_TRUE(MessageFramer::Serialize(message, &serialized_message)); | 619 EXPECT_TRUE(MessageFramer::Serialize(message, &serialized_message)); |
| 617 | 620 |
| 618 EXPECT_CALL(*delegate_, Start()); | 621 EXPECT_CALL(*delegate_, Start()); |
| 619 | 622 |
| 620 // Read bytes [0, 3]. | 623 // Read bytes [0, 3]. |
| 621 EXPECT_CALL(mock_socket_, | 624 EXPECT_CALL(mock_socket_, |
| 622 Read(NotNull(), MessageFramer::MessageHeader::header_size(), _)) | 625 Read(NotNull(), MessageFramer::MessageHeader::header_size(), _)) |
| 623 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message), | 626 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message), |
| 624 Return(MessageFramer::MessageHeader::header_size()))) | 627 Return(MessageFramer::MessageHeader::header_size()))) |
| 625 .RetiresOnSaturation(); | 628 .RetiresOnSaturation(); |
| 626 // Read bytes [4, n-1]. | 629 // Read bytes [4, n-1]. |
| 627 EXPECT_CALL(mock_socket_, | 630 EXPECT_CALL(mock_socket_, |
| 628 Read(NotNull(), | 631 Read(NotNull(), |
| 629 serialized_message.size() - | 632 serialized_message.size() - |
| 630 MessageFramer::MessageHeader::header_size(), | 633 MessageFramer::MessageHeader::header_size(), |
| 631 _)) | 634 _)) |
| 632 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr( | 635 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr( |
| 633 MessageFramer::MessageHeader::header_size(), | 636 MessageFramer::MessageHeader::header_size(), |
| 634 serialized_message.size() - | 637 serialized_message.size() - |
| 635 MessageFramer::MessageHeader::header_size() - 1)), | 638 MessageFramer::MessageHeader::header_size() - 1)), |
| 636 Return(net::ERR_CONNECTION_RESET))) | 639 Return(net::ERR_CONNECTION_RESET))) |
| 637 .RetiresOnSaturation(); | 640 .RetiresOnSaturation(); |
| 638 EXPECT_CALL(*delegate_, OnError(CHANNEL_ERROR_SOCKET_ERROR)); | 641 EXPECT_CALL(*delegate_, OnError(ChannelError::SOCKET_ERROR)); |
| 639 transport_->Start(); | 642 transport_->Start(); |
| 640 EXPECT_EQ(proto::SOCKET_READ, logger_->GetLastErrors(kChannelId).event_type); | 643 EXPECT_EQ(proto::SOCKET_READ, logger_->GetLastErrors(kChannelId).event_type); |
| 641 EXPECT_EQ(net::ERR_CONNECTION_RESET, | 644 EXPECT_EQ(net::ERR_CONNECTION_RESET, |
| 642 logger_->GetLastErrors(kChannelId).net_return_value); | 645 logger_->GetLastErrors(kChannelId).net_return_value); |
| 643 } | 646 } |
| 644 | 647 |
| 645 TEST_F(CastTransportTest, TestReadCorruptedMessageSync) { | 648 TEST_F(CastTransportTest, TestReadCorruptedMessageSync) { |
| 646 InSequence s; | 649 InSequence s; |
| 647 CastMessage message = CreateCastMessage(); | 650 CastMessage message = CreateCastMessage(); |
| 648 std::string serialized_message; | 651 std::string serialized_message; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 669 serialized_message.size() - | 672 serialized_message.size() - |
| 670 MessageFramer::MessageHeader::header_size(), | 673 MessageFramer::MessageHeader::header_size(), |
| 671 _)) | 674 _)) |
| 672 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr( | 675 .WillOnce(DoAll(FillBufferFromString<0>(serialized_message.substr( |
| 673 MessageFramer::MessageHeader::header_size(), | 676 MessageFramer::MessageHeader::header_size(), |
| 674 serialized_message.size() - | 677 serialized_message.size() - |
| 675 MessageFramer::MessageHeader::header_size() - 1)), | 678 MessageFramer::MessageHeader::header_size() - 1)), |
| 676 Return(serialized_message.size() - | 679 Return(serialized_message.size() - |
| 677 MessageFramer::MessageHeader::header_size()))) | 680 MessageFramer::MessageHeader::header_size()))) |
| 678 .RetiresOnSaturation(); | 681 .RetiresOnSaturation(); |
| 679 EXPECT_CALL(*delegate_, OnError(CHANNEL_ERROR_INVALID_MESSAGE)); | 682 EXPECT_CALL(*delegate_, OnError(ChannelError::INVALID_MESSAGE)); |
| 680 transport_->Start(); | 683 transport_->Start(); |
| 681 } | 684 } |
| 682 } // namespace cast_channel | 685 } // namespace cast_channel |
| 683 } // namespace api | 686 } // namespace api |
| 684 } // namespace extensions | 687 } // namespace extensions |
| OLD | NEW |