<!doctype html> <html> <head> <title>Parallel capture requests</title> </head> <body> <button id="button">User gesture</button> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/testdriver.js"></script> <script src="/resources/testdriver-vendor.js"></script> <script> async function getDisplayMedia(constraints) { const p = new Promise(r => button.onclick = r); await test_driver.click(button); await p; return navigator.mediaDevices.getDisplayMedia(constraints); } promise_test(function() { const getUserMediaPromise = navigator.mediaDevices.getUserMedia({audio: true, video:true}); const getDisplayMediaPromise = getDisplayMedia({video: true, audio: true}); return Promise.all([getUserMediaPromise, getDisplayMediaPromise]) .then(function(s) { assert_greater_than_equal(s[0].getTracks().length, 1); assert_less_than_equal(s[0].getTracks().length, 2); assert_equals(s[0].getVideoTracks().length, 1); assert_less_than_equal(s[0].getAudioTracks().length, 1); assert_greater_than_equal(s[1].getTracks().length, 1); assert_less_than_equal(s[1].getTracks().length, 2); assert_equals(s[1].getVideoTracks().length, 1); assert_less_than_equal(s[1].getAudioTracks().length, 1); }); }, 'getDisplayMedia() and parallel getUserMedia()'); promise_test(function() { const getDisplayMediaPromise = getDisplayMedia({video: true, audio: true}); const getUserMediaPromise = navigator.mediaDevices.getUserMedia({audio: true, video:true}); return Promise.all([getDisplayMediaPromise, getUserMediaPromise]) .then(function(s) { assert_greater_than_equal(s[0].getTracks().length, 1); assert_less_than_equal(s[0].getTracks().length, 2); assert_equals(s[0].getVideoTracks().length, 1); assert_less_than_equal(s[0].getAudioTracks().length, 1); assert_greater_than_equal(s[1].getTracks().length, 1); assert_less_than_equal(s[1].getTracks().length, 2); assert_equals(s[1].getVideoTracks().length, 1); assert_less_than_equal(s[1].getAudioTracks().length, 1); }); }, 'getUserMedia() and parallel getDisplayMedia()'); </script> </body> </html>