Index: Source/modules/mediastream/RTCPeerConnection.cpp |
diff --git a/Source/modules/mediastream/RTCPeerConnection.cpp b/Source/modules/mediastream/RTCPeerConnection.cpp |
index 97ca069b5875d8268c68fe1e9e5c8c33cae32541..275252f18c19f89de4735fdc332bc4ed97757374 100644 |
--- a/Source/modules/mediastream/RTCPeerConnection.cpp |
+++ b/Source/modules/mediastream/RTCPeerConnection.cpp |
@@ -33,7 +33,6 @@ |
#include "modules/mediastream/RTCPeerConnection.h" |
#include "bindings/v8/ArrayValue.h" |
-#include "bindings/v8/ExceptionState.h" |
#include "core/dom/Document.h" |
#include "core/dom/Event.h" |
#include "core/dom/ExceptionCode.h" |
@@ -64,7 +63,7 @@ |
namespace WebCore { |
-PassRefPtr<RTCConfiguration> RTCPeerConnection::parseConfiguration(const Dictionary& configuration, ExceptionState& es) |
+PassRefPtr<RTCConfiguration> RTCPeerConnection::parseConfiguration(const Dictionary& configuration, ExceptionCode& ec) |
{ |
if (configuration.isUndefinedOrNull()) |
return 0; |
@@ -72,14 +71,14 @@ PassRefPtr<RTCConfiguration> RTCPeerConnection::parseConfiguration(const Diction |
ArrayValue iceServers; |
bool ok = configuration.get("iceServers", iceServers); |
if (!ok || iceServers.isUndefinedOrNull()) { |
- es.throwDOMException(TypeMismatchError); |
+ ec = TypeMismatchError; |
return 0; |
} |
size_t numberOfServers; |
ok = iceServers.length(numberOfServers); |
if (!ok) { |
- es.throwDOMException(TypeMismatchError); |
+ ec = TypeMismatchError; |
return 0; |
} |
@@ -89,19 +88,19 @@ PassRefPtr<RTCConfiguration> RTCPeerConnection::parseConfiguration(const Diction |
Dictionary iceServer; |
ok = iceServers.get(i, iceServer); |
if (!ok) { |
- es.throwDOMException(TypeMismatchError); |
+ ec = TypeMismatchError; |
return 0; |
} |
String urlString, username, credential; |
ok = iceServer.get("url", urlString); |
if (!ok) { |
- es.throwDOMException(TypeMismatchError); |
+ ec = TypeMismatchError; |
return 0; |
} |
KURL url(KURL(), urlString); |
if (!url.isValid() || !(url.protocolIs("turn") || url.protocolIs("stun"))) { |
- es.throwDOMException(TypeMismatchError); |
+ ec = TypeMismatchError; |
return 0; |
} |
@@ -114,25 +113,25 @@ PassRefPtr<RTCConfiguration> RTCPeerConnection::parseConfiguration(const Diction |
return rtcConfiguration.release(); |
} |
-PassRefPtr<RTCPeerConnection> RTCPeerConnection::create(ScriptExecutionContext* context, const Dictionary& rtcConfiguration, const Dictionary& mediaConstraints, ExceptionState& es) |
+PassRefPtr<RTCPeerConnection> RTCPeerConnection::create(ScriptExecutionContext* context, const Dictionary& rtcConfiguration, const Dictionary& mediaConstraints, ExceptionCode& ec) |
{ |
- RefPtr<RTCConfiguration> configuration = parseConfiguration(rtcConfiguration, es); |
- if (es.hadException()) |
+ RefPtr<RTCConfiguration> configuration = parseConfiguration(rtcConfiguration, ec); |
+ if (ec) |
return 0; |
- RefPtr<MediaConstraints> constraints = MediaConstraintsImpl::create(mediaConstraints, es); |
- if (es.hadException()) |
+ RefPtr<MediaConstraints> constraints = MediaConstraintsImpl::create(mediaConstraints, ec); |
+ if (ec) |
return 0; |
- RefPtr<RTCPeerConnection> peerConnection = adoptRef(new RTCPeerConnection(context, configuration.release(), constraints.release(), es)); |
+ RefPtr<RTCPeerConnection> peerConnection = adoptRef(new RTCPeerConnection(context, configuration.release(), constraints.release(), ec)); |
peerConnection->suspendIfNeeded(); |
- if (es.hadException()) |
+ if (ec) |
return 0; |
return peerConnection.release(); |
} |
-RTCPeerConnection::RTCPeerConnection(ScriptExecutionContext* context, PassRefPtr<RTCConfiguration> configuration, PassRefPtr<MediaConstraints> constraints, ExceptionState& es) |
+RTCPeerConnection::RTCPeerConnection(ScriptExecutionContext* context, PassRefPtr<RTCConfiguration> configuration, PassRefPtr<MediaConstraints> constraints, ExceptionCode& ec) |
: ActiveDOMObject(context) |
, m_signalingState(SignalingStateStable) |
, m_iceGatheringState(IceGatheringStateNew) |
@@ -144,20 +143,20 @@ RTCPeerConnection::RTCPeerConnection(ScriptExecutionContext* context, PassRefPtr |
Document* document = toDocument(m_scriptExecutionContext); |
if (!document->frame()) { |
- es.throwDOMException(NotSupportedError); |
+ ec = NotSupportedError; |
return; |
} |
m_peerHandler = RTCPeerConnectionHandler::create(this); |
if (!m_peerHandler) { |
- es.throwDOMException(NotSupportedError); |
+ ec = NotSupportedError; |
return; |
} |
document->frame()->loader()->client()->dispatchWillStartUsingPeerConnectionHandler(m_peerHandler.get()); |
if (!m_peerHandler->initialize(configuration, constraints)) { |
- es.throwDOMException(NotSupportedError); |
+ ec = NotSupportedError; |
return; |
} |
} |
@@ -167,56 +166,56 @@ RTCPeerConnection::~RTCPeerConnection() |
stop(); |
} |
-void RTCPeerConnection::createOffer(PassRefPtr<RTCSessionDescriptionCallback> successCallback, PassRefPtr<RTCErrorCallback> errorCallback, const Dictionary& mediaConstraints, ExceptionState& es) |
+void RTCPeerConnection::createOffer(PassRefPtr<RTCSessionDescriptionCallback> successCallback, PassRefPtr<RTCErrorCallback> errorCallback, const Dictionary& mediaConstraints, ExceptionCode& ec) |
{ |
if (m_signalingState == SignalingStateClosed) { |
- es.throwDOMException(InvalidStateError); |
+ ec = InvalidStateError; |
return; |
} |
if (!successCallback) { |
- es.throwDOMException(TypeMismatchError); |
+ ec = TypeMismatchError; |
return; |
} |
- RefPtr<MediaConstraints> constraints = MediaConstraintsImpl::create(mediaConstraints, es); |
- if (es.hadException()) |
+ RefPtr<MediaConstraints> constraints = MediaConstraintsImpl::create(mediaConstraints, ec); |
+ if (ec) |
return; |
RefPtr<RTCSessionDescriptionRequestImpl> request = RTCSessionDescriptionRequestImpl::create(scriptExecutionContext(), successCallback, errorCallback); |
m_peerHandler->createOffer(request.release(), constraints); |
} |
-void RTCPeerConnection::createAnswer(PassRefPtr<RTCSessionDescriptionCallback> successCallback, PassRefPtr<RTCErrorCallback> errorCallback, const Dictionary& mediaConstraints, ExceptionState& es) |
+void RTCPeerConnection::createAnswer(PassRefPtr<RTCSessionDescriptionCallback> successCallback, PassRefPtr<RTCErrorCallback> errorCallback, const Dictionary& mediaConstraints, ExceptionCode& ec) |
{ |
if (m_signalingState == SignalingStateClosed) { |
- es.throwDOMException(InvalidStateError); |
+ ec = InvalidStateError; |
return; |
} |
if (!successCallback) { |
- es.throwDOMException(TypeMismatchError); |
+ ec = TypeMismatchError; |
return; |
} |
- RefPtr<MediaConstraints> constraints = MediaConstraintsImpl::create(mediaConstraints, es); |
- if (es.hadException()) |
+ RefPtr<MediaConstraints> constraints = MediaConstraintsImpl::create(mediaConstraints, ec); |
+ if (ec) |
return; |
RefPtr<RTCSessionDescriptionRequestImpl> request = RTCSessionDescriptionRequestImpl::create(scriptExecutionContext(), successCallback, errorCallback); |
m_peerHandler->createAnswer(request.release(), constraints.release()); |
} |
-void RTCPeerConnection::setLocalDescription(PassRefPtr<RTCSessionDescription> prpSessionDescription, PassRefPtr<VoidCallback> successCallback, PassRefPtr<RTCErrorCallback> errorCallback, ExceptionState& es) |
+void RTCPeerConnection::setLocalDescription(PassRefPtr<RTCSessionDescription> prpSessionDescription, PassRefPtr<VoidCallback> successCallback, PassRefPtr<RTCErrorCallback> errorCallback, ExceptionCode& ec) |
{ |
if (m_signalingState == SignalingStateClosed) { |
- es.throwDOMException(InvalidStateError); |
+ ec = InvalidStateError; |
return; |
} |
RefPtr<RTCSessionDescription> sessionDescription = prpSessionDescription; |
if (!sessionDescription) { |
- es.throwDOMException(TypeMismatchError); |
+ ec = TypeMismatchError; |
return; |
} |
@@ -224,7 +223,7 @@ void RTCPeerConnection::setLocalDescription(PassRefPtr<RTCSessionDescription> pr |
m_peerHandler->setLocalDescription(request.release(), sessionDescription->webSessionDescription()); |
} |
-PassRefPtr<RTCSessionDescription> RTCPeerConnection::localDescription(ExceptionState& es) |
+PassRefPtr<RTCSessionDescription> RTCPeerConnection::localDescription(ExceptionCode& ec) |
{ |
WebKit::WebRTCSessionDescription webSessionDescription = m_peerHandler->localDescription(); |
if (webSessionDescription.isNull()) |
@@ -234,16 +233,16 @@ PassRefPtr<RTCSessionDescription> RTCPeerConnection::localDescription(ExceptionS |
return sessionDescription.release(); |
} |
-void RTCPeerConnection::setRemoteDescription(PassRefPtr<RTCSessionDescription> prpSessionDescription, PassRefPtr<VoidCallback> successCallback, PassRefPtr<RTCErrorCallback> errorCallback, ExceptionState& es) |
+void RTCPeerConnection::setRemoteDescription(PassRefPtr<RTCSessionDescription> prpSessionDescription, PassRefPtr<VoidCallback> successCallback, PassRefPtr<RTCErrorCallback> errorCallback, ExceptionCode& ec) |
{ |
if (m_signalingState == SignalingStateClosed) { |
- es.throwDOMException(InvalidStateError); |
+ ec = InvalidStateError; |
return; |
} |
RefPtr<RTCSessionDescription> sessionDescription = prpSessionDescription; |
if (!sessionDescription) { |
- es.throwDOMException(TypeMismatchError); |
+ ec = TypeMismatchError; |
return; |
} |
@@ -251,7 +250,7 @@ void RTCPeerConnection::setRemoteDescription(PassRefPtr<RTCSessionDescription> p |
m_peerHandler->setRemoteDescription(request.release(), sessionDescription->webSessionDescription()); |
} |
-PassRefPtr<RTCSessionDescription> RTCPeerConnection::remoteDescription(ExceptionState& es) |
+PassRefPtr<RTCSessionDescription> RTCPeerConnection::remoteDescription(ExceptionCode& ec) |
{ |
WebKit::WebRTCSessionDescription webSessionDescription = m_peerHandler->remoteDescription(); |
if (webSessionDescription.isNull()) |
@@ -261,41 +260,41 @@ PassRefPtr<RTCSessionDescription> RTCPeerConnection::remoteDescription(Exception |
return desc.release(); |
} |
-void RTCPeerConnection::updateIce(const Dictionary& rtcConfiguration, const Dictionary& mediaConstraints, ExceptionState& es) |
+void RTCPeerConnection::updateIce(const Dictionary& rtcConfiguration, const Dictionary& mediaConstraints, ExceptionCode& ec) |
{ |
if (m_signalingState == SignalingStateClosed) { |
- es.throwDOMException(InvalidStateError); |
+ ec = InvalidStateError; |
return; |
} |
- RefPtr<RTCConfiguration> configuration = parseConfiguration(rtcConfiguration, es); |
- if (es.hadException()) |
+ RefPtr<RTCConfiguration> configuration = parseConfiguration(rtcConfiguration, ec); |
+ if (ec) |
return; |
- RefPtr<MediaConstraints> constraints = MediaConstraintsImpl::create(mediaConstraints, es); |
- if (es.hadException()) |
+ RefPtr<MediaConstraints> constraints = MediaConstraintsImpl::create(mediaConstraints, ec); |
+ if (ec) |
return; |
bool valid = m_peerHandler->updateIce(configuration, constraints); |
if (!valid) |
- es.throwDOMException(SyntaxError); |
+ ec = SyntaxError; |
} |
-void RTCPeerConnection::addIceCandidate(RTCIceCandidate* iceCandidate, ExceptionState& es) |
+void RTCPeerConnection::addIceCandidate(RTCIceCandidate* iceCandidate, ExceptionCode& ec) |
{ |
if (m_signalingState == SignalingStateClosed) { |
- es.throwDOMException(InvalidStateError); |
+ ec = InvalidStateError; |
return; |
} |
if (!iceCandidate) { |
- es.throwDOMException(TypeMismatchError); |
+ ec = TypeMismatchError; |
return; |
} |
bool valid = m_peerHandler->addIceCandidate(iceCandidate->webCandidate()); |
if (!valid) |
- es.throwDOMException(SyntaxError); |
+ ec = SyntaxError; |
} |
String RTCPeerConnection::signalingState() const |
@@ -357,42 +356,42 @@ String RTCPeerConnection::iceConnectionState() const |
return String(); |
} |
-void RTCPeerConnection::addStream(PassRefPtr<MediaStream> prpStream, const Dictionary& mediaConstraints, ExceptionState& es) |
+void RTCPeerConnection::addStream(PassRefPtr<MediaStream> prpStream, const Dictionary& mediaConstraints, ExceptionCode& ec) |
{ |
if (m_signalingState == SignalingStateClosed) { |
- es.throwDOMException(InvalidStateError); |
+ ec = InvalidStateError; |
return; |
} |
RefPtr<MediaStream> stream = prpStream; |
if (!stream) { |
- es.throwDOMException(TypeMismatchError); |
+ ec = TypeMismatchError; |
return; |
} |
if (m_localStreams.contains(stream)) |
return; |
- RefPtr<MediaConstraints> constraints = MediaConstraintsImpl::create(mediaConstraints, es); |
- if (es.hadException()) |
+ RefPtr<MediaConstraints> constraints = MediaConstraintsImpl::create(mediaConstraints, ec); |
+ if (ec) |
return; |
m_localStreams.append(stream); |
bool valid = m_peerHandler->addStream(stream->descriptor(), constraints); |
if (!valid) |
- es.throwDOMException(SyntaxError); |
+ ec = SyntaxError; |
} |
-void RTCPeerConnection::removeStream(PassRefPtr<MediaStream> prpStream, ExceptionState& es) |
+void RTCPeerConnection::removeStream(PassRefPtr<MediaStream> prpStream, ExceptionCode& ec) |
{ |
if (m_signalingState == SignalingStateClosed) { |
- es.throwDOMException(InvalidStateError); |
+ ec = InvalidStateError; |
return; |
} |
if (!prpStream) { |
- es.throwDOMException(TypeMismatchError); |
+ ec = TypeMismatchError; |
return; |
} |
@@ -439,10 +438,10 @@ void RTCPeerConnection::getStats(PassRefPtr<RTCStatsCallback> successCallback, P |
m_peerHandler->getStats(statsRequest.release()); |
} |
-PassRefPtr<RTCDataChannel> RTCPeerConnection::createDataChannel(String label, const Dictionary& options, ExceptionState& es) |
+PassRefPtr<RTCDataChannel> RTCPeerConnection::createDataChannel(String label, const Dictionary& options, ExceptionCode& ec) |
{ |
if (m_signalingState == SignalingStateClosed) { |
- es.throwDOMException(InvalidStateError); |
+ ec = InvalidStateError; |
return 0; |
} |
@@ -462,8 +461,8 @@ PassRefPtr<RTCDataChannel> RTCPeerConnection::createDataChannel(String label, co |
options.get("protocol", protocolString); |
init.protocol = protocolString; |
- RefPtr<RTCDataChannel> channel = RTCDataChannel::create(scriptExecutionContext(), m_peerHandler.get(), label, init, es); |
- if (es.hadException()) |
+ RefPtr<RTCDataChannel> channel = RTCDataChannel::create(scriptExecutionContext(), m_peerHandler.get(), label, init, ec); |
+ if (ec) |
return 0; |
m_dataChannels.append(channel); |
return channel.release(); |
@@ -478,35 +477,35 @@ bool RTCPeerConnection::hasLocalStreamWithTrackId(const String& trackId) |
return false; |
} |
-PassRefPtr<RTCDTMFSender> RTCPeerConnection::createDTMFSender(PassRefPtr<MediaStreamTrack> prpTrack, ExceptionState& es) |
+PassRefPtr<RTCDTMFSender> RTCPeerConnection::createDTMFSender(PassRefPtr<MediaStreamTrack> prpTrack, ExceptionCode& ec) |
{ |
if (m_signalingState == SignalingStateClosed) { |
- es.throwDOMException(InvalidStateError); |
+ ec = InvalidStateError; |
return 0; |
} |
if (!prpTrack) { |
- es.throwDOMException(TypeError); |
+ ec = TypeError; |
return 0; |
} |
RefPtr<MediaStreamTrack> track = prpTrack; |
if (!hasLocalStreamWithTrackId(track->id())) { |
- es.throwDOMException(SyntaxError); |
+ ec = SyntaxError; |
return 0; |
} |
- RefPtr<RTCDTMFSender> dtmfSender = RTCDTMFSender::create(scriptExecutionContext(), m_peerHandler.get(), track.release(), es); |
- if (es.hadException()) |
+ RefPtr<RTCDTMFSender> dtmfSender = RTCDTMFSender::create(scriptExecutionContext(), m_peerHandler.get(), track.release(), ec); |
+ if (ec) |
return 0; |
return dtmfSender.release(); |
} |
-void RTCPeerConnection::close(ExceptionState& es) |
+void RTCPeerConnection::close(ExceptionCode& ec) |
{ |
if (m_signalingState == SignalingStateClosed) { |
- es.throwDOMException(InvalidStateError); |
+ ec = InvalidStateError; |
return; |
} |