From da2183c86fcdf4cd525ea4cdc63bd3ba95703291 Mon Sep 17 00:00:00 2001 From: hjon Date: Wed, 27 Jan 2016 13:42:28 -0800 Subject: [PATCH] Update API for Objective-C RTCDataChannelConfiguration. BUG= Review URL: https://codereview.webrtc.org/1616363005 Cr-Commit-Position: refs/heads/master@{#11405} --- webrtc/api/BUILD.gn | 3 + webrtc/api/api.gyp | 3 + webrtc/api/api_tests.gyp | 1 + .../RTCDataChannelConfiguration+Private.h | 23 +++++++ webrtc/api/objc/RTCDataChannelConfiguration.h | 42 ++++++++++++ .../api/objc/RTCDataChannelConfiguration.mm | 68 +++++++++++++++++++ .../RTCDataChannelConfigurationTest.mm | 59 ++++++++++++++++ 7 files changed, 199 insertions(+) create mode 100644 webrtc/api/objc/RTCDataChannelConfiguration+Private.h create mode 100644 webrtc/api/objc/RTCDataChannelConfiguration.h create mode 100644 webrtc/api/objc/RTCDataChannelConfiguration.mm create mode 100644 webrtc/api/objctests/RTCDataChannelConfigurationTest.mm diff --git a/webrtc/api/BUILD.gn b/webrtc/api/BUILD.gn index 99dfa54bc3..3f47ac8115 100644 --- a/webrtc/api/BUILD.gn +++ b/webrtc/api/BUILD.gn @@ -41,6 +41,9 @@ if (is_ios) { #"objc/RTCDataChannel+Private.h", #"objc/RTCDataChannel.h", #"objc/RTCDataChannel.mm", + #"objc/RTCDataChannelConfiguration+Private.h", + #"objc/RTCDataChannelConfiguration.h", + #"objc/RTCDataChannelConfiguration.mm", #"objc/RTCIceCandidate+Private.h", #"objc/RTCIceCandidate.h", #"objc/RTCIceCandidate.mm", diff --git a/webrtc/api/api.gyp b/webrtc/api/api.gyp index 3e2bf41263..ec51b47728 100644 --- a/webrtc/api/api.gyp +++ b/webrtc/api/api.gyp @@ -31,6 +31,9 @@ 'objc/RTCDataChannel+Private.h', 'objc/RTCDataChannel.h', 'objc/RTCDataChannel.mm', + 'objc/RTCDataChannelConfiguration+Private.h', + 'objc/RTCDataChannelConfiguration.h', + 'objc/RTCDataChannelConfiguration.mm', 'objc/RTCIceCandidate+Private.h', 'objc/RTCIceCandidate.h', 'objc/RTCIceCandidate.mm', diff --git a/webrtc/api/api_tests.gyp b/webrtc/api/api_tests.gyp index f073cea454..2c0d68489a 100644 --- a/webrtc/api/api_tests.gyp +++ b/webrtc/api/api_tests.gyp @@ -20,6 +20,7 @@ ], 'sources': [ 'objctests/RTCConfigurationTest.mm', + 'objctests/RTCDataChannelConfigurationTest.mm', 'objctests/RTCIceCandidateTest.mm', 'objctests/RTCIceServerTest.mm', 'objctests/RTCMediaConstraintsTest.mm', diff --git a/webrtc/api/objc/RTCDataChannelConfiguration+Private.h b/webrtc/api/objc/RTCDataChannelConfiguration+Private.h new file mode 100644 index 0000000000..e99ba7c973 --- /dev/null +++ b/webrtc/api/objc/RTCDataChannelConfiguration+Private.h @@ -0,0 +1,23 @@ +/* + * Copyright 2015 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 "RTCDataChannelConfiguration.h" + +#include "talk/app/webrtc/datachannelinterface.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RTCDataChannelConfiguration () + +@property(nonatomic, readonly) webrtc::DataChannelInit nativeDataChannelInit; + +@end + +NS_ASSUME_NONNULL_END diff --git a/webrtc/api/objc/RTCDataChannelConfiguration.h b/webrtc/api/objc/RTCDataChannelConfiguration.h new file mode 100644 index 0000000000..c343eb54c0 --- /dev/null +++ b/webrtc/api/objc/RTCDataChannelConfiguration.h @@ -0,0 +1,42 @@ +/* + * Copyright 2015 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface RTCDataChannelConfiguration : NSObject + +/** Set to YES if ordered delivery is required. */ +@property(nonatomic) BOOL isOrdered; + +/** + * Max period in milliseconds in which retransmissions will be sent. After this + * time, no more retransmissions will be sent. -1 if unset. + */ +@property(nonatomic) int maxPacketLifeTime; + +/** The max number of retransmissions. -1 if unset. */ +@property(nonatomic) int maxRetransmits; + +/** Set to YES if the channel has been externally negotiated and we do not send + * an in-band signalling in the form of an "open" message. + */ +@property(nonatomic) BOOL isNegotiated; + +/** The stream id, or SID, for SCTP data channels. -1 if unset. */ +@property(nonatomic) int streamId; + +/** Set by the application and opaque to the WebRTC implementation. */ +@property(nonatomic) NSString *protocol; + +@end + +NS_ASSUME_NONNULL_END diff --git a/webrtc/api/objc/RTCDataChannelConfiguration.mm b/webrtc/api/objc/RTCDataChannelConfiguration.mm new file mode 100644 index 0000000000..77de4eeb67 --- /dev/null +++ b/webrtc/api/objc/RTCDataChannelConfiguration.mm @@ -0,0 +1,68 @@ +/* + * Copyright 2015 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 "RTCDataChannelConfiguration.h" + +#import "webrtc/api/objc/RTCDataChannelConfiguration+Private.h" +#import "webrtc/base/objc/NSString+StdString.h" + +@implementation RTCDataChannelConfiguration + +@synthesize nativeDataChannelInit = _nativeDataChannelInit; + +- (BOOL)isOrdered { + return _nativeDataChannelInit.ordered; +} + +- (void)setIsOrdered:(BOOL)isOrdered { + _nativeDataChannelInit.ordered = isOrdered; +} + +- (int)maxPacketLifeTime { + return _nativeDataChannelInit.maxRetransmitTime; +} + +- (void)setMaxPacketLifeTime:(int)maxPacketLifeTime { + _nativeDataChannelInit.maxRetransmitTime = maxPacketLifeTime; +} + +- (int)maxRetransmits { + return _nativeDataChannelInit.maxRetransmits; +} + +- (void)setMaxRetransmits:(int)maxRetransmits { + _nativeDataChannelInit.maxRetransmits = maxRetransmits; +} + +- (NSString *)protocol { + return [NSString stringForStdString:_nativeDataChannelInit.protocol]; +} + +- (void)setProtocol:(NSString *)protocol { + _nativeDataChannelInit.protocol = [NSString stdStringForString:protocol]; +} + +- (BOOL)isNegotiated { + return _nativeDataChannelInit.negotiated; +} + +- (void)setIsNegotiated:(BOOL)isNegotiated { + _nativeDataChannelInit.negotiated = isNegotiated; +} + +- (int)streamId { + return _nativeDataChannelInit.id; +} + +- (void)setStreamId:(int)streamId { + _nativeDataChannelInit.id = streamId; +} + +@end \ No newline at end of file diff --git a/webrtc/api/objctests/RTCDataChannelConfigurationTest.mm b/webrtc/api/objctests/RTCDataChannelConfigurationTest.mm new file mode 100644 index 0000000000..2642717f42 --- /dev/null +++ b/webrtc/api/objctests/RTCDataChannelConfigurationTest.mm @@ -0,0 +1,59 @@ +/* + * Copyright 2015 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 + +#include "webrtc/base/gunit.h" + +#import "webrtc/api/objc/RTCDataChannelConfiguration.h" +#import "webrtc/api/objc/RTCDataChannelConfiguration+Private.h" +#import "webrtc/base/objc/NSString+StdString.h" + +@interface RTCDataChannelConfigurationTest : NSObject +- (void)testConversionToNativeDataChannelInit; +@end + +@implementation RTCDataChannelConfigurationTest + +- (void)testConversionToNativeDataChannelInit { + BOOL isOrdered = NO; + int maxPacketLifeTime = 5; + int maxRetransmits = 4; + BOOL isNegotiated = YES; + int streamId = 4; + NSString *protocol = @"protocol"; + + RTCDataChannelConfiguration *dataChannelConfig = + [[RTCDataChannelConfiguration alloc] init]; + dataChannelConfig.isOrdered = isOrdered; + dataChannelConfig.maxPacketLifeTime = maxPacketLifeTime; + dataChannelConfig.maxRetransmits = maxRetransmits; + dataChannelConfig.isNegotiated = isNegotiated; + dataChannelConfig.streamId = streamId; + dataChannelConfig.protocol = protocol; + + webrtc::DataChannelInit nativeInit = dataChannelConfig.nativeDataChannelInit; + EXPECT_EQ(isOrdered, nativeInit.ordered); + EXPECT_EQ(maxPacketLifeTime, nativeInit.maxRetransmitTime); + EXPECT_EQ(maxRetransmits, nativeInit.maxRetransmits); + EXPECT_EQ(isNegotiated, nativeInit.negotiated); + EXPECT_EQ(streamId, nativeInit.id); + EXPECT_EQ(protocol.stdString, nativeInit.protocol); +} + +@end + +TEST(RTCDataChannelConfiguration, NativeDataChannelInitConversionTest) { + @autoreleasepool { + RTCDataChannelConfigurationTest *test = + [[RTCDataChannelConfigurationTest alloc] init]; + [test testConversionToNativeDataChannelInit]; + } +}