Implement new PeerConnection certificate policy API in ObjC API

BUG=webrtc:7088

Review-Url: https://codereview.webrtc.org/2664233002
Cr-Commit-Position: refs/heads/master@{#16424}
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCIceServer.mm b/webrtc/sdk/objc/Framework/Classes/RTCIceServer.mm
index 41084b9..933739f 100644
--- a/webrtc/sdk/objc/Framework/Classes/RTCIceServer.mm
+++ b/webrtc/sdk/objc/Framework/Classes/RTCIceServer.mm
@@ -17,9 +17,9 @@
 @synthesize urlStrings = _urlStrings;
 @synthesize username = _username;
 @synthesize credential = _credential;
+@synthesize tlsCertPolicy = _tlsCertPolicy;
 
 - (instancetype)initWithURLStrings:(NSArray<NSString *> *)urlStrings {
-  NSParameterAssert(urlStrings.count);
   return [self initWithURLStrings:urlStrings
                          username:nil
                        credential:nil];
@@ -28,24 +28,44 @@
 - (instancetype)initWithURLStrings:(NSArray<NSString *> *)urlStrings
                           username:(NSString *)username
                         credential:(NSString *)credential {
+  return [self initWithURLStrings:urlStrings
+                         username:username
+                       credential:credential
+                    tlsCertPolicy:RTCTlsCertPolicySecure];
+}
+
+- (instancetype)initWithURLStrings:(NSArray<NSString *> *)urlStrings
+                          username:(NSString *)username
+                        credential:(NSString *)credential
+                     tlsCertPolicy:(RTCTlsCertPolicy)tlsCertPolicy {
   NSParameterAssert(urlStrings.count);
   if (self = [super init]) {
     _urlStrings = [[NSArray alloc] initWithArray:urlStrings copyItems:YES];
     _username = [username copy];
     _credential = [credential copy];
+    _tlsCertPolicy = tlsCertPolicy;
   }
   return self;
 }
 
 - (NSString *)description {
-  return [NSString stringWithFormat:@"RTCIceServer:\n%@\n%@\n%@",
-                                    _urlStrings,
-                                    _username,
-                                    _credential];
+  return
+      [NSString stringWithFormat:@"RTCIceServer:\n%@\n%@\n%@\n%@", _urlStrings,
+                                 _username, _credential,
+                                 [self stringForTlsCertPolicy:_tlsCertPolicy]];
 }
 
 #pragma mark - Private
 
+- (NSString *)stringForTlsCertPolicy:(RTCTlsCertPolicy)tlsCertPolicy {
+  switch (tlsCertPolicy) {
+    case RTCTlsCertPolicySecure:
+      return @"RTCTlsCertPolicySecure";
+    case RTCTlsCertPolicyInsecureNoCheck:
+      return @"RTCTlsCertPolicyInsecureNoCheck";
+  }
+}
+
 - (webrtc::PeerConnectionInterface::IceServer)nativeServer {
   __block webrtc::PeerConnectionInterface::IceServer iceServer;
 
@@ -57,6 +77,17 @@
                                             BOOL *stop) {
     iceServer.urls.push_back(url.stdString);
   }];
+
+  switch (_tlsCertPolicy) {
+    case RTCTlsCertPolicySecure:
+      iceServer.tls_cert_policy =
+          webrtc::PeerConnectionInterface::kTlsCertPolicySecure;
+      break;
+    case RTCTlsCertPolicyInsecureNoCheck:
+      iceServer.tls_cert_policy =
+          webrtc::PeerConnectionInterface::kTlsCertPolicyInsecureNoCheck;
+      break;
+  }
   return iceServer;
 }
 
@@ -69,9 +100,21 @@
   }
   NSString *username = [NSString stringForStdString:nativeServer.username];
   NSString *credential = [NSString stringForStdString:nativeServer.password];
+  RTCTlsCertPolicy tlsCertPolicy;
+
+  switch (nativeServer.tls_cert_policy) {
+    case webrtc::PeerConnectionInterface::kTlsCertPolicySecure:
+      tlsCertPolicy = RTCTlsCertPolicySecure;
+      break;
+    case webrtc::PeerConnectionInterface::kTlsCertPolicyInsecureNoCheck:
+      tlsCertPolicy = RTCTlsCertPolicyInsecureNoCheck;
+      break;
+  }
+
   self = [self initWithURLStrings:urls
                          username:username
-                       credential:credential];
+                       credential:credential
+                    tlsCertPolicy:tlsCertPolicy];
   return self;
 }