| <!doctype html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <title>video.videoWidth should be set when video.readyState reaches HAVE_METADATA</title> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| </head> |
| <body> |
| <video width=100 height=100></video> |
| |
| <script> |
| let video; |
| promise_test((test) => { |
| if (window.testRunner) |
| testRunner.setUserMediaPermission(true); |
| if (!window.internals) |
| return Promise.reject("this test needs internals API"); |
| |
| return navigator.mediaDevices.getUserMedia({ audio: true, video: true }).then((stream) => { |
| window.internals.delayMediaStreamTrackSamples(stream.getAudioTracks()[0], .5); |
| window.internals.delayMediaStreamTrackSamples(stream.getVideoTracks()[0], .5); |
| |
| video = document.getElementsByTagName("video")[0]; |
| video.srcObject = stream; |
| }) |
| .then(() => new Promise(resolve => video.onloadedmetadata = resolve)) |
| .then(() => { |
| assert_not_equals(video.videoWidth, 0, "videoWidth is non-zero"); |
| assert_not_equals(video.videoHeight, 0, "videoHeight is non-zero"); |
| }) |
| }, "videoWidth and videoHeight are set on 'loadedmetadata' event"); |
| </script> |
| </body> |
| </html> |