Index: third_party/WebKit/LayoutTests/media/track/track-cue-rendering-snap-to-lines-not-set.html |
diff --git a/third_party/WebKit/LayoutTests/media/track/track-cue-rendering-snap-to-lines-not-set.html b/third_party/WebKit/LayoutTests/media/track/track-cue-rendering-snap-to-lines-not-set.html |
index 68e96d9a35d077a97f3fc2531e3969b10afbb94c..33725d49d2cb694fe5109d25c2ef792ca3161dfe 100644 |
--- a/third_party/WebKit/LayoutTests/media/track/track-cue-rendering-snap-to-lines-not-set.html |
+++ b/third_party/WebKit/LayoutTests/media/track/track-cue-rendering-snap-to-lines-not-set.html |
@@ -1,103 +1,82 @@ |
<!DOCTYPE html> |
-<html> |
- <head> |
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
- |
- <script src=../media-file.js></script> |
- <!-- TODO(philipj): Convert test to testharness.js. crbug.com/588956 |
- (Please avoid writing new tests using video-test.js) --> |
- <script src=../video-test.js></script> |
- <script src=../media-controls.js></script> |
- |
- <script> |
- |
- var testTrack; |
- var cueDisplayElement; |
- var cueDisplayContainer; |
- var controlsPanelElement; |
- var seekedCount = 0; |
- |
- var testCaseDescription = [ |
- "Default", |
- "Center", |
- "Top left", |
- "Top right", |
- "Bottom right", |
- "Bottom left", |
- "Bottom center", |
- "Multiple cues" |
- ]; |
- |
- var testCaseSeekTime = [ |
- 0.10, |
- 0.60, |
- 1.10, |
- 1.60, |
- 2.10, |
- 2.60, |
- 3.10, |
- 4.10 |
- ]; |
- |
- var currentTestCase = 0; |
- |
- function seeked() |
- { |
- consoleWrite("Active cues: " + testTrack.track.activeCues.length); |
- for (var i = 0; i < testTrack.track.activeCues.length; ++i) { |
- cueDisplayElement = textTrackDisplayElement(video, 'display', i); |
- |
- consoleWrite(""); |
- consoleWrite("* Cue " + i + " *"); |
- testExpected("cueDisplayElement.innerText", testTrack.track.activeCues[i].text); |
- consoleWrite("Cue alignment (default or as specified): " + testTrack.track.activeCues[i].align); |
- |
- consoleWrite("Cue left position (percentage): " + Math.round(cueDisplayElement.offsetLeft / cueDisplayContainer.offsetWidth * 100)); |
- consoleWrite("Cue top position (percentage): " + Math.round(cueDisplayElement.offsetTop / cueDisplayContainer.offsetHeight * 100)); |
- } |
- |
- runNextTestCase(); |
- }; |
- |
- function runNextTestCase() |
- { |
- if (currentTestCase == testCaseDescription.length) { |
- endTest(); |
- return; |
- } |
- |
- consoleWrite(""); |
- consoleWrite("** " + testCaseDescription[currentTestCase] + " **"); |
- |
- video.currentTime = testCaseSeekTime[currentTestCase]; |
- waitForEvent('seeked', seeked, false, true); |
- |
- currentTestCase++; |
+<title>Test that TextTrack's cues are rendered correctly when the snap to lines flag is not set.</title> |
+<script src="../media-file.js"></script> |
+<script src="../media-controls.js"></script> |
+<script src="../../resources/testharness.js"></script> |
+<script src="../../resources/testharnessreport.js"></script> |
+<video> |
+ <track src="captions-webvtt/captions-snap-to-lines-not-set.vtt" kind="captions" default> |
+</video> |
+<script> |
+async_test(function(t) { |
+ var video = document.querySelector("video"); |
+ var testTrack = document.querySelector("track"); |
+ video.src = findMediaFile("video", "../content/test"); |
+ |
+ // In Chromium it is the enclosure element, which provides the controls height, otherwise the panel; |
+ // both are the second child in the shadow DOM. |
+ var controlsPanelElement = internals.shadowRoot(video).firstChild.firstChild; |
+ |
+ var cueDisplayContainer; |
+ video.oncanplaythrough = t.step_func(function() { |
+ cueDisplayContainer = textTrackDisplayElement(video); |
+ runNextTestCase(); |
+ }); |
+ |
+ var seekTimeIndex = 0; |
+ var testCaseSeekTime = [ |
+ 0.10, |
+ 0.60, |
+ 1.10, |
+ 1.60, |
+ 2.10, |
+ 2.60, |
+ 3.10, |
+ 4.10 |
+ ]; |
+ var cueRenderingPosition = [ |
+ // Number of active cues 1. |
+ [[0 ,100, "middle"]], |
+ [[0, 50, "middle"]], |
+ [[0, 0, "start"]], |
+ [[0, 0, "end"]], |
+ [[0, 100, "right"]], |
+ [[0, 100, "left"]], |
+ [[0, 50, "middle"]], |
+ [ //Number of active cues 7. |
+ [0, 50, "middle"], |
+ [0, 0, "start"], |
+ [0, 0, "end"], |
+ [0, 100, "middle"], |
+ [0, 25, "end"], |
+ [44, 33, "start"], |
+ [23, 55, "start"] |
+ ] |
+ ]; |
+ function runNextTestCase() { |
+ if (seekTimeIndex == testCaseSeekTime.length) { |
+ t.done(); |
+ return; |
} |
- function loaded() |
- { |
- consoleWrite("Test that TextTrack's cues are rendered correctly when the snap to lines flag is not set."); |
+ video.currentTime = testCaseSeekTime[seekTimeIndex]; |
+ video.onseeked = t.step_func(seeked); |
+ } |
- findMediaElement(); |
- testTrack = document.querySelector('track'); |
- video.src = findMediaFile('video', '../content/test'); |
+ function seeked() { |
+ var cuePosition = cueRenderingPosition[seekTimeIndex]; |
+ for (var i = 0; i < testTrack.track.activeCues.length; ++i) { |
+ cueDisplayElement = textTrackDisplayElement(video, "display", i); |
- // In Chromium it is the enclosure element, which provides the controls height, otherwise the panel; |
- // both are the second child in the shadow DOM. |
- controlsPanelElement = internals.shadowRoot(video).firstChild.firstChild; |
+ assert_equals(cueDisplayElement.innerText, testTrack.track.activeCues[i].text); |
+ assert_equals(testTrack.track.activeCues[i].align, cuePosition[i][2]); |
- waitForEventOnce('canplaythrough', function() { |
- cueDisplayContainer = textTrackDisplayElement(video); |
- runNextTestCase(); |
- }); |
+ assert_equals(Math.round(cueDisplayElement.offsetLeft / cueDisplayContainer.offsetWidth * 100), cuePosition[i][0]); |
+ assert_equals(Math.round(cueDisplayElement.offsetTop / cueDisplayContainer.offsetHeight * 100), cuePosition[i][1]); |
} |
- </script> |
- </head> |
- <body onload="loaded()"> |
- <video controls> |
- <track src="captions-webvtt/captions-snap-to-lines-not-set.vtt" kind="captions" default> |
- </video> |
- </body> |
-</html> |
+ seekTimeIndex++; |
+ runNextTestCase(); |
+ } |
+}); |
+</script> |