<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>SpeechRecognition.abort</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script src="webspeech.js"></script>
  </head>
  <body>
    <p><b>Instructions:</b> Do NOT speak. Run test in silence.
      This test may fail if too much noise.</p>
    <div id="log"></div>
    <div id="notes"></div>
    <script>
var audioTest = new CycleTest('onaudio');
reco.onaudiostart = audioTest.startEvent();
reco.onaudioend = audioTest.endEvent();

reco.onsoundstart = neverFireEvent('onsoundstart');
reco.onsoundend = neverFireEvent('onsoundend');
reco.onspeechstart = neverFireEvent('onspeechstart');
reco.onspeechend = neverFireEvent('onsspeechend');
reco.onresult = neverFireEvent('onresult');
reco.onnomatch = neverFireEvent('onnomatch');

var errorTest = new CountTest('onerror aborted', 1, 1);
reco.onerror = errorTest.test().step_func(function(event) {
  errorTest.count(1);
  assert_equals(typeof(event.message), 'string', 'typeof(event.message)');
  notes.innerHTML += 'onerror message is "' + event.message + '"' + '<br>';
  assert_equals(event.error, 'aborted', 'onerror event.error');
});

reco.start();

function beginTest() {
  audioTest.test.step_timeout(function() { reco.abort(); }, DELAY);
}
    </script>
  </body>
</html>

