author | Alastor Wu <alwu@mozilla.com> |
Thu, 02 Jun 2016 11:08:24 +0800 | |
changeset 300265 | fb00e020862203e4a82f3551679066431c0f5da1 |
parent 300264 | 1d7eb0adafc69c70c285a7db7a9bf069889cf2ce |
child 300266 | efa464d5d11b2ede4d0e698b4ebced5782774e84 |
push id | 77883 |
push user | alwu@mozilla.com |
push date | Fri, 03 Jun 2016 02:40:16 +0000 |
treeherder | mozilla-inbound@efa464d5d11b [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | rillian |
bugs | 1276129 |
milestone | 49.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/dom/media/test/mochitest.ini +++ b/dom/media/test/mochitest.ini @@ -546,16 +546,17 @@ support-files = vbr.mp3 vbr.mp3^headers^ video-overhang.ogg video-overhang.ogg^headers^ vp9.webm vp9.webm^headers^ vp9cake.webm vp9cake.webm^headers^ + vttPositionAlign.vtt wave_metadata.wav wave_metadata.wav^headers^ wave_metadata_bad_len.wav wave_metadata_bad_len.wav^headers^ wave_metadata_bad_no_null.wav wave_metadata_bad_no_null.wav^headers^ wave_metadata_bad_utf8.wav wave_metadata_bad_utf8.wav^headers^ @@ -845,15 +846,16 @@ skip-if = toolkit == 'gonk' # bug 112884 [test_video_to_canvas.html] [test_video_in_audio_element.html] [test_videoDocumentTitle.html] [test_VideoPlaybackQuality.html] [test_VideoPlaybackQuality_disabled.html] [test_volume.html] [test_vttparser.html] [test_webvtt_disabled.html] +[test_webvtt_positionalign.html] # The tests below contain backend-specific tests. Write backend independent # tests rather than adding to this list. [test_can_play_type_webm.html] [test_can_play_type_wave.html] [test_fragment_noplay.html] [test_fragment_play.html]
--- a/dom/media/test/test_texttrackcue.html +++ b/dom/media/test/test_texttrackcue.html @@ -154,40 +154,24 @@ SpecialPowers.pushPrefEnv({"set": [["med cue.lineAlign = "middle"; is(cue.lineAlign, "middle", "Cue's line align should be middle."); cue.lineAlign = "START"; is(cue.lineAlign, "middle", "Cue's line align should be middle."); cue.lineAlign = "end"; is(cue.lineAlign, "end", "Cue's line align should be end."); // Check that cue position align works properly - is(cue.positionAlign, "middle", "Cue's default position alignment should be middle."); - - var exceptionHappened = false; - try { - cue.positionAlign = "left"; - } catch(e) { - exceptionHappened = true; - is(e.name, "SyntaxError", "Should have thrown SyntaxError."); - } - ok(exceptionHappened, "Exception should have happened."); + is(cue.positionAlign, "center", "Cue's default position alignment should be center."); - exceptionHappened = false; - try { - cue.positionAlign = "right"; - } catch(e) { - exceptionHappened = true; - is(e.name, "SyntaxError", "Should have thrown SyntaxError."); - } - ok(exceptionHappened, "Exception should have happened."); - - cue.positionAlign = "start"; - is(cue.positionAlign, "start", "Cue's position align should be start."); - cue.positionAlign = "end"; - is(cue.positionAlign, "end", "Cue's position align should be end."); + cue.positionAlign = "line-left"; + is(cue.positionAlign, "line-left", "Cue's position align should be line-left."); + cue.positionAlign = "auto"; + is(cue.positionAlign, "auto", "Cue's position align should be auto."); + cue.positionAlign = "line-right"; + is(cue.positionAlign, "line-right", "Cue's position align should be line-right."); // Check cue.line is(cue.line, "auto", "Cue's line value should initially be auto."); cue.line = 12410 is(cue.line, 12410, "Cue's line value should now be 12410."); cue.line = "auto"; is(cue.line, "auto", "Cue's line value should now be auto.");
new file mode 100644 --- /dev/null +++ b/dom/media/test/test_webvtt_positionalign.html @@ -0,0 +1,95 @@ +<!DOCTYPE HTML> +<html> +<head> + <meta charset='utf-8'> + <title>WebVTT : position align test</title> + <script type="text/javascript" src="/MochiKit/MochiKit.js"></script> + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> +</head> +<body> +<div id="content"> +</div> +<script class="testbody" type="text/javascript"> +SimpleTest.waitForExplicitFinish(); + +var video = document.createElement("video"); +var trackElement = document.createElement("track"); +var cuesNumber = 8; + +function isTrackElemenLoaded() { + // Re-que isTrackElemenLoaded() at the end of the event loop until the track + // element has loaded its data. + if (trackElement.readyState == 1) { + setTimeout(isTrackElemenLoaded, 0); + return; + } + + is(trackElement.readyState, 2, "Track::ReadyState should be set to LOADED."); + runTest(); +} + +function runTest() { + info("--- check cues number ---"); + var cues = trackElement.track.cues; + is(cues.length, cuesNumber, "Cues number is correct."); + + info("--- check the typedef of TextTrackCue and VTTCue ---"); + isnot(window.TextTrackCue, undefined, "TextTrackCue should be defined."); + isnot(window.VTTCue, undefined, "VTTCue should be defined."); + + info("--- check the type of first parsed cue ---"); + ok(cues[0] instanceof TextTrackCue, "Cue should be an instanceof TextTrackCue."); + ok(cues[0] instanceof VTTCue, "Cue should be an instanceof VTTCue."); + + info("--- check the cue's position alignment ---"); + is(cues[0].positionAlign, "center", cues[0].text); + is(cues[1].positionAlign, "line-left", cues[1].text); + is(cues[2].positionAlign, "center", cues[2].text); + is(cues[3].positionAlign, "line-right", cues[3].text); + is(cues[4].positionAlign, "auto", cues[4].text); + + info("--- check the cue's computed position alignment ---"); + // The "computedPositionAlign" is the chrome-only attributes, we need to get + // the chrome privilege for cues. + cuesChrome = SpecialPowers.wrap(cues); + is(cuesChrome[5].computedPositionAlign, "line-left", cuesChrome[5].text); + is(cuesChrome[6].computedPositionAlign, "line-right", cuesChrome[6].text); + is(cuesChrome[7].computedPositionAlign, "center", cuesChrome[7].text); + + info("--- check the cue's computed position alignment from DOM API ---"); + is(cuesChrome[0].computedPositionAlign, "center", "Cue's computedPositionAlign align is center."); + + cuesChrome[0].positionAlign = "auto"; + is(cuesChrome[0].positionAlign, "auto", "Change cue's position align to \"auto\""); + + cuesChrome[0].align = "left"; + is(cuesChrome[0].align, "left", "Change cue's align to \"left\"."); + + is(cuesChrome[0].computedPositionAlign, "line-left", "Cue's computedPositionAlign becomes to \"line-left\""); + + info("--- finish test ---"); + SimpleTest.finish(); +} + +function setupTest() { + info("--- setup test ---"); + video.src = "seek.webm"; + video.preload = "auto"; + + trackElement.src = "vttPositionAlign.vtt"; + trackElement.kind = "subtitles"; + trackElement.default = true; + + document.getElementById("content").appendChild(video); + video.appendChild(trackElement); + video.addEventListener("loadedmetadata", function() { + video.removeEventListener("loadedmetadata", runTest); + isTrackElemenLoaded(); + }); +} + +onload = setupTest; +</script> +</body> +</html>
new file mode 100644 --- /dev/null +++ b/dom/media/test/vttPositionAlign.vtt @@ -0,0 +1,25 @@ +WEBVTT + +00:00.000 --> 00:00.500 +Cue 0 : PositionAlign should be "center". + +00:00.700 --> 00:00.800 position:50%,line-left +Cue 1 : PositionAlign should be "line-left". + +00:00.700 --> 00:00.800 position:50%,center +Cue 2 : PositionAlign should be "center". + +00:00.700 --> 00:00.800 position:50%,line-right +Cue 3 : PositionAlign should be "line-right". + +00:00.700 --> 00:00.800 position:50%,auto +Cue 4 : PositionAlign should be "auto" + +00:00.700 --> 00:00.800 position:50%,auto align:left +Cue 5 : PositionAlign should be "auto", but computedPositionAlign should be "line-left". + +00:00.700 --> 00:00.800 position:50%,auto align:right +Cue 6 : PositionAlign should be "auto", but computedPositionAlign should be "line-right". + +00:00.700 --> 00:00.800 position:50%,auto align:middle +Cue 7 : PositionAlign should be "auto", but computedPositionAlign should be "center". \ No newline at end of file