<!DOCTYPE HTML>
<html>
<head>
  <script type="application/javascript" src="mediaStreamPlayback.js"></script>
</head>
<body>
<pre id="test">
<script type="application/javascript">
  createHTML({
    title: "getUserMedia fake stream with Cubeb Disabled Test",
    bug: "1443525"
  });
  /**
   * Run a test to verify we can still return a fake stream even if we cannot
   * get a cubeb context. See also Bug 1434477
   */
  runTest(async function () {
    info("Get user media with cubeb disabled and fake tracks starting");
    // Push prefs to ensure no cubeb context and fake streams
    await pushPrefs(["media.cubeb.force_null_context", true],
                    ["media.navigator.streams.fake", true],
                    ['media.audio_loopback_dev', '']);
    let testAudio = createMediaElement('audio', 'testAudio');
    // Request audio only, to avoid cams
    let constraints = {audio: true, video: false};
    let stream;
    try {
      stream = await getUserMedia(constraints);
    } catch (e) {
      // We've got no audio backend, so we expect gUM to fail
      ok(false, `Did not expect to fail, but got ${e}`);
      return;
    }
    ok(stream, "getUserMedia should get a stream!");
    let playback = new MediaStreamPlayback(testAudio, stream);
    return playback.playMedia(false);
  });


</script>
</pre>
</body>
</html>
