From f041eb0607a8c860e293259ff05711d6b51522cd Mon Sep 17 00:00:00 2001 From: Moonchild Date: Mon, 25 May 2026 20:32:10 +0200 Subject: [PATCH] [DOM] Stop speech synthesis if the originating document is closed. --- dom/media/webspeech/synth/SpeechSynthesis.cpp | 6 ++++++ dom/media/webspeech/synth/SpeechSynthesis.h | 2 ++ 2 files changed, 8 insertions(+) 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)