46 lines
1.5 KiB
HTML
46 lines
1.5 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>Testing MediaDevices addEventListener/removeEventListener</title>
|
|
<script src="../../resources/testharness.js"></script>
|
|
<script src="../../resources/testharnessreport.js"></script>
|
|
</head>
|
|
<body>
|
|
<video id="video" autoplay playsInline></video>
|
|
<script>
|
|
promise_test(async (test) => {
|
|
video.srcObject = await navigator.mediaDevices.getUserMedia({ video: true });
|
|
const track = video.srcObject.getTracks()[0];
|
|
|
|
await video.play();
|
|
|
|
if (!window.internals)
|
|
return;
|
|
internals.setMediaSessionRestrictions("video", "backgroundprocessplaybackrestricted");
|
|
|
|
let mutePromise = new Promise(resolve => track.onmute = resolve);
|
|
internals.applicationDidEnterBackground(true);
|
|
internals.setMediaStreamTrackMuted(track, true);
|
|
await mutePromise;
|
|
|
|
let counter = 100
|
|
while (!video.paused && --counter > 0)
|
|
await new Promise(resolve => setTimeout(resolve, 50));
|
|
assert_true(video.paused, "video paused");
|
|
|
|
let unmutePromise = new Promise(resolve => track.onunmute = resolve);
|
|
internals.applicationWillEnterForeground(false);
|
|
internals.setMediaStreamTrackMuted(track, false);
|
|
await unmutePromise;
|
|
|
|
counter = 100;
|
|
while (video.paused && --counter > 0)
|
|
await new Promise(resolve => setTimeout(resolve, 50));
|
|
assert_false(video.paused, "video resumed");
|
|
|
|
}, "MediaStream video should restart when going to foreground");
|
|
</script>
|
|
</body>
|
|
</html>
|