| Index: net/udp/udp_socket_unittest.cc
|
| diff --git a/net/udp/udp_socket_unittest.cc b/net/udp/udp_socket_unittest.cc
|
| index 09a28063f2050bd158d84808032946c1d1c282ff..d488bea46da6654b248f26800e8fb55f3f1a1ca5 100644
|
| --- a/net/udp/udp_socket_unittest.cc
|
| +++ b/net/udp/udp_socket_unittest.cc
|
| @@ -526,6 +526,60 @@ TEST_F(UDPSocketTest, CloseWithPendingRead) {
|
| EXPECT_FALSE(callback.have_result());
|
| }
|
|
|
| +#if defined(OS_ANDROID)
|
| +// Some Android devices do not support multicast socket.
|
| +// The ones supporting multicast need WifiManager.MulitcastLock to enable it.
|
| +// http://goo.gl/jjAk9
|
| +#define MAYBE_JoinMulticastGroup DISABLED_JoinMulticastGroup
|
| +#else
|
| +#define MAYBE_JoinMulticastGroup JoinMulticastGroup
|
| +#endif // defined(OS_ANDROID)
|
| +
|
| +TEST_F(UDPSocketTest, MAYBE_JoinMulticastGroup) {
|
| + const int kPort = 9999;
|
| + const char* const kGroup = "237.132.100.17";
|
| +
|
| + IPEndPoint bind_address;
|
| + CreateUDPAddress("0.0.0.0", kPort, &bind_address);
|
| + IPAddressNumber group_ip;
|
| + EXPECT_TRUE(ParseIPLiteralToNumber(kGroup, &group_ip));
|
| +
|
| + UDPSocket socket(DatagramSocket::DEFAULT_BIND,
|
| + RandIntCallback(),
|
| + NULL,
|
| + NetLog::Source());
|
| + EXPECT_EQ(OK, socket.Bind(bind_address));
|
| + EXPECT_EQ(OK, socket.JoinGroup(group_ip));
|
| + // Joining group multiple times.
|
| + EXPECT_NE(OK, socket.JoinGroup(group_ip));
|
| + EXPECT_EQ(OK, socket.LeaveGroup(group_ip));
|
| + // Leaving group multiple times.
|
| + EXPECT_NE(OK, socket.LeaveGroup(group_ip));
|
| +
|
| + socket.Close();
|
| +}
|
| +
|
| +TEST_F(UDPSocketTest, MulticastOptions) {
|
| + const int kPort = 9999;
|
| + IPEndPoint bind_address;
|
| + CreateUDPAddress("0.0.0.0", kPort, &bind_address);
|
| +
|
| + UDPSocket socket(DatagramSocket::DEFAULT_BIND,
|
| + RandIntCallback(),
|
| + NULL,
|
| + NetLog::Source());
|
| + // Before binding.
|
| + EXPECT_EQ(OK, socket.SetMulticastLoopbackMode(false));
|
| + EXPECT_EQ(OK, socket.SetMulticastLoopbackMode(true));
|
| + EXPECT_EQ(OK, socket.SetMulticastTimeToLive(0));
|
| + EXPECT_EQ(OK, socket.SetMulticastTimeToLive(3));
|
| + EXPECT_NE(OK, socket.SetMulticastTimeToLive(-1));
|
| +
|
| + EXPECT_EQ(OK, socket.Bind(bind_address));
|
| +
|
| + socket.Close();
|
| +}
|
| +
|
| } // namespace
|
|
|
| } // namespace net
|
|
|