blob: 6831443ac3101aca4710315793e6355bb33d3d74 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../js/resources/js-test-pre.js"></script>
</head>
<body>
<script type="text/javascript">
description('Test the SpeechRecognitionResult.emma attribute.');
function run() {
// Check availability of constructors.
shouldBeTrue("'webkitSpeechRecognition' in self");
shouldBeFalse("webkitSpeechRecognition == null");
emmaTest();
}
function emmaTest() {
var r = new webkitSpeechRecognition();
// Set default handlers.
for (var prop in r) {
if (prop.match('^on')) {
r[prop] = function() { debug('on' + event.type); }
}
}
r.onresult = function() {
debug('onresult');
shouldBe('event.result.emma.childNodes.length', '1');
shouldBeEqualToString('event.result.emma.firstChild.nodeName', 'emma:emma');
evalAndLog('window.emma = event.result.emma.firstChild');
shouldBeEqualToString('emma.getAttribute("version")', '1.0');
shouldBe('emma.childNodes.length', '1');
shouldBeEqualToString('emma.firstChild.nodeName', 'emma:one-of');
evalAndLog('window.oneof = emma.firstChild');
evalAndLog("window.emmaNs = 'http://www.w3.org/2003/04/emma'");
shouldBeEqualToString('oneof.getAttribute("emma:medium")', 'acoustic');
shouldBeEqualToString('oneof.getAttributeNS(emmaNs, "medium")', 'acoustic');
shouldBeEqualToString('oneof.getAttribute("emma:mode")', 'voice');
shouldBeEqualToString('oneof.getAttributeNS(emmaNs, "mode")', 'voice');
shouldBe('oneof.childNodes.length', '1');
shouldBeEqualToString('oneof.firstChild.nodeName', 'emma:interpretation');
evalAndLog('window.interpretation = oneof.firstChild');
shouldBeEqualToString('interpretation.getAttribute("id")', '1');
shouldBeEqualToString('interpretation.getAttribute("emma:confidence")', '0.42');
shouldBeEqualToString('interpretation.getAttributeNS(emmaNs, "confidence")', '0.42');
shouldBe('interpretation.getElementsByTagName("literal").length', '1');
evalAndLog('window.literal = interpretation.getElementsByTagName("literal")[0]');
shouldBe('literal.childNodes.length', '1');
shouldBeEqualToString('literal.firstChild.data', 'hello, world');
// Test that SpeechRecognitionResult keeps emma's DOM tree alive.
debug("\nTest that emma's DOM tree stays alive:");
evalAndLog('window.emma = null');
evalAndLog('window.oneof = null');
evalAndLog('window.interpretation = null');
evalAndLog('window.literal = null');
evalAndLog('event.result.emma.customProperty = 42');
evalAndLog('gc()');
shouldBe('event.result.emma.customProperty', '42');
}
r.onend = function() {
debug('onend');
finishJSTest();
}
if (window.testRunner) {
testRunner.addMockSpeechRecognitionResult('hello, world', 0.42);
}
r.start();
}
window.onload = run;
window.jsTestIsAsync = true;
</script>
<script src="../../js/resources/js-test-post.js"></script>
</body>
</html>