Tests that the 'kind' attribute is set properly and that cues are only visible when 'kind' is set to 'captions' or 'subtitles'.


++ Test default attribute value
EXPECTED (trackElement.getAttribute('kind') == 'null') OK
EXPECTED (trackElement.kind == 'subtitles') OK
EXPECTED (video.textTracks[0].kind == 'subtitles') OK

*** Set to bogus value, should return default
set via DOM
RUN(trackElement.removeAttribute('kind'))
RUN(trackElement.kind = 'english-metadata')
EXPECTED (trackElement.getAttribute('kind') == 'english-metadata') OK
EXPECTED (trackElement.kind == 'subtitles') OK
EXPECTED (trackElement.track.kind == 'subtitles') OK
and via attribute
RUN(trackElement.removeAttribute('kind'))
RUN(trackElement.setAttribute('kind', 'english-metadata'))
EXPECTED (trackElement.kind == 'subtitles') OK
EXPECTED (trackElement.track.kind == 'subtitles') OK
EXPECTED (trackElement.getAttribute('kind') == 'english-metadata') OK

*** Set to known values
++ 'subtitles'
set via DOM
RUN(trackElement.removeAttribute('kind'))
RUN(trackElement.kind = 'subtitles')
EXPECTED (trackElement.getAttribute('kind') == 'subtitles') OK
EXPECTED (trackElement.kind == 'subtitles') OK
EXPECTED (trackElement.track.kind == 'subtitles') OK
and via attribute
RUN(trackElement.removeAttribute('kind'))
RUN(trackElement.setAttribute('kind', 'subtitles'))
EXPECTED (trackElement.kind == 'subtitles') OK
EXPECTED (trackElement.track.kind == 'subtitles') OK
EXPECTED (trackElement.getAttribute('kind') == 'subtitles') OK
EXPECTED (textTrackDisplayElement(video, 'display').innerText == 'Lorem ipsum dolor sit amet, ') OK

++ 'captions'
set via DOM
RUN(trackElement.removeAttribute('kind'))
RUN(trackElement.kind = 'captions')
EXPECTED (trackElement.getAttribute('kind') == 'captions') OK
EXPECTED (trackElement.kind == 'captions') OK
EXPECTED (trackElement.track.kind == 'captions') OK
and via attribute
RUN(trackElement.removeAttribute('kind'))
RUN(trackElement.setAttribute('kind', 'captions'))
EXPECTED (trackElement.kind == 'captions') OK
EXPECTED (trackElement.track.kind == 'captions') OK
EXPECTED (trackElement.getAttribute('kind') == 'captions') OK
EXPECTED (textTrackDisplayElement(video, 'display').innerText == 'Lorem ipsum dolor sit amet, ') OK

++ 'descriptions'
set via DOM
RUN(trackElement.removeAttribute('kind'))
RUN(trackElement.kind = 'descriptions')
EXPECTED (trackElement.getAttribute('kind') == 'descriptions') OK
EXPECTED (trackElement.kind == 'descriptions') OK
EXPECTED (trackElement.track.kind == 'descriptions') OK
and via attribute
RUN(trackElement.removeAttribute('kind'))
RUN(trackElement.setAttribute('kind', 'descriptions'))
EXPECTED (trackElement.kind == 'descriptions') OK
EXPECTED (trackElement.track.kind == 'descriptions') OK
EXPECTED (trackElement.getAttribute('kind') == 'descriptions') OK
No text track cue with display id '-webkit-media-text-track-display' is currently visible

++ 'chapters'
set via DOM
RUN(trackElement.removeAttribute('kind'))
RUN(trackElement.kind = 'chapters')
EXPECTED (trackElement.getAttribute('kind') == 'chapters') OK
EXPECTED (trackElement.kind == 'chapters') OK
EXPECTED (trackElement.track.kind == 'chapters') OK
and via attribute
RUN(trackElement.removeAttribute('kind'))
RUN(trackElement.setAttribute('kind', 'chapters'))
EXPECTED (trackElement.kind == 'chapters') OK
EXPECTED (trackElement.track.kind == 'chapters') OK
EXPECTED (trackElement.getAttribute('kind') == 'chapters') OK
No text track cue with display id '-webkit-media-text-track-display' is currently visible

++ 'metadata'
set via DOM
RUN(trackElement.removeAttribute('kind'))
RUN(trackElement.kind = 'metadata')
EXPECTED (trackElement.getAttribute('kind') == 'metadata') OK
EXPECTED (trackElement.kind == 'metadata') OK
EXPECTED (trackElement.track.kind == 'metadata') OK
and via attribute
RUN(trackElement.removeAttribute('kind'))
RUN(trackElement.setAttribute('kind', 'metadata'))
EXPECTED (trackElement.kind == 'metadata') OK
EXPECTED (trackElement.track.kind == 'metadata') OK
EXPECTED (trackElement.getAttribute('kind') == 'metadata') OK
No text track cue with display id '-webkit-media-text-track-display' is currently visible

END OF TEST

