diff --git a/dom/media/webspeech/synth/SpeechSynthesis.cpp b/dom/media/webspeech/synth/SpeechSynthesis.cpp index 189e3590cc..e0ceac6c9f 100644 --- a/dom/media/webspeech/synth/SpeechSynthesis.cpp +++ b/dom/media/webspeech/synth/SpeechSynthesis.cpp @@ -293,6 +293,12 @@ SpeechSynthesis::ForceEnd() } } +void SpeechSynthesis::DisconnectFromOwner() { + Pause(); + Cancel(); + DOMEventTargetHelper::DisconnectFromOwner(); +} + NS_IMETHODIMP SpeechSynthesis::Observe(nsISupports* aSubject, const char* aTopic, const char16_t* aData) diff --git a/dom/media/webspeech/synth/SpeechSynthesis.h b/dom/media/webspeech/synth/SpeechSynthesis.h index 692ef73edb..55e7bb5df7 100644 --- a/dom/media/webspeech/synth/SpeechSynthesis.h +++ b/dom/media/webspeech/synth/SpeechSynthesis.h @@ -58,6 +58,8 @@ public: void GetVoices(nsTArray< RefPtr >& aResult); void ForceEnd(); + + void DisconnectFromOwner() override; IMPL_EVENT_HANDLER(voiceschanged)