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}
This commit is contained in:
@ -392,6 +392,8 @@ if (is_ios || is_mac) {
|
||||
"objc/Framework/Classes/PeerConnection/RTCIceCandidate.mm",
|
||||
"objc/Framework/Classes/PeerConnection/RTCIceServer+Private.h",
|
||||
"objc/Framework/Classes/PeerConnection/RTCIceServer.mm",
|
||||
"objc/Framework/Classes/PeerConnection/RTCIntervalRange+Private.h",
|
||||
"objc/Framework/Classes/PeerConnection/RTCIntervalRange.mm",
|
||||
"objc/Framework/Classes/PeerConnection/RTCLegacyStatsReport+Private.h",
|
||||
"objc/Framework/Classes/PeerConnection/RTCLegacyStatsReport.mm",
|
||||
"objc/Framework/Classes/PeerConnection/RTCMediaConstraints+Private.h",
|
||||
@ -443,6 +445,7 @@ if (is_ios || is_mac) {
|
||||
"objc/Framework/Headers/WebRTC/RTCDataChannelConfiguration.h",
|
||||
"objc/Framework/Headers/WebRTC/RTCIceCandidate.h",
|
||||
"objc/Framework/Headers/WebRTC/RTCIceServer.h",
|
||||
"objc/Framework/Headers/WebRTC/RTCIntervalRange.h",
|
||||
"objc/Framework/Headers/WebRTC/RTCLegacyStatsReport.h",
|
||||
"objc/Framework/Headers/WebRTC/RTCMediaConstraints.h",
|
||||
"objc/Framework/Headers/WebRTC/RTCMediaSource.h",
|
||||
@ -507,6 +510,7 @@ if (is_ios || is_mac) {
|
||||
"objc/Framework/UnitTests/RTCDataChannelConfigurationTest.mm",
|
||||
"objc/Framework/UnitTests/RTCIceCandidateTest.mm",
|
||||
"objc/Framework/UnitTests/RTCIceServerTest.mm",
|
||||
"objc/Framework/UnitTests/RTCIntervalRangeTests.mm",
|
||||
"objc/Framework/UnitTests/RTCMediaConstraintsTest.mm",
|
||||
"objc/Framework/UnitTests/RTCPeerConnectionTest.mm",
|
||||
"objc/Framework/UnitTests/RTCSessionDescriptionTest.mm",
|
||||
@ -585,6 +589,7 @@ if (is_ios || is_mac) {
|
||||
"objc/Framework/Headers/WebRTC/RTCFieldTrials.h",
|
||||
"objc/Framework/Headers/WebRTC/RTCIceCandidate.h",
|
||||
"objc/Framework/Headers/WebRTC/RTCIceServer.h",
|
||||
"objc/Framework/Headers/WebRTC/RTCIntervalRange.h",
|
||||
"objc/Framework/Headers/WebRTC/RTCLegacyStatsReport.h",
|
||||
"objc/Framework/Headers/WebRTC/RTCLogging.h",
|
||||
"objc/Framework/Headers/WebRTC/RTCMacros.h",
|
||||
|
||||
@ -13,6 +13,7 @@
|
||||
#include <memory>
|
||||
|
||||
#import "RTCIceServer+Private.h"
|
||||
#import "RTCIntervalRange+Private.h"
|
||||
#import "WebRTC/RTCLogging.h"
|
||||
|
||||
#include "webrtc/rtc_base/rtccertificategenerator.h"
|
||||
@ -38,6 +39,7 @@
|
||||
@synthesize shouldPresumeWritableWhenFullyRelayed =
|
||||
_shouldPresumeWritableWhenFullyRelayed;
|
||||
@synthesize iceCheckMinInterval = _iceCheckMinInterval;
|
||||
@synthesize iceRegatherIntervalRange = _iceRegatherIntervalRange;
|
||||
|
||||
- (instancetype)init {
|
||||
// Copy defaults.
|
||||
@ -83,13 +85,18 @@
|
||||
_iceCheckMinInterval =
|
||||
[NSNumber numberWithInt:*config.ice_check_min_interval];
|
||||
}
|
||||
if (config.ice_regather_interval_range) {
|
||||
const rtc::IntervalRange &nativeIntervalRange = config.ice_regather_interval_range.value();
|
||||
_iceRegatherIntervalRange =
|
||||
[[RTCIntervalRange alloc] initWithNativeIntervalRange:nativeIntervalRange];
|
||||
}
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (NSString *)description {
|
||||
return [NSString stringWithFormat:
|
||||
@"RTCConfiguration: {\n%@\n%@\n%@\n%@\n%@\n%@\n%@\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%@\n}\n",
|
||||
@"RTCConfiguration: {\n%@\n%@\n%@\n%@\n%@\n%@\n%@\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%@\n%@\n}\n",
|
||||
_iceServers,
|
||||
[[self class] stringForTransportPolicy:_iceTransportPolicy],
|
||||
[[self class] stringForBundlePolicy:_bundlePolicy],
|
||||
@ -105,7 +112,8 @@
|
||||
_iceCandidatePoolSize,
|
||||
_shouldPruneTurnPorts,
|
||||
_shouldPresumeWritableWhenFullyRelayed,
|
||||
_iceCheckMinInterval];
|
||||
_iceCheckMinInterval,
|
||||
_iceRegatherIntervalRange];
|
||||
}
|
||||
|
||||
#pragma mark - Private
|
||||
@ -159,6 +167,12 @@
|
||||
nativeConfig->ice_check_min_interval =
|
||||
rtc::Optional<int>(_iceCheckMinInterval.intValue);
|
||||
}
|
||||
if (_iceRegatherIntervalRange != nil) {
|
||||
std::unique_ptr<rtc::IntervalRange> nativeIntervalRange(
|
||||
_iceRegatherIntervalRange.nativeIntervalRange);
|
||||
nativeConfig->ice_regather_interval_range =
|
||||
rtc::Optional<rtc::IntervalRange>(*nativeIntervalRange);
|
||||
}
|
||||
|
||||
return nativeConfig.release();
|
||||
}
|
||||
|
||||
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* 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 "WebRTC/RTCIntervalRange.h"
|
||||
|
||||
#include "webrtc/rtc_base/timeutils.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface RTCIntervalRange ()
|
||||
|
||||
@property(nonatomic, readonly)
|
||||
std::unique_ptr<rtc::IntervalRange> nativeIntervalRange;
|
||||
|
||||
- (instancetype)initWithNativeIntervalRange:(const rtc::IntervalRange &)config;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@ -0,0 +1,50 @@
|
||||
/*
|
||||
* 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 "RTCIntervalRange+Private.h"
|
||||
|
||||
#include "webrtc/rtc_base/checks.h"
|
||||
|
||||
@implementation RTCIntervalRange
|
||||
|
||||
@synthesize min = _min;
|
||||
@synthesize max = _max;
|
||||
|
||||
- (instancetype)init {
|
||||
return [self initWithMin:0 max:0];
|
||||
}
|
||||
|
||||
- (instancetype)initWithMin:(NSInteger)min
|
||||
max:(NSInteger)max {
|
||||
RTC_DCHECK_LE(min, max);
|
||||
if (self = [super init]) {
|
||||
_min = min;
|
||||
_max = max;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (instancetype)initWithNativeIntervalRange:(const rtc::IntervalRange &)config {
|
||||
return [self initWithMin:config.min() max:config.max()];
|
||||
}
|
||||
|
||||
- (NSString *)description {
|
||||
return [NSString stringWithFormat:@"[%ld, %ld]", (long)_min, (long)_max];
|
||||
}
|
||||
|
||||
#pragma mark - Private
|
||||
|
||||
- (std::unique_ptr<rtc::IntervalRange>)nativeIntervalRange {
|
||||
std::unique_ptr<rtc::IntervalRange> nativeIntervalRange(
|
||||
new rtc::IntervalRange((int)_min, (int)_max));
|
||||
return nativeIntervalRange;
|
||||
}
|
||||
|
||||
@end
|
||||
@ -13,6 +13,7 @@
|
||||
#import <WebRTC/RTCMacros.h>
|
||||
|
||||
@class RTCIceServer;
|
||||
@class RTCIntervalRange;
|
||||
|
||||
/**
|
||||
* Represents the ice transport policy. This exposes the same states in C++,
|
||||
@ -109,6 +110,13 @@ RTC_EXPORT
|
||||
*/
|
||||
@property(nonatomic, copy, nullable) NSNumber *iceCheckMinInterval;
|
||||
|
||||
/** ICE Periodic Regathering
|
||||
* If set, WebRTC will periodically create and propose candidates without
|
||||
* starting a new ICE generation. The regathering happens continuously with
|
||||
* interval specified in milliseconds by the uniform distribution [a, b].
|
||||
*/
|
||||
@property(nonatomic, strong, nullable) RTCIntervalRange *iceRegatherIntervalRange;
|
||||
|
||||
- (instancetype)init;
|
||||
|
||||
@end
|
||||
|
||||
28
webrtc/sdk/objc/Framework/Headers/WebRTC/RTCIntervalRange.h
Normal file
28
webrtc/sdk/objc/Framework/Headers/WebRTC/RTCIntervalRange.h
Normal file
@ -0,0 +1,28 @@
|
||||
/*
|
||||
* 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>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface RTCIntervalRange : NSObject
|
||||
|
||||
@property(nonatomic, readonly) NSInteger min;
|
||||
@property(nonatomic, readonly) NSInteger max;
|
||||
|
||||
- (instancetype)init;
|
||||
- (instancetype)initWithMin:(NSInteger)min
|
||||
max:(NSInteger)max
|
||||
NS_DESIGNATED_INITIALIZER;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@ -27,6 +27,7 @@
|
||||
#import <WebRTC/RTCFileLogger.h>
|
||||
#import <WebRTC/RTCIceCandidate.h>
|
||||
#import <WebRTC/RTCIceServer.h>
|
||||
#import <WebRTC/RTCIntervalRange.h>
|
||||
#import <WebRTC/RTCLegacyStatsReport.h>
|
||||
#import <WebRTC/RTCLogging.h>
|
||||
#import <WebRTC/RTCMacros.h>
|
||||
|
||||
@ -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
|
||||
|
||||
54
webrtc/sdk/objc/Framework/UnitTests/RTCIntervalRangeTests.mm
Normal file
54
webrtc/sdk/objc/Framework/UnitTests/RTCIntervalRangeTests.mm
Normal file
@ -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];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user