blob: da29f7a5e71650f46548ce8e23acb912c3b9936e [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<canvas id="canvas1" width=100px height=100px></canvas>
<video id="video" autoplay width=100px height=100px></video>
<canvas id="canvas2" width=100px height=100px></canvas>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src ="routines.js"></script>
<script>
var canvas1 = document.getElementById("canvas1");
var canvas2 = document.getElementById("canvas2");
var video = document.getElementById("video");
var color = "green";
function printRectangle()
{
var context = canvas1.getContext("2d");
context.fillStyle = color;
context.fillRect(0, 0, 100, 100);
setTimeout(printRectangle, 50);
}
promise_test((test) => {
printRectangle();
return new Promise((resolve, reject) => {
createConnections((firstConnection) => {
var stream = canvas1.captureStream();
firstConnection.addTrack(stream.getVideoTracks()[0], stream);
}, (secondConnection) => {
secondConnection.ontrack = (trackEvent) => {
assert_true(trackEvent.track instanceof MediaStreamTrack);
assert_true(trackEvent.receiver instanceof RTCRtpReceiver);
assert_true(Array.isArray(trackEvent.streams), "Array.isArray() should return true");
assert_true(Object.isFrozen(trackEvent.streams), "Object.isFrozen() should return true");
resolve(trackEvent.streams[0]);
};
});
setTimeout(() => reject("Test timed out"), 5000);
}).then((stream) => {
video.srcObject = stream;
return video.play();
}).then(() => {
return waitFor(100);
}).then(() => {
canvas2.getContext("2d").drawImage(video, 0 ,0);
assert_array_equals(canvas2.getContext("2d").getImageData(20 ,20, 60, 60), canvas1.getContext("2d").getImageData(20, 20, 60, 60));
}).then(() => {
color = "red";
return waitFor(300);
}).then(() => {
canvas2.getContext("2d").drawImage(video, 0 ,0);
assert_array_equals(canvas2.getContext("2d").getImageData(20 ,20, 60, 60), canvas1.getContext("2d").getImageData(20, 20, 60, 60));
}).then(() => {
color = "green";
return waitFor(300);
}).then(() => {
canvas2.getContext("2d").drawImage(video, 0 ,0);
assert_array_equals(canvas2.getContext("2d").getImageData(20 ,20, 60, 60), canvas1.getContext("2d").getImageData(20, 20, 60, 60));
});
}, "captureStream with webrtc");
</script>
</head>
</html>