Enable setting surface_ice_candidates_on_ice_transport_type_changed on the fly.

This CL enables to change surface_ice_candidates_on_ice_transport_type_changed
in RTCConfiguration via PeerConnection::SetConfiguration.

Bug: None
Change-Id: Ib7bc8a08bfc9bf59cf07fe217c6f57d0d63615f3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/143561
Commit-Queue: Qingsi Wang <qingsi@webrtc.org>
Reviewed-by: Amit Hilbuch <amithi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28394}
diff --git a/pc/peer_connection.cc b/pc/peer_connection.cc
index 63d405b..c46dc80 100644
--- a/pc/peer_connection.cc
+++ b/pc/peer_connection.cc
@@ -3476,6 +3476,8 @@
   modified_config.ice_candidate_pool_size =
       configuration.ice_candidate_pool_size;
   modified_config.prune_turn_ports = configuration.prune_turn_ports;
+  modified_config.surface_ice_candidates_on_ice_transport_type_changed =
+      configuration.surface_ice_candidates_on_ice_transport_type_changed;
   modified_config.ice_check_min_interval = configuration.ice_check_min_interval;
   modified_config.ice_check_interval_strong_connectivity =
       configuration.ice_check_interval_strong_connectivity;
diff --git a/pc/peer_connection_interface_unittest.cc b/pc/peer_connection_interface_unittest.cc
index 1ea4b7f..993b863 100644
--- a/pc/peer_connection_interface_unittest.cc
+++ b/pc/peer_connection_interface_unittest.cc
@@ -2465,9 +2465,22 @@
   config = pc_->GetConfiguration();
   config.ice_check_min_interval = 100;
   EXPECT_TRUE(pc_->SetConfiguration(config));
-  PeerConnectionInterface::RTCConfiguration new_config =
-      pc_->GetConfiguration();
-  EXPECT_EQ(new_config.ice_check_min_interval, 100);
+  config = pc_->GetConfiguration();
+  EXPECT_EQ(config.ice_check_min_interval, 100);
+}
+
+TEST_P(PeerConnectionInterfaceTest,
+       SetConfigurationChangesSurfaceIceCandidatesOnIceTransportTypeChanged) {
+  PeerConnectionInterface::RTCConfiguration config;
+  config.surface_ice_candidates_on_ice_transport_type_changed = false;
+  CreatePeerConnection(config);
+  config = pc_->GetConfiguration();
+  EXPECT_FALSE(config.surface_ice_candidates_on_ice_transport_type_changed);
+
+  config.surface_ice_candidates_on_ice_transport_type_changed = true;
+  EXPECT_TRUE(pc_->SetConfiguration(config));
+  config = pc_->GetConfiguration();
+  EXPECT_TRUE(config.surface_ice_candidates_on_ice_transport_type_changed);
 }
 
 // Test that when SetConfiguration changes both the pool size and other