| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
| |
| <script src=../../media-file.js></script> |
| <script src=../../video-test.js></script> |
| <script> |
| var testTrack; |
| var region; |
| var regions; |
| var updatedRegion; |
| |
| function startTest() |
| { |
| testTrack = document.getElementsByTagName('track')[0]; |
| |
| consoleWrite("<br>** Implicit mode disabled and the regions attribute is null **"); |
| testExpected("testTrack.track.mode", "disabled"); |
| testExpected("testTrack.track.regions", null); |
| |
| testTrack.track.mode = "hidden"; |
| regions = testTrack.track.regions; |
| |
| consoleWrite("<br>** The regions attribute should be an empty VTTRegionList **"); |
| testExpected("regions != null", true); |
| testExpected("regions.length", 0); |
| |
| region = new VTTRegion(); |
| region.id = "TestId"; |
| |
| consoleWrite("<br>** The default value of the track attribute of the region is null**"); |
| testExpected("region.track", null); |
| |
| testTrack.track.addRegion(region); |
| |
| consoleWrite("<br>** The addRegion() method properly updates the VTTRegionList object **"); |
| testExpected("regions.length", 1); |
| testExpected("regions[0] == region", true); |
| testExpected("regions[0].track == testTrack.track", true); |
| |
| consoleWrite("<br>** The track attribute should correctly reflect the track to which the region was added to**"); |
| testExpected("region.track == testTrack.track", true); |
| |
| updatedRegion = new VTTRegion(); |
| updatedRegion.id = region.id; |
| updatedRegion.viewportAnchorX = 59; |
| updatedRegion.viewportAnchorY = 68; |
| updatedRegion.regionAnchorX = 20; |
| updatedRegion.regionAnchorY = 30; |
| updatedRegion.lines = 5; |
| updatedRegion.width = 87; |
| updatedRegion.scroll = "up"; |
| |
| consoleWrite("<br>** Adding a region with an existing id should update the existing region **"); |
| testTrack.track.addRegion(updatedRegion); |
| testExpected("regions[0].viewportAnchorX", updatedRegion.viewportAnchorX); |
| testExpected("regions[0].viewportAnchorY", updatedRegion.viewportAnchorY); |
| testExpected("regions[0].regionAnchorX", updatedRegion.regionAnchorX); |
| testExpected("regions[0].regionAnchorY", updatedRegion.regionAnchorY); |
| testExpected("regions[0].lines", updatedRegion.lines); |
| testExpected("regions[0].width", updatedRegion.width); |
| testExpected("regions[0].scroll", updatedRegion.scroll); |
| |
| testExpected("regions[0] != updatedRegion", true); |
| |
| consoleWrite("<br>** Add the region back and check if removeRegion() removes it properly **"); |
| testTrack.track.addRegion(region); |
| testExpected("regions.length", 1); |
| testTrack.track.removeRegion(region); |
| testExpected("regions.length", 0); |
| |
| consoleWrite("<br>** In case the region is not found, NotFoundError should be thrown **"); |
| try { |
| testTrack.track.removeRegion(region); |
| } catch(e) { |
| consoleWrite(e); |
| } |
| |
| // FIXME(109818): Update test for multiple initial regions (after parsing is supported). |
| |
| consoleWrite(""); |
| endTest(); |
| } |
| |
| function startTestWithDelay() |
| { |
| setTimeout(startTest, 100); |
| } |
| </script> |
| </head> |
| <body onload="startTestWithDelay()"> |
| <p>Tests VTTRegionList functionality: length, operator[], and getRegionById()</p> |
| <video> |
| <track id="testTrack" src="../captions-webvtt/captions-fast.vtt"> |
| </video> |
| </body> |
| </html> |