| 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
 | 
| 
 |