mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 03:27:43 +00:00
html: AudoTrackList is a List
BUG= R=terry@google.com Review-Url: https://codereview.chromium.org/2884813002 .
This commit is contained in:
parent
c519414702
commit
89b9c7c8dd
|
@ -1010,7 +1010,9 @@ class AudioTrack extends Interceptor {
|
|||
@DomName('AudioTrackList')
|
||||
@Experimental() // untriaged
|
||||
@Native("AudioTrackList")
|
||||
class AudioTrackList extends EventTarget {
|
||||
class AudioTrackList extends EventTarget
|
||||
with ListMixin<AudioTrack>, ImmutableListMixin<AudioTrack>
|
||||
implements JavaScriptIndexingBehavior<AudioTrack>, List<AudioTrack> {
|
||||
// To suppress missing implicit constructor warnings.
|
||||
factory AudioTrackList._() {
|
||||
throw new UnsupportedError("Not supported");
|
||||
|
@ -1025,7 +1027,50 @@ class AudioTrackList extends EventTarget {
|
|||
@DomName('AudioTrackList.length')
|
||||
@DocsEditable()
|
||||
@Experimental() // untriaged
|
||||
final int length;
|
||||
int get length => JS("int", "#.length", this);
|
||||
|
||||
AudioTrack operator [](int index) {
|
||||
if (JS("bool", "# >>> 0 !== # || # >= #", index, index, index, length))
|
||||
throw new RangeError.index(index, this);
|
||||
return JS("AudioTrack", "#[#]", this, index);
|
||||
}
|
||||
|
||||
void operator []=(int index, AudioTrack value) {
|
||||
throw new UnsupportedError("Cannot assign element of immutable List.");
|
||||
}
|
||||
// -- start List<AudioTrack> mixins.
|
||||
// AudioTrack is the element type.
|
||||
|
||||
set length(int value) {
|
||||
throw new UnsupportedError("Cannot resize immutable List.");
|
||||
}
|
||||
|
||||
AudioTrack get first {
|
||||
if (this.length > 0) {
|
||||
return JS('AudioTrack', '#[0]', this);
|
||||
}
|
||||
throw new StateError("No elements");
|
||||
}
|
||||
|
||||
AudioTrack get last {
|
||||
int len = this.length;
|
||||
if (len > 0) {
|
||||
return JS('AudioTrack', '#[#]', this, len - 1);
|
||||
}
|
||||
throw new StateError("No elements");
|
||||
}
|
||||
|
||||
AudioTrack get single {
|
||||
int len = this.length;
|
||||
if (len == 1) {
|
||||
return JS('AudioTrack', '#[0]', this);
|
||||
}
|
||||
if (len == 0) throw new StateError("No elements");
|
||||
throw new StateError("More than one element");
|
||||
}
|
||||
|
||||
AudioTrack elementAt(int index) => this[index];
|
||||
// -- end List<AudioTrack> mixins.
|
||||
|
||||
@DomName('AudioTrackList.__getter__')
|
||||
@DocsEditable()
|
||||
|
@ -23080,7 +23125,9 @@ class MediaElement extends HtmlElement {
|
|||
@DomName('HTMLMediaElement.audioTracks')
|
||||
@DocsEditable()
|
||||
@Experimental() // untriaged
|
||||
final AudioTrackList audioTracks;
|
||||
@Returns('AudioTrackList|Null')
|
||||
@Creates('AudioTrackList')
|
||||
final List<AudioTrack> audioTracks;
|
||||
|
||||
@DomName('HTMLMediaElement.autoplay')
|
||||
@DocsEditable()
|
||||
|
|
|
@ -2127,7 +2127,9 @@ class AudioTrack extends DartHtmlDomObject {
|
|||
@DocsEditable()
|
||||
@DomName('AudioTrackList')
|
||||
@Experimental() // untriaged
|
||||
class AudioTrackList extends EventTarget {
|
||||
class AudioTrackList extends EventTarget
|
||||
with ListMixin<AudioTrack>, ImmutableListMixin<AudioTrack>
|
||||
implements List<AudioTrack> {
|
||||
// To suppress missing implicit constructor warnings.
|
||||
factory AudioTrackList._() {
|
||||
throw new UnsupportedError("Not supported");
|
||||
|
@ -2150,6 +2152,51 @@ class AudioTrackList extends EventTarget {
|
|||
@Experimental() // untriaged
|
||||
int get length => _blink.BlinkAudioTrackList.instance.length_Getter_(this);
|
||||
|
||||
AudioTrack operator [](int index) {
|
||||
if (index < 0 || index >= length) throw new RangeError.index(index, this);
|
||||
return _nativeIndexedGetter(index);
|
||||
}
|
||||
|
||||
AudioTrack _nativeIndexedGetter(int index) =>
|
||||
(_blink.BlinkAudioTrackList.instance.item_Callback_1_(this, index));
|
||||
|
||||
void operator []=(int index, AudioTrack value) {
|
||||
throw new UnsupportedError("Cannot assign element of immutable List.");
|
||||
}
|
||||
// -- start List<AudioTrack> mixins.
|
||||
// AudioTrack is the element type.
|
||||
|
||||
set length(int value) {
|
||||
throw new UnsupportedError("Cannot resize immutable List.");
|
||||
}
|
||||
|
||||
AudioTrack get first {
|
||||
if (this.length > 0) {
|
||||
return _nativeIndexedGetter(0);
|
||||
}
|
||||
throw new StateError("No elements");
|
||||
}
|
||||
|
||||
AudioTrack get last {
|
||||
int len = this.length;
|
||||
if (len > 0) {
|
||||
return _nativeIndexedGetter(len - 1);
|
||||
}
|
||||
throw new StateError("No elements");
|
||||
}
|
||||
|
||||
AudioTrack get single {
|
||||
int len = this.length;
|
||||
if (len == 1) {
|
||||
return _nativeIndexedGetter(0);
|
||||
}
|
||||
if (len == 0) throw new StateError("No elements");
|
||||
throw new StateError("More than one element");
|
||||
}
|
||||
|
||||
AudioTrack elementAt(int index) => this[index];
|
||||
// -- end List<AudioTrack> mixins.
|
||||
|
||||
@DomName('AudioTrackList.__getter__')
|
||||
@DocsEditable()
|
||||
@Experimental() // untriaged
|
||||
|
@ -26178,8 +26225,8 @@ class MediaElement extends HtmlElement {
|
|||
@DomName('HTMLMediaElement.audioTracks')
|
||||
@DocsEditable()
|
||||
@Experimental() // untriaged
|
||||
AudioTrackList get audioTracks =>
|
||||
_blink.BlinkHTMLMediaElement.instance.audioTracks_Getter_(this);
|
||||
List<AudioTrack> get audioTracks =>
|
||||
(_blink.BlinkHTMLMediaElement.instance.audioTracks_Getter_(this));
|
||||
|
||||
@DomName('HTMLMediaElement.autoplay')
|
||||
@DocsEditable()
|
||||
|
|
|
@ -1492,6 +1492,8 @@ _idl_type_registry = monitored.Dict('generator._idl_type_registry', {
|
|||
'StyleSheet': TypeData(clazz='Interface', conversion_includes=['CSSStyleSheet']),
|
||||
'SVGElement': TypeData(clazz='Interface', custom_to_dart=True),
|
||||
|
||||
'AudioTrackList': TypeData(clazz='Interface', item_type='AudioTrack',
|
||||
suppress_interface=False, dart_type='List<AudioTrack>'),
|
||||
'ClientRectList': TypeData(clazz='Interface',
|
||||
item_type='ClientRect', dart_type='List<Rectangle>',
|
||||
suppress_interface=True),
|
||||
|
|
Loading…
Reference in a new issue