| Index: chrome/browser/extensions/api/cast_channel/cast_channel_apitest.cc
|
| diff --git a/chrome/browser/extensions/api/cast_channel/cast_channel_apitest.cc b/chrome/browser/extensions/api/cast_channel/cast_channel_apitest.cc
|
| index 58485bfe27d069a2311332ede6cab64f7a852f46..fe478bff1af849582925fb56fd6f4828e68290c3 100644
|
| --- a/chrome/browser/extensions/api/cast_channel/cast_channel_apitest.cc
|
| +++ b/chrome/browser/extensions/api/cast_channel/cast_channel_apitest.cc
|
| @@ -16,6 +16,7 @@
|
| #include "net/base/completion_callback.h"
|
| #include "net/base/net_errors.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| +#include "testing/gmock_mutant.h"
|
|
|
| namespace cast_channel = extensions::api::cast_channel;
|
| using cast_channel::CastSocket;
|
| @@ -23,8 +24,9 @@ using cast_channel::ChannelError;
|
| using cast_channel::MessageInfo;
|
| using cast_channel::ReadyState;
|
|
|
| -using ::testing::A;
|
| using ::testing::_;
|
| +using ::testing::A;
|
| +using ::testing::DoAll;
|
| using ::testing::Invoke;
|
| using ::testing::InSequence;
|
| using ::testing::Return;
|
| @@ -47,6 +49,10 @@ ACTION_TEMPLATE(InvokeCompletionCallback,
|
| ::std::tr1::get<k>(args).Run(result);
|
| }
|
|
|
| +ACTION_P2(InvokeDelegateOnError, api_test, api) {
|
| + api_test->CallOnError(api);
|
| +}
|
| +
|
| class MockCastSocket : public CastSocket {
|
| public:
|
| explicit MockCastSocket(CastSocket::Delegate* delegate,
|
| @@ -102,6 +108,11 @@ class CastChannelAPITest : public ExtensionApiTest {
|
| return extensions::CastChannelAPI::Get(profile());
|
| }
|
|
|
| + void CallOnError(extensions::CastChannelAPI* api) {
|
| + api->OnError(mock_cast_socket_,
|
| + cast_channel::CHANNEL_ERROR_CONNECT_ERROR);
|
| + }
|
| +
|
| protected:
|
| void CallOnMessage(const std::string& message) {
|
| content::BrowserThread::PostTask(
|
| @@ -220,3 +231,30 @@ IN_PROC_BROWSER_TEST_F(CastChannelAPITest, MAYBE_TestOpenReceiveClose) {
|
| CallOnMessage("some-message");
|
| EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
|
| }
|
| +
|
| +// TODO(munjal): Win Dbg has a workaround that makes RunExtensionSubtest
|
| +// always return true without actually running the test. Remove when fixed.
|
| +#if defined(OS_WIN) && !defined(NDEBUG)
|
| +#define MAYBE_TestOpenError DISABLED_TestOpenError
|
| +#else
|
| +#define MAYBE_TestOpenError TestOpenError
|
| +#endif
|
| +// Test the case when socket open results in an error.
|
| +IN_PROC_BROWSER_TEST_F(CastChannelAPITest, MAYBE_TestOpenError) {
|
| + SetUpMockCastSocket();
|
| +
|
| + EXPECT_CALL(*mock_cast_socket_, Connect(_))
|
| + .WillOnce(DoAll(
|
| + InvokeDelegateOnError(this, GetApi()),
|
| + InvokeCompletionCallback<0>(net::ERR_FAILED)));
|
| + EXPECT_CALL(*mock_cast_socket_, ready_state())
|
| + .WillRepeatedly(Return(cast_channel::READY_STATE_CLOSED));
|
| + EXPECT_CALL(*mock_cast_socket_, Close(_));
|
| +
|
| + EXPECT_TRUE(RunExtensionSubtest("cast_channel/api",
|
| + "test_open_error.html"));
|
| +
|
| + ResultCatcher catcher;
|
| + EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
|
| +}
|
| +
|
|
|