<!
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 =
'\n';
html += 'Called getMozMetadata()'
html += ' on '+test.name+'\n';
html += '| tag | ';
html += 'decoded value | expected value |
\n';
for (let tag in tags) {
html += '| '+tag+' | ';
html += ''+tags[tag]+' | ';
html += ''+test.tags[tag]+' | ';
html += '
\n';
}
if (!Object.keys(tags).length) {
html += '| no tags |
\n';
}
html += '
\n';
var div = document.createElement(
'div');
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>