blob: be1085e6bfd9e67b9a922bf8ff7d223b7472a267 [file] [log] [blame]
jer.noble@apple.com961f04d2017-02-15 22:44:25 +00001<!doctype html>
2<html>
3 <head>
4 <meta charset="utf-8">
5 <title>Testing basic video exchange from offerer to receiver</title>
6 <script src="../resources/testharness.js"></script>
7 <script src="../resources/testharnessreport.js"></script>
8 </head>
9 <body>
eric.carlson@apple.comba4911a52018-09-30 14:32:15 +000010 <video id="video" autoplay playsinline></video>
jer.noble@apple.com961f04d2017-02-15 22:44:25 +000011 <canvas id="canvas" width="640" height="480"></canvas>
12 <script src ="routines.js"></script>
13 <script>
jer.noble@apple.com961f04d2017-02-15 22:44:25 +000014if (window.testRunner)
15 testRunner.setUserMediaPermission(true);
16
17video = document.getElementById("video");
18canvas = document.getElementById("canvas");
19// FIXME: We should use tracks
20
21function testImage()
22{
23 try {
eric.carlson@apple.comba4911a52018-09-30 14:32:15 +000024 if (!video.videoWidth || !video.videoHeight)
25 throw `Video size invalid: ${video.videoWidth}x${video.videoHeight}`;
26
jer.noble@apple.com961f04d2017-02-15 22:44:25 +000027 canvas.width = video.videoWidth;
28 canvas.height = video.videoHeight;
29 canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height);
30
31 imageData = canvas.getContext('2d').getImageData(0, 0, canvas.width, canvas.height);
32 assert_true(imageData.data.every( (pixel, index) => {
commit-queue@webkit.org3d93dc42017-06-19 17:12:57 +000033 return pixel === 0 || (index % 4) === 3;
jer.noble@apple.com961f04d2017-02-15 22:44:25 +000034 }));
35
36 finishTest();
37 } catch(e) {
38 errorTest(e);
39 }
40}
41
42function testStream(stream)
43{
44 video.srcObject = stream;
jer.noble@apple.com961f04d2017-02-15 22:44:25 +000045 video.onplay = setTimeout(() => {
commit-queue@webkit.org3d93dc42017-06-19 17:12:57 +000046 stream.getTracks()[0].enabled = false;
47 setTimeout(() => {
48 testImage();
49 }, 0);
eric.carlson@apple.comba4911a52018-09-30 14:32:15 +000050 }, 2000);
jer.noble@apple.com961f04d2017-02-15 22:44:25 +000051}
52
53var finishTest, errorTest;
54promise_test((test) => {
55 return navigator.mediaDevices.getUserMedia({ video: true}).then((stream) => {
56 return new Promise((resolve, reject) => {
57 finishTest = resolve;
58 errorTest = reject;
59 createConnections((firstConnection) => {
commit-queue@webkit.org362495d2017-04-11 22:47:26 +000060 firstConnection.addTrack(stream.getVideoTracks()[0], stream);
jer.noble@apple.com961f04d2017-02-15 22:44:25 +000061 }, (secondConnection) => {
commit-queue@webkit.org362495d2017-04-11 22:47:26 +000062 secondConnection.ontrack = (trackEvent) => { testStream(trackEvent.streams[0]); };
jer.noble@apple.com961f04d2017-02-15 22:44:25 +000063 });
64 });
65 });
66}, "Disabled source exchange");
67 </script>
68 </body>
69</html>