Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 42ffbe195e69ce41e7c37707231efc7ed5e9b460
      
https://github.com/WebKit/WebKit/commit/42ffbe195e69ce41e7c37707231efc7ed5e9b460
  Author: Sihui Liu <[email protected]>
  Date:   2023-08-16 (Wed, 16 Aug 2023)

  Changed paths:
    M Source/WebCore/Modules/speech/SpeechSynthesis.cpp
    M Source/WebCore/Modules/speech/SpeechSynthesis.h
    M Source/WebCore/Modules/speech/SpeechSynthesisUtterance.cpp
    M Source/WebCore/Modules/speech/SpeechSynthesisUtterance.h
    M Source/WebCore/Modules/speech/SpeechSynthesisUtterance.idl

  Log Message:
  -----------
  Make SpeechSynthesisUtterance an ActiveDOMObject
https://bugs.webkit.org/show_bug.cgi?id=260214
rdar://113921763

Reviewed by Ryosuke Niwa.

Currently dispatching event to SpeechSynthesisUtterance can lead to crash due 
to GC. To fix that, we now keep wrapper
of SpeechSynthesisUtterance alive until there is no more event to be 
dispatched. This can happen in two cases:
1. SpeechSynthesisUtterance is not processed yet, and is removed from 
SpeechSynthesis's queue (i.e. the utterance will
not be processed).
2. SpeechSynthesisUtterance is being processed, and it finishes dispatching end 
or error event -- these two events are
the last events to be fired on an untterance according to spec: 
https://wicg.github.io/speech-api/#utterance-events.

* Source/WebCore/Modules/speech/SpeechSynthesis.cpp:
(WebCore::SpeechSynthesis::setPlatformSynthesizer):
(WebCore::SpeechSynthesis::cancel):
(WebCore::SpeechSynthesis::clearUtteranceQueue):
* Source/WebCore/Modules/speech/SpeechSynthesis.h:
* Source/WebCore/Modules/speech/SpeechSynthesisUtterance.cpp:
(WebCore::SpeechSynthesisUtterance::SpeechSynthesisUtterance):
(WebCore::SpeechSynthesisUtterance::eventOccurred):
(WebCore::SpeechSynthesisUtterance::errorEventOccurred):
(WebCore::SpeechSynthesisUtterance::dispatchEventAndUpdateState):
(WebCore::SpeechSynthesisUtterance::setIsActiveForEventDispatch):
(WebCore::SpeechSynthesisUtterance::activeDOMObjectName const):
(WebCore::SpeechSynthesisUtterance::virtualHasPendingActivity const):
* Source/WebCore/Modules/speech/SpeechSynthesisUtterance.h:
* Source/WebCore/Modules/speech/SpeechSynthesisUtterance.idl:

Canonical link: https://commits.webkit.org/266959@main


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to