<body>
<video id="localVideo" autoplay playsInline></video>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>

promise_test(async() => {
    if (!window.internals)
       return Promise.reject("Test requires internals API");

    if (!window.internals.supportsAudioSession)
        return;

    internals.settings.setShouldManageAudioSessionCategory(true);

    let stream = await navigator.mediaDevices.getUserMedia({audio : true});

    localVideo.srcObject = stream;
    await localVideo.play();

    assert_equals(internals.audioSessionCategory(), "PlayAndRecord");

    stream.getAudioTracks()[0].enabled = false;
    await new Promise(resolve => setTimeout(resolve, 10));
    assert_equals(internals.audioSessionCategory(), "PlayAndRecord");
}, "Check audio session state in case of disabled audio tracks");
</script>
</body>
