Adding Android binding for RTCConfiguration::max_ipv6_networks.

BUG=webrtc:7703

Review-Url: https://codereview.webrtc.org/2984863002
Cr-Commit-Position: refs/heads/master@{#19172}
diff --git a/webrtc/sdk/android/api/org/webrtc/PeerConnection.java b/webrtc/sdk/android/api/org/webrtc/PeerConnection.java
index 480818e..4bce239 100644
--- a/webrtc/sdk/android/api/org/webrtc/PeerConnection.java
+++ b/webrtc/sdk/android/api/org/webrtc/PeerConnection.java
@@ -197,8 +197,17 @@
     public boolean presumeWritableWhenFullyRelayed;
     public Integer iceCheckMinInterval;
     public boolean disableIPv6OnWifi;
+    // By default, PeerConnection will use a limited number of IPv6 network
+    // interfaces, in order to avoid too many ICE candidate pairs being created
+    // and delaying ICE completion.
+    //
+    // Can be set to Integer.MAX_VALUE to effectively disable the limit.
+    public int maxIPv6Networks;
     public IntervalRange iceRegatherIntervalRange;
 
+    // TODO(deadbeef): Instead of duplicating the defaults here, we should do
+    // something to pick up the defaults from C++. The Objective-C equivalent
+    // of RTCConfiguration does that.
     public RTCConfiguration(List<IceServer> iceServers) {
       iceTransportsType = IceTransportsType.ALL;
       bundlePolicy = BundlePolicy.BALANCED;
@@ -217,6 +226,7 @@
       presumeWritableWhenFullyRelayed = false;
       iceCheckMinInterval = null;
       disableIPv6OnWifi = false;
+      maxIPv6Networks = 5;
       iceRegatherIntervalRange = null;
     }
   };
diff --git a/webrtc/sdk/android/src/jni/peerconnection_jni.cc b/webrtc/sdk/android/src/jni/peerconnection_jni.cc
index 134f7b4..b819ca9 100644
--- a/webrtc/sdk/android/src/jni/peerconnection_jni.cc
+++ b/webrtc/sdk/android/src/jni/peerconnection_jni.cc
@@ -1537,6 +1537,9 @@
   jfieldID j_disable_ipv6_on_wifi_id =
       GetFieldID(jni, j_rtc_config_class, "disableIPv6OnWifi", "Z");
 
+  jfieldID j_max_ipv6_networks_id =
+      GetFieldID(jni, j_rtc_config_class, "maxIPv6Networks", "I");
+
   jfieldID j_ice_regather_interval_range_id =
       GetFieldID(jni, j_rtc_config_class, "iceRegatherIntervalRange",
                  "Lorg/webrtc/PeerConnection$IntervalRange;");
@@ -1585,6 +1588,8 @@
   }
   rtc_config->disable_ipv6_on_wifi =
       GetBooleanField(jni, j_rtc_config, j_disable_ipv6_on_wifi_id);
+  rtc_config->max_ipv6_networks =
+      GetIntField(jni, j_rtc_config, j_max_ipv6_networks_id);
   jobject j_ice_regather_interval_range = GetNullableObjectField(
       jni, j_rtc_config, j_ice_regather_interval_range_id);
   if (!IsNull(jni, j_ice_regather_interval_range)) {