<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
    <head>
        <script src="../../resources/js-test-pre.js"></script>
    </head>
    <body>
        <script>
            description("Tests the RTCPeerConnection stats selector argument.");

            var pc = null;
            var result;
            var timestamp;
            var local;

            function statsError()
            {
                testFailed("Error in getStats.")
                finishJSTest();
            }

            function error() {
                testFailed('Stream generation failed.');
                finishJSTest();
            }

            async function gotStream(s) {
                testPassed('Got a stream.');
                stream = s;

                const sender = pc.addTrack(stream.getVideoTracks()[0], stream);
                var offer = await pc.createOffer();
                await pc.setLocalDescription(offer);
                // FIXME: Test getStats error callback: https://webkit.org/b/129860
                pc.getStats(sender.track).then(statsHandler2, statsError);
            }

            function statsHandler2(r)
            {
                result = r;
                testPassed("statsHandler2 was called");
                shouldBeGreaterThanOrEqual('result.size', '1');
                local = result.get(result.keys().next().value);
                timestamp = local.timestamp;
                shouldBeGreaterThanOrEqual('timestamp', 'startTime');
                shouldBe('local.type', '"video"');
                finishJSTest();
            }

            var startTime = new Date().getTime();
            shouldNotThrow("pc = new RTCPeerConnection({iceServers:[{urls:'stun:foo.com'}]})");
            shouldNotThrow('navigator.mediaDevices.getUserMedia({audio:true, video:true}).then(gotStream, error)');

            window.jsTestIsAsync = true;
            window.successfullyParsed = true;
        </script>
        <script src="../../resources/js-test-post.js"></script>
    </body>
</html>
