diff --git a/content/media/MediaRecorder.cpp b/content/media/MediaRecorder.cpp index ebb3e2277f95..0c8ce814fada 100644 --- a/content/media/MediaRecorder.cpp +++ b/content/media/MediaRecorder.cpp @@ -183,6 +183,12 @@ public: if (!mReadThread) { nsresult rv = NS_NewNamedThread("Media Encoder", getter_AddRefs(mReadThread)); if (NS_FAILED(rv)) { + if (mInputPort.get()) { + mInputPort->Destroy(); + } + if (mTrackUnionStream.get()) { + mTrackUnionStream->Destroy(); + } mRecorder->NotifyError(rv); return; } @@ -363,6 +369,16 @@ MediaRecorder::Start(const Optional& aTimeSlice, ErrorResult& aResult) return; } + if (!mStream->GetPrincipal()) { + aResult.Throw(NS_ERROR_DOM_INVALID_STATE_ERR); + return; + } + + if (!CheckPrincipal()) { + aResult.Throw(NS_ERROR_DOM_SECURITY_ERR); + return; + } + int32_t timeSlice = 0; if (aTimeSlice.WasPassed()) { if (aTimeSlice.Value() < 0) { @@ -373,11 +389,6 @@ MediaRecorder::Start(const Optional& aTimeSlice, ErrorResult& aResult) timeSlice = aTimeSlice.Value(); } - if (!CheckPrincipal()) { - aResult.Throw(NS_ERROR_DOM_SECURITY_ERR); - return; - } - mState = RecordingState::Recording; // Start a session mSession = new Session(this, timeSlice); diff --git a/content/media/test/Makefile.in b/content/media/test/Makefile.in index bc511b97b885..e44b8639bcc7 100644 --- a/content/media/test/Makefile.in +++ b/content/media/test/Makefile.in @@ -121,6 +121,7 @@ MOCHITEST_FILES = \ test_mediarecorder_record_timeslice.html \ test_mediarecorder_record_audiocontext.html \ test_mediarecorder_record_stopms.html \ + test_mediarecorder_record_nosrc.html \ test_mozHasAudio.html \ test_source_media.html \ test_autoplay_contentEditable.html \ diff --git a/content/media/test/test_mediarecorder_record_nosrc.html b/content/media/test/test_mediarecorder_record_nosrc.html new file mode 100644 index 000000000000..b7f59b0de584 --- /dev/null +++ b/content/media/test/test_mediarecorder_record_nosrc.html @@ -0,0 +1,33 @@ + + + Bug 919051 - Media Recording - memory leak when record a media stream without any tracks + + + + + +Mozill +a Bug 919051 +
+
+
+
+