Index: third_party/WebKit/Source/modules/mediastream/RTCPeerConnection.cpp |
diff --git a/third_party/WebKit/Source/modules/mediastream/RTCPeerConnection.cpp b/third_party/WebKit/Source/modules/mediastream/RTCPeerConnection.cpp |
index e9d8a83a8216914370e554a463933fb421ee3a09..a2280e5f52a70fcf121116cc441767f3cdbc4e65 100644 |
--- a/third_party/WebKit/Source/modules/mediastream/RTCPeerConnection.cpp |
+++ b/third_party/WebKit/Source/modules/mediastream/RTCPeerConnection.cpp |
@@ -359,8 +359,9 @@ RTCConfiguration* RTCPeerConnection::parseConfiguration(const Dictionary& config |
return rtcConfiguration; |
} |
-RTCOfferOptions* RTCPeerConnection::parseOfferOptions(const Dictionary& options, ExceptionState& exceptionState) |
+RTCOfferOptions* RTCPeerConnection::parseOfferOptions(const Dictionary& options, RTCErrorCallback* errorCallback, bool& hadError) |
{ |
+ hadError = false; |
if (options.isUndefinedOrNull()) |
return 0; |
@@ -378,12 +379,14 @@ RTCOfferOptions* RTCPeerConnection::parseOfferOptions(const Dictionary& options, |
bool iceRestart = false; |
if (DictionaryHelper::get(options, "offerToReceiveVideo", offerToReceiveVideo) && offerToReceiveVideo < 0) { |
- exceptionState.throwTypeError("Invalid offerToReceiveVideo"); |
+ asyncCallErrorCallback(errorCallback, "Invalid offerToReceiveVideo"); |
philipj_slow
2016/02/22 10:03:41
Before this would throw a TypeError, and if I'm re
Guido Urdaneta
2016/02/22 11:37:50
Yes. The spec uses RTCPeerConnectionErrorCallback,
|
+ hadError = true; |
return 0; |
} |
if (DictionaryHelper::get(options, "offerToReceiveAudio", offerToReceiveAudio) && offerToReceiveAudio < 0) { |
- exceptionState.throwTypeError("Invalid offerToReceiveAudio"); |
+ asyncCallErrorCallback(errorCallback, "Invalid offerToReceiveAudio"); |
+ hadError = true; |
return 0; |
} |
@@ -465,20 +468,17 @@ RTCPeerConnection::~RTCPeerConnection() |
ASSERT(m_closed || m_stopped); |
} |
-void RTCPeerConnection::createOffer(ExecutionContext* context, RTCSessionDescriptionCallback* successCallback, RTCErrorCallback* errorCallback, const Dictionary& rtcOfferOptions, ExceptionState& exceptionState) |
+void RTCPeerConnection::createOffer(ExecutionContext* context, RTCSessionDescriptionCallback* successCallback, RTCErrorCallback* errorCallback, const Dictionary& rtcOfferOptions) |
{ |
- if (errorCallback) |
- UseCounter::count(context, UseCounter::RTCPeerConnectionCreateOfferLegacyFailureCallback); |
- else |
- Deprecation::countDeprecation(context, UseCounter::RTCPeerConnectionCreateOfferLegacyNoFailureCallback); |
- |
- if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) |
- return; |
- |
ASSERT(successCallback); |
+ ASSERT(errorCallback); |
philipj_slow
2016/02/22 10:03:41
The nullability of errorCallback didn't change wit
Guido Urdaneta
2016/02/22 11:37:50
Correct. There was a previous CL making the error
philipj_slow
2016/02/23 09:13:54
Sounds fine to do here, just checking.
|
+ UseCounter::count(context, UseCounter::RTCPeerConnectionCreateOfferLegacyFailureCallback); |
+ if (callErrorCallbackIfSignalingStateClosed(m_signalingState, errorCallback)) |
+ return; |
- RTCOfferOptions* offerOptions = parseOfferOptions(rtcOfferOptions, exceptionState); |
- if (exceptionState.hadException()) |
+ bool hadOfferOptionsError = false; |
+ RTCOfferOptions* offerOptions = parseOfferOptions(rtcOfferOptions, errorCallback, hadOfferOptionsError); |
+ if (hadOfferOptionsError) |
return; |
RTCSessionDescriptionRequest* request = RTCSessionDescriptionRequestImpl::create(executionContext(), this, successCallback, errorCallback); |
@@ -486,7 +486,7 @@ void RTCPeerConnection::createOffer(ExecutionContext* context, RTCSessionDescrip |
if (offerOptions) { |
if (offerOptions->offerToReceiveAudio() != -1 || offerOptions->offerToReceiveVideo() != -1) |
UseCounter::count(context, UseCounter::RTCPeerConnectionCreateOfferLegacyOfferOptions); |
- else if (errorCallback) |
+ else |
UseCounter::count(context, UseCounter::RTCPeerConnectionCreateOfferLegacyCompliant); |
m_peerHandler->createOffer(request, offerOptions); |
@@ -494,40 +494,38 @@ void RTCPeerConnection::createOffer(ExecutionContext* context, RTCSessionDescrip |
MediaErrorState mediaErrorState; |
WebMediaConstraints constraints = MediaConstraintsImpl::create(context, rtcOfferOptions, mediaErrorState); |
if (mediaErrorState.hadException()) { |
- mediaErrorState.raiseException(exceptionState); |
+ String errorMsg = mediaErrorState.getErrorMessage(); |
+ asyncCallErrorCallback(errorCallback, errorMsg); |
return; |
} |
if (!constraints.isEmpty()) |
UseCounter::count(context, UseCounter::RTCPeerConnectionCreateOfferLegacyConstraints); |
- else if (errorCallback) |
+ else |
UseCounter::count(context, UseCounter::RTCPeerConnectionCreateOfferLegacyCompliant); |
m_peerHandler->createOffer(request, constraints); |
} |
} |
-void RTCPeerConnection::createAnswer(ExecutionContext* context, RTCSessionDescriptionCallback* successCallback, RTCErrorCallback* errorCallback, const Dictionary& mediaConstraints, ExceptionState& exceptionState) |
+void RTCPeerConnection::createAnswer(ExecutionContext* context, RTCSessionDescriptionCallback* successCallback, RTCErrorCallback* errorCallback, const Dictionary& mediaConstraints) |
{ |
- if (errorCallback) |
- UseCounter::count(context, UseCounter::RTCPeerConnectionCreateAnswerLegacyFailureCallback); |
- else |
- Deprecation::countDeprecation(context, UseCounter::RTCPeerConnectionCreateAnswerLegacyNoFailureCallback); |
- |
+ ASSERT(successCallback); |
+ ASSERT(errorCallback); |
+ UseCounter::count(context, UseCounter::RTCPeerConnectionCreateAnswerLegacyFailureCallback); |
if (mediaConstraints.isObject()) |
UseCounter::count(context, UseCounter::RTCPeerConnectionCreateAnswerLegacyConstraints); |
- else if (errorCallback) |
+ else |
UseCounter::count(context, UseCounter::RTCPeerConnectionCreateAnswerLegacyCompliant); |
- if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) |
+ if (callErrorCallbackIfSignalingStateClosed(m_signalingState, errorCallback)) |
return; |
- ASSERT(successCallback); |
- |
MediaErrorState mediaErrorState; |
WebMediaConstraints constraints = MediaConstraintsImpl::create(context, mediaConstraints, mediaErrorState); |
if (mediaErrorState.hadException()) { |
- mediaErrorState.raiseException(exceptionState); |
+ String errorMsg = mediaErrorState.getErrorMessage(); |
+ asyncCallErrorCallback(errorCallback, errorMsg); |
return; |
} |