Allow changing the minimal ICE ping timeout with PeerConnection.SetConfiguration.

The original CL (https://codereview.webrtc.org/2670053002) only allows it to be set at PeerConnection creation time.

BUG=webrtc:7082

Review-Url: https://codereview.webrtc.org/2677503004
Cr-Commit-Position: refs/heads/master@{#16436}
diff --git a/webrtc/pc/peerconnection.cc b/webrtc/pc/peerconnection.cc
index 14d2e94..ba21429 100644
--- a/webrtc/pc/peerconnection.cc
+++ b/webrtc/pc/peerconnection.cc
@@ -1419,6 +1419,7 @@
   modified_config.ice_candidate_pool_size =
       configuration.ice_candidate_pool_size;
   modified_config.prune_turn_ports = configuration.prune_turn_ports;
+  modified_config.ice_check_min_interval = configuration.ice_check_min_interval;
   if (configuration != modified_config) {
     LOG(LS_ERROR) << "Modifying the configuration in an unsupported way.";
     return SafeSetError(RTCErrorType::INVALID_MODIFICATION, error);
@@ -1459,6 +1460,12 @@
       modified_config.prune_turn_ports != configuration_.prune_turn_ports) {
     session_->SetNeedsIceRestartFlag();
   }
+
+  if (modified_config.ice_check_min_interval !=
+      configuration_.ice_check_min_interval) {
+    session_->SetIceConfig(session_->ParseIceConfig(modified_config));
+  }
+
   configuration_ = modified_config;
   return SafeSetError(RTCErrorType::NONE, error);
 }
diff --git a/webrtc/pc/peerconnectioninterface_unittest.cc b/webrtc/pc/peerconnectioninterface_unittest.cc
index c2e6e18..90f4854 100644
--- a/webrtc/pc/peerconnectioninterface_unittest.cc
+++ b/webrtc/pc/peerconnectioninterface_unittest.cc
@@ -2221,6 +2221,20 @@
   EXPECT_TRUE(port_allocator_->prune_turn_ports());
 }
 
+// Test that the ice check interval can be changed. This does not verify that
+// the setting makes it all the way to P2PTransportChannel, as that would
+// require a very complex set of mocks.
+TEST_F(PeerConnectionInterfaceTest, SetConfigurationChangesIceCheckInterval) {
+  PeerConnectionInterface::RTCConfiguration config;
+  config.ice_check_min_interval = rtc::Optional<int>();
+  CreatePeerConnection(config, nullptr);
+  config.ice_check_min_interval = rtc::Optional<int>(100);
+  EXPECT_TRUE(pc_->SetConfiguration(config));
+  PeerConnectionInterface::RTCConfiguration new_config =
+      pc_->GetConfiguration();
+  EXPECT_EQ(new_config.ice_check_min_interval, rtc::Optional<int>(100));
+}
+
 // Test that when SetConfiguration changes both the pool size and other
 // attributes, the pooled session is created with the updated attributes.
 TEST_F(PeerConnectionInterfaceTest,