<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src=../media-file.js></script>
    <script src=../video-test.js></script>
    <script src=../../resources/gc.js></script>
    <script>
    function trackAdded(event)
    {
        consoleWrite("EVENT(" + event.type + ")");
        video.videoTracks.onaddtrack = null;
        var track = event.track;
        track.enabled = false;
        video.src = "";
        video = null;
        setTimeout(function() {
            gc();
            track.enabled = !track.enabled;
            consoleWrite("PASS: Track is in valid state.");
            endTest();
        }, 0);
    }

    function setup()
    {
        findMediaElement();
        video.videoTracks.addEventListener("addtrack", trackAdded);
        video.src = findMediaFile('video', '../content/test');
    }
    </script>
</head>
<body onload="setup()">
    <video controls></video>
    <p>Test video track handling.</p>
</body>
</html>
