From a16bd37ed23fd5419785f40b21e97893f86a42dd Mon Sep 17 00:00:00 2001 From: Srujan Gaddam Date: Thu, 17 Mar 2022 00:28:05 +0000 Subject: [PATCH] [dart:html] Change AudioNode.connect to be nullable AudioNode.connect can return undefined in the case where destination is an AudioParam. Note this is not a breaking change since it's a private method. This unbreaks users who use native null assertions. Change-Id: I517863798b0ebe4859d195dcadc2696716ebc8a8 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/237500 Commit-Queue: Srujan Gaddam Reviewed-by: Riley Porter --- sdk/lib/web_audio/dart2js/web_audio_dart2js.dart | 2 +- tools/dom/idl/dart/dart.idl | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/sdk/lib/web_audio/dart2js/web_audio_dart2js.dart b/sdk/lib/web_audio/dart2js/web_audio_dart2js.dart index 29544d8f98c..37e538bcb70 100644 --- a/sdk/lib/web_audio/dart2js/web_audio_dart2js.dart +++ b/sdk/lib/web_audio/dart2js/web_audio_dart2js.dart @@ -386,7 +386,7 @@ class AudioNode extends EventTarget { int? get numberOfOutputs native; @JSName('connect') - AudioNode _connect(destination, [int? output, int? input]) native; + AudioNode? _connect(destination, [int? output, int? input]) native; void disconnect([destination_OR_output, int? output, int? input]) native; diff --git a/tools/dom/idl/dart/dart.idl b/tools/dom/idl/dart/dart.idl index ac5b337be53..674af140c3e 100644 --- a/tools/dom/idl/dart/dart.idl +++ b/tools/dom/idl/dart/dart.idl @@ -450,6 +450,15 @@ interface AudioContext { [DartSuppress] DelayNode createDelayNode(optional double maxDelayTime); }; +[DartSupplemental] +interface AudioNode : EventTarget { + [DartSuppress] AudioNode connect(AudioNode destination, optional unsigned long output = 0, optional unsigned long input = 0); + [DartSuppress] void connect(AudioParam destination, optional unsigned long output = 0); + AudioNode? connect(AudioNode destination, optional unsigned long output = 0, optional unsigned long input = 0); + // Scripts don't unify return types, so this is changed from void to do so. + AudioNode? connect(AudioParam destination, optional unsigned long output = 0); +}; + [DartSupplemental] interface HTMLInputElement { [DartSuppress] attribute boolean webkitSpeech;