Chromium Code Reviews| Index: webrtc/sdk/objc/Framework/Classes/RTCConfiguration.mm | 
| diff --git a/webrtc/sdk/objc/Framework/Classes/RTCConfiguration.mm b/webrtc/sdk/objc/Framework/Classes/RTCConfiguration.mm | 
| index 0bb85a29b6d937fb8d5f2fc8be77cb401bed079d..5beae99ed990a9ada498b6d069612842034902d3 100644 | 
| --- a/webrtc/sdk/objc/Framework/Classes/RTCConfiguration.mm | 
| +++ b/webrtc/sdk/objc/Framework/Classes/RTCConfiguration.mm | 
| @@ -15,6 +15,7 @@ | 
| #import "RTCIceServer+Private.h" | 
| #import "WebRTC/RTCLogging.h" | 
| +#include "webrtc/base/rtccertificategenerator.h" | 
| #include "webrtc/base/sslidentity.h" | 
| @implementation RTCConfiguration | 
| @@ -74,39 +75,43 @@ | 
| #pragma mark - Private | 
| -- (webrtc::PeerConnectionInterface::RTCConfiguration)nativeConfiguration { | 
| - webrtc::PeerConnectionInterface::RTCConfiguration nativeConfig; | 
| +- (webrtc::PeerConnectionInterface::RTCConfiguration*)nativeConfiguration { | 
| 
 
tkchin_webrtc
2016/05/13 17:48:05
RTCConfiguration *)
 
hbos
2016/05/16 12:49:05
Done.
 
 | 
| + std::unique_ptr<webrtc::PeerConnectionInterface::RTCConfiguration> | 
| 
 
tkchin_webrtc
2016/05/13 17:48:05
Are we returning a pointer to avoid memory copy? O
 
tkchin_webrtc
2016/05/13 18:07:38
and by factory I meant peerconnection's private in
 
hbos
2016/05/16 12:49:05
To say that we failed to generate the configuratio
 
 | 
| + nativeConfig(new webrtc::PeerConnectionInterface::RTCConfiguration()); | 
| for (RTCIceServer *iceServer in _iceServers) { | 
| - nativeConfig.servers.push_back(iceServer.nativeServer); | 
| + nativeConfig->servers.push_back(iceServer.nativeServer); | 
| } | 
| - nativeConfig.type = | 
| + nativeConfig->type = | 
| [[self class] nativeTransportsTypeForTransportPolicy:_iceTransportPolicy]; | 
| - nativeConfig.bundle_policy = | 
| + nativeConfig->bundle_policy = | 
| [[self class] nativeBundlePolicyForPolicy:_bundlePolicy]; | 
| - nativeConfig.rtcp_mux_policy = | 
| + nativeConfig->rtcp_mux_policy = | 
| [[self class] nativeRtcpMuxPolicyForPolicy:_rtcpMuxPolicy]; | 
| - nativeConfig.tcp_candidate_policy = | 
| + nativeConfig->tcp_candidate_policy = | 
| [[self class] nativeTcpCandidatePolicyForPolicy:_tcpCandidatePolicy]; | 
| - nativeConfig.continual_gathering_policy = [[self class] | 
| + nativeConfig->continual_gathering_policy = [[self class] | 
| nativeContinualGatheringPolicyForPolicy:_continualGatheringPolicy]; | 
| - nativeConfig.audio_jitter_buffer_max_packets = _audioJitterBufferMaxPackets; | 
| - nativeConfig.ice_connection_receiving_timeout = | 
| + nativeConfig->audio_jitter_buffer_max_packets = _audioJitterBufferMaxPackets; | 
| + nativeConfig->ice_connection_receiving_timeout = | 
| _iceConnectionReceivingTimeout; | 
| - nativeConfig.ice_backup_candidate_pair_ping_interval = | 
| + nativeConfig->ice_backup_candidate_pair_ping_interval = | 
| _iceBackupCandidatePairPingInterval; | 
| - if (_keyType == RTCEncryptionKeyTypeECDSA) { | 
| - std::unique_ptr<rtc::SSLIdentity> identity( | 
| - rtc::SSLIdentity::Generate(webrtc::kIdentityName, rtc::KT_ECDSA)); | 
| - if (identity) { | 
| - nativeConfig.certificates.push_back( | 
| - rtc::RTCCertificate::Create(std::move(identity))); | 
| - } else { | 
| - RTCLogWarning(@"Failed to generate ECDSA identity. RSA will be used."); | 
| + rtc::KeyType keyType = | 
| + [[self class] nativeEncryptionKeyTypeForKeyType:_keyType]; | 
| + // Generate non-default certificate. | 
| + if (keyType != rtc::KT_DEFAULT) { | 
| + rtc::scoped_refptr<rtc::RTCCertificate> certificate = | 
| + rtc::RTCCertificateGenerator::GenerateCertificate( | 
| + rtc::KeyParams(keyType), rtc::Optional<uint64_t>()); | 
| + if (!certificate) { | 
| + RTCLogWarning(@"Failed to generate certificate."); | 
| 
 
tkchin_webrtc
2016/05/13 17:48:05
this is an error because you will fail to create t
 
tkchin_webrtc
2016/05/13 18:07:38
I meant peerconnection via [factory peerconnection
 
hbos
2016/05/16 12:49:05
RTCLogError - Done.
 
 | 
| + return nullptr; | 
| } | 
| + nativeConfig->certificates.push_back(certificate); | 
| } | 
| - return nativeConfig; | 
| + return nativeConfig.release(); | 
| } | 
| + (webrtc::PeerConnectionInterface::IceTransportsType) | 
| @@ -224,6 +229,16 @@ | 
| } | 
| } | 
| ++ (rtc::KeyType)nativeEncryptionKeyTypeForKeyType: | 
| + (RTCEncryptionKeyType)keyType { | 
| + switch (keyType) { | 
| + case RTCEncryptionKeyTypeRSA: | 
| + return rtc::KT_RSA; | 
| + case RTCEncryptionKeyTypeECDSA: | 
| + return rtc::KT_ECDSA; | 
| + } | 
| +} | 
| + | 
| + (RTCTcpCandidatePolicy)tcpCandidatePolicyForNativePolicy: | 
| (webrtc::PeerConnectionInterface::TcpCandidatePolicy)nativePolicy { | 
| switch (nativePolicy) { |