| Index: extensions/browser/api/cast_channel/cast_channel_apitest.cc
|
| diff --git a/extensions/browser/api/cast_channel/cast_channel_apitest.cc b/extensions/browser/api/cast_channel/cast_channel_apitest.cc
|
| index 13293a28b2c2ced7ffdb9f9fc119525b364648ad..1639bf609142783f6d28f20634ab6e7747fc4c4b 100644
|
| --- a/extensions/browser/api/cast_channel/cast_channel_apitest.cc
|
| +++ b/extensions/browser/api/cast_channel/cast_channel_apitest.cc
|
| @@ -13,6 +13,8 @@
|
| #include "chrome/browser/extensions/extension_service.h"
|
| #include "chrome/browser/ui/browser.h"
|
| #include "components/cast_channel/cast_socket.h"
|
| +#include "components/cast_channel/cast_socket_service.h"
|
| +#include "components/cast_channel/cast_socket_service_factory.h"
|
| #include "components/cast_channel/cast_test_util.h"
|
| #include "components/cast_channel/logger.h"
|
| #include "components/cast_channel/proto/cast_channel.pb.h"
|
| @@ -56,6 +58,7 @@ using ::testing::Return;
|
| using ::testing::ReturnRef;
|
| using ::testing::ReturnPointee;
|
| using ::testing::SaveArg;
|
| +using ::testing::WithArgs;
|
|
|
| namespace {
|
|
|
| @@ -92,27 +95,25 @@ class CastChannelAPITest : public ExtensionApiTest {
|
| extensions::CastChannelAPI* api = GetApi();
|
|
|
| net::IPEndPoint ip_endpoint(net::IPAddress(192, 168, 1, 1), 8009);
|
| - mock_cast_socket_ = new MockCastSocket;
|
| + mock_cast_socket_ = new MockCastSocket();
|
| + mock_cast_socket_->SetIPEndpoint(ip_endpoint_);
|
| + mock_cast_socket_->SetKeepAlive(false);
|
| // Transfers ownership of the socket.
|
| api->SetSocketForTest(base::WrapUnique<CastSocket>(mock_cast_socket_));
|
| - ON_CALL(*mock_cast_socket_, set_id(_))
|
| - .WillByDefault(SaveArg<0>(&channel_id_));
|
| - ON_CALL(*mock_cast_socket_, id())
|
| - .WillByDefault(ReturnPointee(&channel_id_));
|
| - ON_CALL(*mock_cast_socket_, ip_endpoint())
|
| - .WillByDefault(ReturnRef(ip_endpoint_));
|
| - ON_CALL(*mock_cast_socket_, keep_alive()).WillByDefault(Return(false));
|
| }
|
|
|
| void SetUpOpenSendClose() {
|
| SetUpMockCastSocket();
|
| - EXPECT_CALL(*mock_cast_socket_, error_state())
|
| - .WillRepeatedly(Return(ChannelError::NONE));
|
| + mock_cast_socket_->SetErrorState(ChannelError::NONE);
|
| {
|
| InSequence sequence;
|
|
|
| + EXPECT_CALL(*mock_cast_socket_, AddObserver(_));
|
| EXPECT_CALL(*mock_cast_socket_, Connect(_))
|
| - .WillOnce(InvokeCompletionCallback<0>(ChannelError::NONE));
|
| + .WillOnce(WithArgs<0>(
|
| + Invoke([&](const CastSocket::OnOpenCallback& callback) {
|
| + callback.Run(mock_cast_socket_->id(), ChannelError::NONE);
|
| + })));
|
| EXPECT_CALL(*mock_cast_socket_, ready_state())
|
| .WillOnce(Return(ReadyState::OPEN));
|
| EXPECT_CALL(*mock_cast_socket_->mock_transport(),
|
| @@ -129,15 +130,17 @@ class CastChannelAPITest : public ExtensionApiTest {
|
|
|
| void SetUpOpenPingTimeout() {
|
| SetUpMockCastSocket();
|
| - EXPECT_CALL(*mock_cast_socket_, error_state())
|
| - .WillRepeatedly(Return(ChannelError::NONE));
|
| - EXPECT_CALL(*mock_cast_socket_, keep_alive()).WillRepeatedly(Return(true));
|
| + mock_cast_socket_->SetErrorState(ChannelError::NONE);
|
| + mock_cast_socket_->SetKeepAlive(true);
|
| {
|
| InSequence sequence;
|
| EXPECT_CALL(*mock_cast_socket_, AddObserver(_))
|
| .WillOnce(SaveArg<0>(&message_observer_));
|
| EXPECT_CALL(*mock_cast_socket_, Connect(_))
|
| - .WillOnce(InvokeCompletionCallback<0>(ChannelError::NONE));
|
| + .WillOnce(WithArgs<0>(
|
| + Invoke([&](const CastSocket::OnOpenCallback& callback) {
|
| + callback.Run(mock_cast_socket_->id(), ChannelError::NONE);
|
| + })));
|
| EXPECT_CALL(*mock_cast_socket_, ready_state())
|
| .WillOnce(Return(ReadyState::OPEN))
|
| .RetiresOnSaturation();
|
| @@ -150,10 +153,16 @@ class CastChannelAPITest : public ExtensionApiTest {
|
| return extensions::CastChannelAPI::Get(profile());
|
| }
|
|
|
| + cast_channel::CastSocketService* GetCastSocketService() {
|
| + return cast_channel::CastSocketServiceFactory::GetForBrowserContext(
|
| + profile())
|
| + .get();
|
| + }
|
| +
|
| // Logs some bogus error details and calls the OnError handler.
|
| - void DoCallOnError(extensions::CastChannelAPI* api) {
|
| - api->GetLogger()->LogSocketEventWithRv(
|
| - mock_cast_socket_->id(), ::cast_channel::ChannelEvent::SOCKET_WRITE,
|
| + void DoCallOnError(cast_channel::CastSocketService* cast_socket_service) {
|
| + cast_socket_service->GetLogger()->LogSocketEventWithRv(
|
| + mock_cast_socket_->id(), cast_channel::ChannelEvent::SOCKET_WRITE,
|
| net::ERR_FAILED);
|
| message_observer_->OnError(*mock_cast_socket_, ChannelError::CONNECT_ERROR);
|
| }
|
| @@ -211,11 +220,11 @@ class CastChannelAPITest : public ExtensionApiTest {
|
| int channel_id_;
|
| };
|
|
|
| -ACTION_P2(InvokeObserverOnError, api_test, api) {
|
| +ACTION_P2(InvokeObserverOnError, api_test, cast_socket_service) {
|
| content::BrowserThread::PostTask(
|
| content::BrowserThread::IO, FROM_HERE,
|
| base::Bind(&CastChannelAPITest::DoCallOnError, base::Unretained(api_test),
|
| - base::Unretained(api)));
|
| + cast_socket_service));
|
| }
|
|
|
| // TODO(kmarshall): Win Dbg has a workaround that makes RunExtensionSubtest
|
| @@ -288,15 +297,17 @@ IN_PROC_BROWSER_TEST_F(CastChannelAPITest, MAYBE_TestPingTimeoutSslVerified) {
|
| // writing, reading, and closing.
|
| IN_PROC_BROWSER_TEST_F(CastChannelAPITest, MAYBE_TestOpenReceiveClose) {
|
| SetUpMockCastSocket();
|
| - EXPECT_CALL(*mock_cast_socket_, error_state())
|
| - .WillRepeatedly(Return(ChannelError::NONE));
|
| + mock_cast_socket_->SetErrorState(ChannelError::NONE);
|
|
|
| {
|
| InSequence sequence;
|
| EXPECT_CALL(*mock_cast_socket_, AddObserver(_))
|
| .WillOnce(SaveArg<0>(&message_observer_));
|
| EXPECT_CALL(*mock_cast_socket_, Connect(_))
|
| - .WillOnce(InvokeCompletionCallback<0>(ChannelError::NONE));
|
| + .WillOnce(
|
| + WithArgs<0>(Invoke([&](const CastSocket::OnOpenCallback& callback) {
|
| + callback.Run(mock_cast_socket_->id(), ChannelError::NONE);
|
| + })));
|
| EXPECT_CALL(*mock_cast_socket_, ready_state())
|
| .Times(3)
|
| .WillRepeatedly(Return(ReadyState::OPEN));
|
| @@ -328,11 +339,13 @@ IN_PROC_BROWSER_TEST_F(CastChannelAPITest, MAYBE_TestOpenError) {
|
|
|
| EXPECT_CALL(*mock_cast_socket_, AddObserver(_))
|
| .WillOnce(DoAll(SaveArg<0>(&message_observer_),
|
| - InvokeObserverOnError(this, GetApi())));
|
| + InvokeObserverOnError(this, GetCastSocketService())));
|
| EXPECT_CALL(*mock_cast_socket_, Connect(_))
|
| - .WillOnce(InvokeCompletionCallback<0>(ChannelError::CONNECT_ERROR));
|
| - EXPECT_CALL(*mock_cast_socket_, error_state())
|
| - .WillRepeatedly(Return(ChannelError::CONNECT_ERROR));
|
| + .WillOnce(
|
| + WithArgs<0>(Invoke([&](const CastSocket::OnOpenCallback& callback) {
|
| + callback.Run(mock_cast_socket_->id(), ChannelError::CONNECT_ERROR);
|
| + })));
|
| + mock_cast_socket_->SetErrorState(ChannelError::CONNECT_ERROR);
|
| EXPECT_CALL(*mock_cast_socket_, ready_state())
|
| .WillRepeatedly(Return(ReadyState::CLOSED));
|
| EXPECT_CALL(*mock_cast_socket_, Close(_))
|
|
|