RTCDTMFSender* RTCPeerConnection::createDTMFSender(MediaStreamTrack* track, ExceptionState& exceptionState) { if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) return nullptr; if (!track) { exceptionState.throwTypeError(ExceptionMessages::argumentNullOrIncorrectType(1, "MediaStreamTrack")); return nullptr; } if (!hasLocalStreamWithTrackId(track->id())) { exceptionState.throwDOMException(SyntaxError, "No local stream is available for the track provided."); return nullptr; } RTCDTMFSender* dtmfSender = RTCDTMFSender::create(executionContext(), m_peerHandler.get(), track, exceptionState); if (exceptionState.hadException()) return nullptr; return dtmfSender; }
PassRefPtr<RTCDTMFSender> RTCPeerConnection::createDTMFSender(PassRefPtr<MediaStreamTrack> prpTrack, ExceptionCode& ec) { if (m_signalingState == SignalingStateClosed) { ec = INVALID_STATE_ERR; return nullptr; } if (!prpTrack) { ec = TypeError; return nullptr; } RefPtr<MediaStreamTrack> track = prpTrack; if (!hasLocalStreamWithTrackId(track->id())) { ec = SYNTAX_ERR; return nullptr; } RefPtr<RTCDTMFSender> dtmfSender = RTCDTMFSender::create(scriptExecutionContext(), m_peerHandler.get(), track.release(), ec); if (ec) return nullptr; return dtmfSender.release(); }