blob: 5810714090eb49e009c023c410377d276766e1e8 [file] [log] [blame]
var captionsButtonCoordinates = null;
function clickCCButton()
{
if (!captionsButtonCoordinates) {
try {
captionsButtonCoordinates = mediaControlsButtonCoordinates(video, "toggle-closed-captions-button");
} catch (exception) {
failTest(exception.description);
return;
}
}
eventSender.mouseMoveTo(captionsButtonCoordinates[0], captionsButtonCoordinates[1]);
eventSender.mouseDown();
eventSender.mouseUp();
}
function startTrackMenuTest(testFunction)
{
if (window.eventSender) {
consoleWrite("<br>*** Set the user language preference.");
run("internals.setUserPreferredLanguages(['en'])");
clickCCButton();
window.setTimeout(testFunction, 100);
}
}
function getTrackListElement()
{
var trackListElement;
try {
trackListElement = mediaControlsElement(internals.shadowRoot(video).firstChild, "-webkit-media-controls-closed-captions-track-list");
} catch (exception) {
failTest(exception.description);
return null;
}
return trackListElement;
}
function trackMenuList()
{
trackListElement = getTrackListElement();
if (!trackListElement)
return;
// Track list should have a <ul> with <li> children.
var trackList = trackListElement.querySelector("ul");
if (!trackList) {
failTest("Could not find a child ul element in track list menu");
return;
}
var trackListItems = trackList.querySelectorAll("li");
if (!trackListItems) {
failTest("Could not find child li elements in track list menu");
return;
}
return trackListItems;
}
function indexOfMenuItemBeginningWith(title)
{
var trackMenuItems = trackMenuList();
for (i = 0; i < trackMenuItems.length; ++i) {
if (trackMenuItems[i].textContent.indexOf(title) == 0)
break;
}
return (i < trackMenuItems.length) ? i : -1;
}
function selectCaptionMenuItem(title)
{
var trackMenuItems = trackMenuList();
var index = indexOfMenuItemBeginningWith(title);
if (index < 0) {
failTest("Menu item " + title + " not found in track list menu.");
return;
}
consoleWrite("- click on '" + title + "' menu item.");
var selectedTrackItem = trackMenuItems[index];
var boundingRect = selectedTrackItem.getBoundingClientRect();
var x = boundingRect.left + boundingRect.width / 2;
var y = boundingRect.top + boundingRect.height / 2;
eventSender.mouseMoveTo(x, y);
eventSender.mouseDown();
eventSender.mouseUp();
}