From 8ebed3d806260900a6f7bfc20f6407967c4e7ce9 Mon Sep 17 00:00:00 2001 From: Srujan Gaddam Date: Fri, 31 Mar 2023 17:32:54 +0000 Subject: [PATCH] [dart:html] Add webkitSpeechRecognition to SpeechRecognition class In Safari, the prototype of a SpeechRecognition object returns a webkitSpeechRecognition prototype. This name is different than the one in the @Native annotation, so dart2js fails to recognize it. We should it to the annotation so we properly intercept it. CoreLibraryReviewExempt: Changing bindings of dart:html, no change to API. Change-Id: Ic533e1208dd28e521403998e43009e0f651e2dfa Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291961 Reviewed-by: Nate Biggs Commit-Queue: Srujan Gaddam --- sdk/lib/html/dart2js/html_dart2js.dart | 2 +- tools/dom/scripts/generator.py | 2 ++ tools/dom/web_library_bindings.dart | 13 ++++++++++++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/sdk/lib/html/dart2js/html_dart2js.dart b/sdk/lib/html/dart2js/html_dart2js.dart index d35c07d3b52..1a2debac04f 100644 --- a/sdk/lib/html/dart2js/html_dart2js.dart +++ b/sdk/lib/html/dart2js/html_dart2js.dart @@ -28544,7 +28544,7 @@ class SpeechGrammarList extends JavaScriptObject // BSD-style license that can be found in the LICENSE file. @SupportedBrowser(SupportedBrowser.CHROME, '25') -@Native("SpeechRecognition") +@Native("SpeechRecognition,webkitSpeechRecognition") class SpeechRecognition extends EventTarget { // To suppress missing implicit constructor warnings. factory SpeechRecognition._() { diff --git a/tools/dom/scripts/generator.py b/tools/dom/scripts/generator.py index 6ac22ce9283..ad3761eae19 100644 --- a/tools/dom/scripts/generator.py +++ b/tools/dom/scripts/generator.py @@ -342,6 +342,8 @@ _dart2js_dom_custom_native_specs = monitored.Dict( 'RTCDataChannel,DataChannel', 'ScriptProcessorNode': 'ScriptProcessorNode,JavaScriptAudioNode', + 'SpeechRecognition': + 'SpeechRecognition,webkitSpeechRecognition', 'TransitionEvent': 'TransitionEvent,WebKitTransitionEvent', 'CSSKeyframeRule': diff --git a/tools/dom/web_library_bindings.dart b/tools/dom/web_library_bindings.dart index f41e7241c8c..a733d1a5503 100644 --- a/tools/dom/web_library_bindings.dart +++ b/tools/dom/web_library_bindings.dart @@ -5062,6 +5062,17 @@ final Map>> nativeTypeToDartMembers = { 'removeStream': {'removeStream'}, 'removeTrack': {'removeTrack'}, 'signalingState': {'signalingState'} + }, + 'webkitSpeechRecognition': { + 'abort': {'abort'}, + 'audioTrack': {'audioTrack'}, + 'continuous': {'continuous'}, + 'grammars': {'grammars'}, + 'interimResults': {'interimResults'}, + 'lang': {'lang'}, + 'maxAlternatives': {'maxAlternatives'}, + 'start': {'start'}, + 'stop': {'stop'} } }; @@ -9755,7 +9766,7 @@ final Map> dartTypeToNativeTypes = { 'SpanElement': {'HTMLSpanElement'}, 'SpeechGrammar': {'SpeechGrammar'}, 'SpeechGrammarList': {'SpeechGrammarList'}, - 'SpeechRecognition': {'SpeechRecognition'}, + 'SpeechRecognition': {'SpeechRecognition', 'webkitSpeechRecognition'}, 'SpeechRecognitionAlternative': {'SpeechRecognitionAlternative'}, 'SpeechRecognitionError': {'SpeechRecognitionError'}, 'SpeechRecognitionEvent': {'SpeechRecognitionEvent'},