Reinstate "iOS - Add iceRegatherIntervalRange."

This reverts commit 93adc3209b5ff10adaba54d5eab6b53bc2780685.

Reverted originally because it depended on a CL which was reverted.
That CL has been reinstated in:

https: //chromium-review.googlesource.com/#/c/572070/
Bug: webrtc:7969
Change-Id: I608bbeaaba02e84908433c8260cf236df0307a97
Reviewed-on: https://chromium-review.googlesource.com/572405
Reviewed-by: Zeke Chin <tkchin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#19035}
diff --git a/webrtc/sdk/objc/Framework/UnitTests/RTCConfigurationTest.mm b/webrtc/sdk/objc/Framework/UnitTests/RTCConfigurationTest.mm
index df94d4f..4b44fb1 100644
--- a/webrtc/sdk/objc/Framework/UnitTests/RTCConfigurationTest.mm
+++ b/webrtc/sdk/objc/Framework/UnitTests/RTCConfigurationTest.mm
@@ -18,6 +18,7 @@
 #import "RTCConfiguration+Private.h"
 #import "WebRTC/RTCConfiguration.h"
 #import "WebRTC/RTCIceServer.h"
+#import "WebRTC/RTCIntervalRange.h"
 
 @interface RTCConfigurationTest : NSObject
 - (void)testConversionToNativeConfiguration;
@@ -29,6 +30,7 @@
 - (void)testConversionToNativeConfiguration {
   NSArray *urlStrings = @[ @"stun:stun1.example.net" ];
   RTCIceServer *server = [[RTCIceServer alloc] initWithURLStrings:urlStrings];
+  RTCIntervalRange *range = [[RTCIntervalRange alloc] initWithMin:0 max:100];
 
   RTCConfiguration *config = [[RTCConfiguration alloc] init];
   config.iceServers = @[ server ];
@@ -47,6 +49,7 @@
   config.continualGatheringPolicy =
       RTCContinualGatheringPolicyGatherContinually;
   config.shouldPruneTurnPorts = YES;
+  config.iceRegatherIntervalRange = range;
 
   std::unique_ptr<webrtc::PeerConnectionInterface::RTCConfiguration>
       nativeConfig([config createNativeConfiguration]);
@@ -73,11 +76,14 @@
   EXPECT_EQ(webrtc::PeerConnectionInterface::GATHER_CONTINUALLY,
             nativeConfig->continual_gathering_policy);
   EXPECT_EQ(true, nativeConfig->prune_turn_ports);
+  EXPECT_EQ(range.min, nativeConfig->ice_regather_interval_range->min());
+  EXPECT_EQ(range.max, nativeConfig->ice_regather_interval_range->max());
 }
 
 - (void)testNativeConversionToConfiguration {
   NSArray *urlStrings = @[ @"stun:stun1.example.net" ];
   RTCIceServer *server = [[RTCIceServer alloc] initWithURLStrings:urlStrings];
+  RTCIntervalRange *range = [[RTCIntervalRange alloc] initWithMin:0 max:100];
 
   RTCConfiguration *config = [[RTCConfiguration alloc] init];
   config.iceServers = @[ server ];
@@ -96,6 +102,7 @@
   config.continualGatheringPolicy =
       RTCContinualGatheringPolicyGatherContinually;
   config.shouldPruneTurnPorts = YES;
+  config.iceRegatherIntervalRange = range;
 
   webrtc::PeerConnectionInterface::RTCConfiguration *nativeConfig =
       [config createNativeConfiguration];
@@ -121,6 +128,8 @@
             newConfig.iceBackupCandidatePairPingInterval);
   EXPECT_EQ(config.continualGatheringPolicy, newConfig.continualGatheringPolicy);
   EXPECT_EQ(config.shouldPruneTurnPorts, newConfig.shouldPruneTurnPorts);
+  EXPECT_EQ(config.iceRegatherIntervalRange.min, newConfig.iceRegatherIntervalRange.min);
+  EXPECT_EQ(config.iceRegatherIntervalRange.max, newConfig.iceRegatherIntervalRange.max);
 }
 
 @end
diff --git a/webrtc/sdk/objc/Framework/UnitTests/RTCIntervalRangeTests.mm b/webrtc/sdk/objc/Framework/UnitTests/RTCIntervalRangeTests.mm
new file mode 100644
index 0000000..b995221
--- /dev/null
+++ b/webrtc/sdk/objc/Framework/UnitTests/RTCIntervalRangeTests.mm
@@ -0,0 +1,54 @@
+/*
+ *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#import <Foundation/Foundation.h>
+
+#include "webrtc/rtc_base/gunit.h"
+
+#import "RTCIntervalRange+Private.h"
+#import "WebRTC/RTCIntervalRange.h"
+
+@interface RTCIntervalRangeTest : NSObject
+- (void)testConversionToNativeConfiguration;
+- (void)testNativeConversionToConfiguration;
+@end
+
+@implementation RTCIntervalRangeTest
+
+- (void)testConversionToNativeConfiguration {
+  NSInteger min = 0;
+  NSInteger max = 100;
+  RTCIntervalRange *range = [[RTCIntervalRange alloc] initWithMin:min max:max];
+  EXPECT_EQ(min, range.min);
+  EXPECT_EQ(max, range.max);
+  std::unique_ptr<rtc::IntervalRange> nativeRange = range.nativeIntervalRange;
+  EXPECT_EQ(min, nativeRange->min());
+  EXPECT_EQ(max, nativeRange->max());
+}
+
+- (void)testNativeConversionToConfiguration {
+  NSInteger min = 0;
+  NSInteger max = 100;
+  rtc::IntervalRange nativeRange((int)min, (int)max);
+  RTCIntervalRange *range =
+      [[RTCIntervalRange alloc] initWithNativeIntervalRange:nativeRange];
+  EXPECT_EQ(min, range.min);
+  EXPECT_EQ(max, range.max);
+}
+
+@end
+
+TEST(RTCIntervalRangeTest, NativeConfigurationConversionTest) {
+  @autoreleasepool {
+    RTCIntervalRangeTest *test = [[RTCIntervalRangeTest alloc] init];
+    [test testConversionToNativeConfiguration];
+    [test testNativeConversionToConfiguration];
+  }
+}