<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Adapt camera track framerate</title>
    <script src="../../resources/testharness.js"></script>
    <script src="../../resources/testharnessreport.js"></script>
    <script src ="../../webrtc/routines.js"></script>
</head>
<body>
    <video autoplay id="video"></video>
    <script>
promise_test(async (t) => {
    const stream1 = await navigator.mediaDevices.getUserMedia({ video: { width: 720, frameRate : 30 } });
    const stream2 = await navigator.mediaDevices.getUserMedia({ video: { width: 160, frameRate : 5 } });

    // We adapt frame rate after 1 second of samples.
    await new Promise(resolve => setTimeout(resolve, 1000));

    if (!stream1.getVideoTracks()[0].muted) {
        const frameRate = await computeFrameRate(stream1, video);

        // On heavily loaded bots, our mock capture source might not be able to deliver 30 fps. Our test only makes sense if we have sufficient fps.
        if (frameRate <= 10)
            return;

        assert_greater_than(frameRate, 10, "stream1 frame rate above 10");
        assert_less_than(frameRate, 60, "stream1 frame rate below 60");
    }

    const frameRate = await computeFrameRate(stream2, video);
    assert_greater_than(frameRate, 1, "stream2 frame rate above 1");
    assert_less_than(frameRate, 10, "stream2 frame rate below 10");
}, "getUserMedia with decreasing frame rates");
    </script>
</body>
</html>
