blob: bba031364facf6c05514c86fc635da5ed73325ae [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src=../../media-controls.js></script>
<script src=../../media-file.js></script>
<script src=../../video-test.js></script>
<script>
var testTrack;
var region;
var container;
var totalVisibleLines;
var seekTimes = [0.2, 0.5, 1.0, 2.3, 3.0];
var crtSeekTime = 0;
function countVisibleLines(cueElement)
{
var cueRect = cueElement.getBoundingClientRect();
var regionRect = region.getBoundingClientRect();
var linesMatch = cueElement.textContent.match(/\n/g);
var linesCount = 1 + (linesMatch == null ? 0 : linesMatch.length);
var lineHeight = cueRect.height / linesCount;
var visibleLines = 0;
for (i = 0; i < linesCount; ++i) {
var lineTop = cueRect.top + i * lineHeight;
var lineBottom = cueRect.top + (i+1) * lineHeight;
if (lineTop >= regionRect.top && lineBottom <= regionRect.bottom)
visibleLines++;
}
return visibleLines;
}
function testRegionsDisplay()
{
testTrack = video.textTracks[0];
consoleWrite("** The text track has only one region **");
testExpected("testTrack.regions.length", 1);
try {
region = textTrackDisplayElement(video, 'region');
container = textTrackDisplayElement(video, 'region-container');
} catch(e) {
consoleWrite(e);
}
consoleWrite("<br>** Inspecting cues displayed within region**");
waitForEvent("seeked", inspectRegionTree);
seekVideo();
}
function seekVideo()
{
consoleWrite("");
run("video.currentTime = " + seekTimes[crtSeekTime++]);
}
function inspectRegionTree()
{
consoleWrite("Total cues in region: " + container.children.length);
totalVisibleLines = 0;
for (var i = 0; i < container.children.length; ++i) {
var cue = container.children[i];
var cueVisibleLines = countVisibleLines(cue);
consoleWrite("Cue content is: " + cue.textContent);
consoleWrite("Cue lines visible from this cue: " + cueVisibleLines);
totalVisibleLines += cueVisibleLines;
}
testExpected("totalVisibleLines <= testTrack.regions[0].lines", true);
if (crtSeekTime == seekTimes.length)
endTest();
else
seekVideo();
}
function startTest()
{
if (!window.VTTRegion) {
failTest();
return;
}
findMediaElement();
video.src = findMediaFile('video', '../../content/test');
waitForEvent('canplaythrough', testRegionsDisplay);
}
setCaptionDisplayMode('Automatic');
</script>
</head>
<body>
<p>Tests default rendering for TextTrackCues that belong to a VTTRegion.</p>
<video controls>
<track src="../captions-webvtt/captions-regions.vtt" kind="captions" default onload="startTest()">
</video>
</body>
</html>