RUN(video.src = URL.createObjectURL(source))
EVENT(sourceopen)
RUN(source.duration = loader.duration())
RUN(sourceBuffer = source.addSourceBuffer(loader.type()))
RUN(sourceBuffer.appendBuffer(loader.initSegment()))
EVENT(update)
RUN(sourceBuffer.appendBuffer(loader.mediaSegment(0)))
EVENT(update)
EVENT(resize)
RUN(canvas = document.createElement("canvas"))
RUN(gl = canvas.getContext("webgl"))
RUN(texture = gl.createTexture())
RUN(gl.bindTexture(gl.TEXTURE_2D, texture))
RUN(gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR))
RUN(gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR))
RUN(gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE))
RUN(gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE))
RUN(gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, video))
RUN(video.play())
Wait for currentTime to advance beyond 0s.
EVENT(timeupdate)
EXPECTED (video.getVideoPlaybackQuality().totalVideoFrames > '0') OK
END OF TEST

