DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Mercurial (cdf352f02ac4)

VCS Links

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
<!DOCTYPE HTML>
<html>
<head>
  <title>Test for AudioWorklet</title>
  <script src="/tests/SimpleTest/SimpleTest.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
  <script type="application/javascript" src="common.js"></script>
</head>
<body>

<script type="application/javascript">

function configureTest() {

  var expected_errors = [
    "TypeError: AudioWorkletGlobalScope.registerProcessor: Argument 2 is not a constructor.",
    "NotSupportedError: AudioWorkletGlobalScope.registerProcessor: Argument 1 should not be an empty string.",
    "TypeError: AudioWorkletGlobalScope.registerProcessor: Argument 2 is not an object.",
    "TypeError: AudioWorkletGlobalScope.registerProcessor: Element 0 in parameterDescriptors can't be converted to a dictionary.",
    "NotSupportedError: AudioWorkletGlobalScope.registerProcessor: Argument 1 is invalid: a class with the same name is already registered.",
    "TypeError: AudioWorkletGlobalScope.registerProcessor: Missing required 'name' member of AudioParamDescriptor.",
    "TypeError: AudioWorkletGlobalScope.registerProcessor: 'defaultValue' member of AudioParamDescriptor is not a finite floating-point value.",
    "TypeError: AudioWorkletGlobalScope.registerProcessor: 'minValue' member of AudioParamDescriptor is not a finite floating-point value.",
    "TypeError: AudioWorkletGlobalScope.registerProcessor: 'maxValue' member of AudioParamDescriptor is not a finite floating-point value.",
    "NotSupportedError: AudioWorkletGlobalScope.registerProcessor: Duplicated name \"test\" in parameterDescriptors.",
    "TypeError: AudioWorkletGlobalScope.registerProcessor: Element 0 in parameterDescriptors can't be converted to a dictionary.",
    "InvalidStateError: AudioWorkletGlobalScope.registerProcessor: In parameterDescriptors, test defaultValue is out of the range defined by minValue and maxValue.",
    "InvalidStateError: AudioWorkletGlobalScope.registerProcessor: In parameterDescriptors, test defaultValue is out of the range defined by minValue and maxValue.",
    "InvalidStateError: AudioWorkletGlobalScope.registerProcessor: In parameterDescriptors, test minValue should be smaller than maxValue.",
    ];

  var expected_errors_i = 0;

  function consoleListener() {
    SpecialPowers.addObserver(this, "console-api-log-event");
  }

  consoleListener.prototype  = {
    observe(aSubject, aTopic, aData) {
      if (aTopic == "console-api-log-event") {
        var obj = aSubject.wrappedJSObject;
        if (obj.arguments[0] == expected_errors[expected_errors_i]) {
          ok(true, "Expected error received: " + obj.arguments[0]);
          expected_errors_i++;
        }

        if (expected_errors_i == expected_errors.length) {
          // All errors have been received, this test has been completed
          // succesfully!
          SpecialPowers.removeObserver(this, "console-api-log-event");
          SimpleTest.finish();
          return;
        }
      }
    }
  }

  var cl = new consoleListener();

  return SpecialPowers.pushPrefEnv(
    {"set": [["dom.audioworklet.enabled", true],
             ["dom.worklet.enabled", true]]});
}

// This function is called into an iframe.
function runTestInIframe() {
  ok(window.isSecureContext, "Test should run in secure context");
  var audioContext = new AudioContext();
  ok(audioContext.audioWorklet instanceof AudioWorklet,
     "AudioContext.audioWorklet should be an instance of AudioWorklet");
  audioContext.audioWorklet.addModule("worklet_test_audioWorkletGlobalScopeRegisterProcessor.js")
}
</script>
</body>
</html>