dino@apple.com | acaceda | 2012-11-27 23:45:13 +0000 | [diff] [blame] | 1 | <!DOCTYPE html> |
| 2 | <html> |
| 3 | <head> |
| 4 | <title>Selecting from a list of tracks</title> |
| 5 | <script src="media-controls.js"></script> |
| 6 | <script src="media-file.js"></script> |
| 7 | <script src="video-test.js"></script> |
dino@apple.com | de30ce2 | 2012-12-20 20:11:11 +0000 | [diff] [blame] | 8 | <script src="trackmenu-test.js"></script> |
dino@apple.com | acaceda | 2012-11-27 23:45:13 +0000 | [diff] [blame] | 9 | <script> |
dino@apple.com | acaceda | 2012-11-27 23:45:13 +0000 | [diff] [blame] | 10 | if (window.testRunner) |
| 11 | testRunner.dumpAsText(); |
| 12 | |
dino@apple.com | acaceda | 2012-11-27 23:45:13 +0000 | [diff] [blame] | 13 | function startTest() |
| 14 | { |
calvaris@igalia.com | 53ca547 | 2014-02-26 09:41:43 +0000 | [diff] [blame] | 15 | trackListElement = getTrackListElement(); |
| 16 | if (!trackListElement) |
| 17 | return; |
| 18 | testExpected("trackListElement.offsetHeight", 0, ">"); |
| 19 | |
eric.carlson@apple.com | 24a0ac4 | 2012-12-07 21:30:12 +0000 | [diff] [blame] | 20 | consoleWrite("<br>*** Add another text track."); |
| 21 | run('video.addTextTrack("captions", "Commentary", "ru")'); |
jer.noble@apple.com | 7f2f116 | 2013-08-01 20:34:20 +0000 | [diff] [blame] | 22 | showTrackMenu() |
dino@apple.com | de30ce2 | 2012-12-20 20:11:11 +0000 | [diff] [blame] | 23 | window.setTimeout(turnCaptionsOn, 100); |
eric.carlson@apple.com | 62bb7dc | 2013-03-20 20:13:36 +0000 | [diff] [blame] | 24 | consoleWrite(""); |
dino@apple.com | acaceda | 2012-11-27 23:45:13 +0000 | [diff] [blame] | 25 | } |
| 26 | |
jer.noble@apple.com | 7ebbbe3 | 2014-10-08 20:04:33 +0000 | [diff] [blame] | 27 | function captionTrackMenuList() |
dino@apple.com | acaceda | 2012-11-27 23:45:13 +0000 | [diff] [blame] | 28 | { |
dino@apple.com | de30ce2 | 2012-12-20 20:11:11 +0000 | [diff] [blame] | 29 | var trackListElement = getTrackListElement(); |
| 30 | if (!trackListElement) |
dino@apple.com | acaceda | 2012-11-27 23:45:13 +0000 | [diff] [blame] | 31 | return; |
dino@apple.com | 53a29d4 | 2013-02-05 08:03:22 +0000 | [diff] [blame] | 32 | // Track list should have a <ul> with <li> children (One of them is "Off"). |
dino@apple.com | acaceda | 2012-11-27 23:45:13 +0000 | [diff] [blame] | 33 | var trackList = trackListElement.querySelector("ul"); |
| 34 | if (!trackList) { |
| 35 | failTest("Could not find a child ul element in track list menu"); |
| 36 | return; |
| 37 | } |
dino@apple.com | acaceda | 2012-11-27 23:45:13 +0000 | [diff] [blame] | 38 | var trackListItems = trackList.querySelectorAll("li"); |
| 39 | if (!trackListItems) { |
dino@apple.com | de30ce2 | 2012-12-20 20:11:11 +0000 | [diff] [blame] | 40 | failTest("Could not find child li elements in track list menu"); |
dino@apple.com | acaceda | 2012-11-27 23:45:13 +0000 | [diff] [blame] | 41 | return; |
| 42 | } |
eric.carlson@apple.com | 24a0ac4 | 2012-12-07 21:30:12 +0000 | [diff] [blame] | 43 | |
| 44 | return trackListItems; |
| 45 | } |
| 46 | |
| 47 | function testMenu() |
| 48 | { |
jer.noble@apple.com | 7ebbbe3 | 2014-10-08 20:04:33 +0000 | [diff] [blame] | 49 | trackListItems = captionTrackMenuList(); |
eric.carlson@apple.com | 44f8c68 | 2013-04-04 22:23:47 +0000 | [diff] [blame] | 50 | var expectedItemCount = video.textTracks.length + 2; |
dino@apple.com | de30ce2 | 2012-12-20 20:11:11 +0000 | [diff] [blame] | 51 | consoleWrite("There should be " + expectedItemCount + " items in the menu."); |
eric.carlson@apple.com | 62bb7dc | 2013-03-20 20:13:36 +0000 | [diff] [blame] | 52 | testExpected("trackListItems.length", expectedItemCount); |
eric.carlson@apple.com | 24a0ac4 | 2012-12-07 21:30:12 +0000 | [diff] [blame] | 53 | } |
| 54 | |
| 55 | function selectCaptionMenuItem(index, nextStep) |
| 56 | { |
dino@apple.com | acaceda | 2012-11-27 23:45:13 +0000 | [diff] [blame] | 57 | // Click on the selected item |
jer.noble@apple.com | 7ebbbe3 | 2014-10-08 20:04:33 +0000 | [diff] [blame] | 58 | var trackListItems = captionTrackMenuList(); |
dino@apple.com | acaceda | 2012-11-27 23:45:13 +0000 | [diff] [blame] | 59 | var selectedTrackItem = trackListItems[index]; |
| 60 | var boundingRect = selectedTrackItem.getBoundingClientRect(); |
| 61 | var x = boundingRect.left + boundingRect.width / 2; |
| 62 | var y = boundingRect.top + boundingRect.height / 2; |
| 63 | eventSender.mouseMoveTo(x, y); |
| 64 | eventSender.mouseDown(); |
| 65 | eventSender.mouseUp(); |
eric.carlson@apple.com | 24a0ac4 | 2012-12-07 21:30:12 +0000 | [diff] [blame] | 66 | window.setTimeout(function() { testMenu(); nextStep(); }, 100); |
dino@apple.com | acaceda | 2012-11-27 23:45:13 +0000 | [diff] [blame] | 67 | } |
| 68 | |
| 69 | function turnCaptionsOn() |
| 70 | { |
| 71 | consoleWrite("*** Turning captions on"); |
eric.carlson@apple.com | 44f8c68 | 2013-04-04 22:23:47 +0000 | [diff] [blame] | 72 | // Click on the third item, which is the second track (Off is the first item, Automatic is second) |
| 73 | selectCaptionMenuItem(3, testCaptionsVisible); |
dino@apple.com | acaceda | 2012-11-27 23:45:13 +0000 | [diff] [blame] | 74 | } |
| 75 | |
| 76 | function testCaptionsVisible() |
| 77 | { |
eric.carlson@apple.com | 24a0ac4 | 2012-12-07 21:30:12 +0000 | [diff] [blame] | 78 | testExpected("video.textTracks.length", 4); |
eric.carlson@apple.com | 2519a00 | 2012-12-20 05:30:25 +0000 | [diff] [blame] | 79 | consoleWrite("Track 0 should be showing"); |
dino@apple.com | 53a29d4 | 2013-02-05 08:03:22 +0000 | [diff] [blame] | 80 | testExpected("video.textTracks[0].mode", "showing"); |
eric.carlson@apple.com | 2519a00 | 2012-12-20 05:30:25 +0000 | [diff] [blame] | 81 | consoleWrite("Track 1 should be disabled"); |
dino@apple.com | 53a29d4 | 2013-02-05 08:03:22 +0000 | [diff] [blame] | 82 | testExpected("video.textTracks[1].mode", "disabled"); |
dino@apple.com | acaceda | 2012-11-27 23:45:13 +0000 | [diff] [blame] | 83 | consoleWrite("Track 2 should be disabled"); |
| 84 | testExpected("video.textTracks[2].mode", "disabled"); |
eric.carlson@apple.com | 24a0ac4 | 2012-12-07 21:30:12 +0000 | [diff] [blame] | 85 | consoleWrite("Track 3 should be disabled"); |
| 86 | testExpected("video.textTracks[3].mode", "disabled"); |
dino@apple.com | acaceda | 2012-11-27 23:45:13 +0000 | [diff] [blame] | 87 | testExpected("textTrackDisplayElement(video, 'display').innerText", "Lorem"); |
eric.carlson@apple.com | 24a0ac4 | 2012-12-07 21:30:12 +0000 | [diff] [blame] | 88 | |
| 89 | consoleWrite("<br>*** Remove a track."); |
| 90 | run('video.removeChild(document.querySelectorAll("track")[0])'); |
| 91 | |
dino@apple.com | acaceda | 2012-11-27 23:45:13 +0000 | [diff] [blame] | 92 | clickCCButton(); |
| 93 | window.setTimeout(turnCaptionsOff, 100); |
| 94 | } |
| 95 | |
| 96 | function turnCaptionsOff() |
| 97 | { |
eric.carlson@apple.com | 24a0ac4 | 2012-12-07 21:30:12 +0000 | [diff] [blame] | 98 | consoleWrite("*** Turning captions off"); |
dino@apple.com | acaceda | 2012-11-27 23:45:13 +0000 | [diff] [blame] | 99 | selectCaptionMenuItem(0, testCaptionsDisabled); |
| 100 | } |
| 101 | |
| 102 | function testCaptionsDisabled() |
| 103 | { |
| 104 | testExpected("video.textTracks.length", 3); |
| 105 | consoleWrite("Track 0 should be disabled"); |
| 106 | testExpected("video.textTracks[0].mode", "disabled"); |
| 107 | consoleWrite("Track 1 should be disabled"); |
| 108 | testExpected("video.textTracks[1].mode", "disabled"); |
| 109 | consoleWrite("Track 2 should be disabled"); |
| 110 | testExpected("video.textTracks[2].mode", "disabled"); |
| 111 | testExpected("textTrackDisplayElement(video, 'display').innerText", "Lorem"); |
dino@apple.com | acaceda | 2012-11-27 23:45:13 +0000 | [diff] [blame] | 112 | endTest(); |
| 113 | } |
| 114 | |
| 115 | function start() |
| 116 | { |
| 117 | findMediaElement(); |
dino@apple.com | de30ce2 | 2012-12-20 20:11:11 +0000 | [diff] [blame] | 118 | video.src = findMediaFile('video', 'content/test'); |
| 119 | waitForEvent('canplaythrough', function () { startTrackMenuTest(startTest); }); |
dino@apple.com | acaceda | 2012-11-27 23:45:13 +0000 | [diff] [blame] | 120 | } |
| 121 | </script> |
| 122 | </head> |
| 123 | |
| 124 | <body onload="start()"> |
| 125 | <p>Test that we are able to trigger the list of captions, and select from the list.</p> |
| 126 | <video width="500" height="300" controls> |
eric.carlson@apple.com | 62bb7dc | 2013-03-20 20:13:36 +0000 | [diff] [blame] | 127 | <track kind="captions" src="track/captions-webvtt/captions-fast.vtt" srclang="fr"> |
dino@apple.com | acaceda | 2012-11-27 23:45:13 +0000 | [diff] [blame] | 128 | <track kind="captions" src="track/captions-webvtt/captions-fast.vtt" srclang="en"> |
dino@apple.com | acaceda | 2012-11-27 23:45:13 +0000 | [diff] [blame] | 129 | <track kind="captions" src="track/captions-webvtt/captions-fast.vtt" srclang="ja"> |
| 130 | </video> |
| 131 | </body> |
| 132 | </html> |
| 133 | |