Source code

Revision control

Other Tools

Test Info: Warnings

  • This test gets skipped with pattern: (os == "win" && processor == "aarch64")
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Test returning metadata from media files with mozGetMetadata()</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
<script type="text/javascript" src="manifest.js"></script>
</head>
<body>
<pre id="test">
<div id="output"></div>
<script class="testbody" type="text/javascript">
var manager = new MediaTestManager;
function startTest(test, token) {
var a = document.createElement('audio');
a.preload = "metadata";
a.token = token;
manager.started(token);
a.src = test.name;
a.name = test.name;
// Tags should not be available immediately.
var exception_fired = false;
try {
a.mozGetMetadata();
} catch (e) {
is(e.name, 'InvalidStateError',
"early mozGetMetadata() should throw InvalidStateError");
exception_fired = true;
}
ok(exception_fired,
"mozGetMetadata() should throw an exception before HAVE_METADATA");
// Wait until metadata has loaded.
a.addEventListener('loadedmetadata', function() {
// read decoded tags
let tags = a.mozGetMetadata();
ok(tags, "mozGetMetadata() should return a truthy value");
// Dump them out.
var d = document.getElementById('output');
var html = '<table>\n';
html += '<caption><p>Called getMozMetadata()'
html += ' on '+test.name+'</p></caption>\n';
html += '<tr><th>tag</th>';
html += '<th>decoded value</th><th>expected value</th></tr>\n';
for (let tag in tags) {
html += '<tr><td>'+tag+'</td>';
html += '<td>'+tags[tag]+'</td>';
html += '<td>'+test.tags[tag]+'</td>';
html += '</tr>\n';
}
if (!Object.keys(tags).length) {
html += '<tr><td colspan=3 align=center><em>no tags</em></td></tr>\n';
}
html += '</table>\n';
var div = document.createElement('div');
// eslint-disable-next-line no-unsanitized/property
div.innerHTML = html;
d.appendChild(div);
// Verify decoded tag values.
for (let tag in tags) {
is(tags[tag], test.tags[tag], "Tag '"+tag+"' should match");
}
// Verify expected tag values
for (let tag in test.tags) {
is(tags[tag], test.tags[tag], "Tag '"+tag+"' should match");
}
removeNodeAndSource(a);
manager.finished(token);
});
}
manager.runTests(gMetadataTests, startTest);
</script>
</pre>
</body>
</html>