Bug 1302632: P3. Provide failures details to error attribute. r=jwwang

MozReview-Commit-ID: 3eIXOF96UR4
This commit is contained in:
Jean-Yves Avenard
2016-09-15 16:17:10 +10:00
parent ab04ae5528
commit 9bf064bc81

View File

@@ -1040,12 +1040,11 @@ void HTMLMediaElement::AbortExistingLoads()
mPendingEvents.Clear(); mPendingEvents.Clear();
} }
void HTMLMediaElement::NoSupportedMediaSourceError() void HTMLMediaElement::NoSupportedMediaSourceError(const nsACString& aErrorDetails)
{ {
NS_ASSERTION(mNetworkState == NETWORK_LOADING, NS_ASSERTION(mNetworkState == NETWORK_LOADING,
"Not loading during source selection?"); "Not loading during source selection?");
mError = new MediaError(this, MEDIA_ERR_SRC_NOT_SUPPORTED, aErrorDetails);
mError = new MediaError(this, MEDIA_ERR_SRC_NOT_SUPPORTED);
ChangeNetworkState(nsIDOMHTMLMediaElement::NETWORK_NO_SOURCE); ChangeNetworkState(nsIDOMHTMLMediaElement::NETWORK_NO_SOURCE);
DispatchAsyncEvent(NS_LITERAL_STRING("error")); DispatchAsyncEvent(NS_LITERAL_STRING("error"));
ChangeDelayLoadStatus(false); ChangeDelayLoadStatus(false);
@@ -4447,9 +4446,9 @@ void HTMLMediaElement::DecodeError(const MediaResult& aError)
NS_WARNING("Should know the source we were loading from!"); NS_WARNING("Should know the source we were loading from!");
} }
} else if (mReadyState == nsIDOMHTMLMediaElement::HAVE_NOTHING) { } else if (mReadyState == nsIDOMHTMLMediaElement::HAVE_NOTHING) {
NoSupportedMediaSourceError(); NoSupportedMediaSourceError(aError.Description());
} else { } else {
Error(MEDIA_ERR_DECODE, aError); Error(MEDIA_ERR_DECODE, aError.Description());
} }
} }
@@ -4464,7 +4463,7 @@ void HTMLMediaElement::LoadAborted()
} }
void HTMLMediaElement::Error(uint16_t aErrorCode, void HTMLMediaElement::Error(uint16_t aErrorCode,
const MediaResult& aErrorDetails) const nsACString& aErrorDetails)
{ {
NS_ASSERTION(aErrorCode == MEDIA_ERR_DECODE || NS_ASSERTION(aErrorCode == MEDIA_ERR_DECODE ||
aErrorCode == MEDIA_ERR_NETWORK || aErrorCode == MEDIA_ERR_NETWORK ||
@@ -4477,11 +4476,7 @@ void HTMLMediaElement::Error(uint16_t aErrorCode,
if (mError) { if (mError) {
return; return;
} }
nsCString message; mError = new MediaError(this, aErrorCode, aErrorDetails);
if (NS_FAILED(aErrorDetails)) {
message = aErrorDetails.Description();
}
mError = new MediaError(this, aErrorCode, message);
DispatchAsyncEvent(NS_LITERAL_STRING("error")); DispatchAsyncEvent(NS_LITERAL_STRING("error"));
if (mReadyState == nsIDOMHTMLMediaElement::HAVE_NOTHING) { if (mReadyState == nsIDOMHTMLMediaElement::HAVE_NOTHING) {