test_metadata.html (2373B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>Test returning metadata from media files with mozGetMetadata()</title> 6 <script src="/tests/SimpleTest/SimpleTest.js"></script> 7 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 8 <script type="text/javascript" src="manifest.js"></script> 9 </head> 10 <body> 11 <pre id="test"> 12 <div id="output"></div> 13 <script class="testbody" type="text/javascript"> 14 15 var manager = new MediaTestManager; 16 17 function startTest(test, token) { 18 var a = document.createElement('audio'); 19 a.preload = "metadata"; 20 a.token = token; 21 manager.started(token); 22 23 a.src = test.name; 24 a.name = test.name; 25 26 // Tags should not be available immediately. 27 var exception_fired = false; 28 try { 29 a.mozGetMetadata(); 30 } catch (e) { 31 is(e.name, 'InvalidStateError', 32 "early mozGetMetadata() should throw InvalidStateError"); 33 exception_fired = true; 34 } 35 ok(exception_fired, 36 "mozGetMetadata() should throw an exception before HAVE_METADATA"); 37 38 // Wait until metadata has loaded. 39 a.addEventListener('loadedmetadata', function() { 40 // read decoded tags 41 let tags = a.mozGetMetadata(); 42 ok(tags, "mozGetMetadata() should return a truthy value"); 43 // Dump them out. 44 var d = document.getElementById('output'); 45 var html = '<table>\n'; 46 html += '<caption><p>Called getMozMetadata()' 47 html += ' on '+test.name+'</p></caption>\n'; 48 html += '<tr><th>tag</th>'; 49 html += '<th>decoded value</th><th>expected value</th></tr>\n'; 50 for (let tag in tags) { 51 html += '<tr><td>'+tag+'</td>'; 52 html += '<td>'+tags[tag]+'</td>'; 53 html += '<td>'+test.tags[tag]+'</td>'; 54 html += '</tr>\n'; 55 } 56 if (!Object.keys(tags).length) { 57 html += '<tr><td colspan=3 align=center><em>no tags</em></td></tr>\n'; 58 } 59 html += '</table>\n'; 60 var div = document.createElement('div'); 61 div.innerHTML = html; 62 d.appendChild(div); 63 // Verify decoded tag values. 64 for (let tag in tags) { 65 is(tags[tag], test.tags[tag], "Tag '"+tag+"' should match"); 66 } 67 // Verify expected tag values 68 for (let tag in test.tags) { 69 is(tags[tag], test.tags[tag], "Tag '"+tag+"' should match"); 70 } 71 removeNodeAndSource(a); 72 manager.finished(token); 73 }); 74 } 75 76 manager.runTests(gMetadataTests, startTest); 77 78 </script> 79 </pre> 80 </body> 81 </html>