test_getUserMedia_basicTabshare.html (2081B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <script type="application/javascript" src="mediaStreamPlayback.js"></script> 5 </head> 6 <body> 7 <pre id="test"> 8 <script type="application/javascript"> 9 createHTML({ 10 title: "getUserMedia Basic Tabshare Test", 11 bug: "1193075" 12 }); 13 /** 14 * Run a test to verify that we can complete a start and stop media playback 15 * cycle for a tabshare MediaStream on a video HTMLMediaElement. 16 * 17 * Additionally, exercise applyConstraints code for tabshare viewport offset. 18 */ 19 runTest(function () { 20 var testVideo = createMediaElement('video', 'testVideo'); 21 22 return Promise.resolve() 23 .then(() => pushPrefs(["media.getusermedia.browser.enabled", true])) 24 .then(() => { 25 SpecialPowers.wrap(document).notifyUserGestureActivation(); 26 return getUserMedia({ 27 video: { mediaSource: "browser", 28 scrollWithPage: true }, 29 }); 30 }) 31 .then(stream => { 32 var playback = new MediaStreamPlayback(testVideo, stream); 33 return playback.playMedia(false); 34 }) 35 .then(() => getUserMedia({ 36 video: { 37 mediaSource: "browser", 38 viewportOffsetX: 0, 39 viewportOffsetY: 0, 40 viewportWidth: 100, 41 viewportHeight: 100 42 }, 43 })) 44 .then(stream => { 45 var playback = new MediaStreamPlayback(testVideo, stream); 46 playback.startMedia(false); 47 return playback.verifyPlaying() 48 .then(() => Promise.all([ 49 () => testVideo.srcObject.getVideoTracks()[0].applyConstraints({ 50 mediaSource: "browser", 51 viewportOffsetX: 10, 52 viewportOffsetY: 50, 53 viewportWidth: 90, 54 viewportHeight: 50 55 }), 56 () => listenUntil(testVideo, "resize", () => true) 57 ])) 58 .then(() => playback.verifyPlaying()) // still playing 59 .then(() => playback.stopTracksForStreamInMediaPlayback()) 60 .then(() => playback.detachFromMediaElement()); 61 }); 62 }); 63 64 </script> 65 </pre> 66 </body> 67 </html>