[remoting host] Enable client to request ICE restart.

If SDP re-negotiation is needed (for example, to configure a different
video/audo codec), ICE needs to be restarted. But the client cannot do
this directly, because the host is the end that sends the initial SDP
offer.

This CL adds a control message that the client can use to request ICE
restart from the host. This is only implemented for WebRTC connections.

Bug: 706220
Change-Id: I44a1d7811375e4ffbc714a4cc0a8f58a75524a3e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2309218
Reviewed-by: Joe Downing <[email protected]>
Reviewed-by: Yuwei Huang <[email protected]>
Commit-Queue: Lambros Lambrou <[email protected]>
Cr-Commit-Position: refs/heads/master@{#790901}
diff --git a/remoting/proto/control.proto b/remoting/proto/control.proto
index 9d5efad..326226f8 100644
--- a/remoting/proto/control.proto
+++ b/remoting/proto/control.proto
@@ -175,11 +175,17 @@
   optional string protocol = 1;
 }
 
-// Next ID: 3
+// Next ID: 4
 message PeerConnectionParameters {
   // Sets preferred minimum and maximum bitrates. Unset fields means no
   // preference on the bitrate. Clients might need to keep track of existing
   // parameters if they need to do incremental changes.
   optional int32 preferred_min_bitrate_bps = 1;
   optional int32 preferred_max_bitrate_bps = 2;
+
+  // Requests an ICE restart. This causes the host to initiate a new SDP
+  // offer/answer exchange, and restarts the ICE gathering/connection sequence.
+  // This can be used to re-establish a connection, or change SDP parameters,
+  // without needing to re-authenticate the user.
+  optional bool request_ice_restart = 3;
 }