WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-65884-20110823184058.patch (text/plain), 96.45 KB, created by
Anna Cavender
on 2011-08-23 18:41:00 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Anna Cavender
Created:
2011-08-23 18:41:00 PDT
Size:
96.45 KB
patch
obsolete
>Subversion Revision: 93670 >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 810e746bc40af17178163875b5f015334d5b85b0..f9fcb01374349ade40168214598240c108eeee92 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,72 @@ >+2011-08-23 Anna Cavender <annacc@chromium.org> >+ >+ Tests for validating a new WebVTT parser and tokenizer for TextTrackCue content. >+ https://bugs.webkit.org/show_bug.cgi?id=65884 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * media/track/captions/tc014_alignment.vtt: Added. >+ * media/track/captions/tc014_alignment_ltr.vtt: Added. >+ * media/track/captions/tc014_alignmentbad.vtt: Added. >+ * media/track/captions/tc015_positioning.vtt: Added. >+ * media/track/captions/tc015_positioning_ltr.vtt: Added. >+ * media/track/captions/tc015_positioningbad.vtt: Added. >+ * media/track/captions/tc016_align_positioning.vtt: Added. >+ * media/track/captions/tc016_align_positioningbad.vtt: Added. >+ * media/track/captions/tc017_linepos.vtt: Added. >+ * media/track/captions/tc017_lineposbad.vtt: Added. >+ * media/track/captions/tc018_align_text_linepos.vtt: Added. >+ * media/track/captions/tc018_align_text_lineposbad.vtt: Added. >+ * media/track/captions/tc019_cuesize.vtt: Added. >+ * media/track/captions/tc019_cuesizebad.vtt: Added. >+ * media/track/captions/tc020_cuesize_align.vtt: Added. >+ * media/track/captions/tc020_cuesize_alignbad.vtt: Added. >+ * media/track/captions/tc021_valign.vtt: Added. >+ * media/track/captions/tc021_valign_ltr.vtt: Added. >+ * media/track/captions/tc021_valignbad.vtt: Added. >+ * media/track/captions/tc022_entities.vtt: Added. >+ * media/track/captions/tc022_entitieswrong.vtt: Added. >+ * media/track/captions/tc023_markup.vtt: Added. >+ * media/track/captions/tc023_markupbad.vtt: Added. >+ * media/track/captions/tc024_timestamp.vtt: Added. >+ * media/track/captions/tc024_timestampbad.vtt: Added. >+ * media/track/captions/tc025_class.vtt: Added. >+ * media/track/captions/tc025_classbad.vtt: Added. >+ * media/track/captions/tc026_voice.vtt: Added. >+ * media/track/captions/tc026_voicebad.vtt: Added. >+ * media/track/captions/tc027_emtycue.vtt: Added. >+ * media/track/captions/tc028_unsupportedmarkup.vtt: Added. >+ * media/track/track-webvtt-tc014-alignment-expected.txt: Added. >+ * media/track/track-webvtt-tc014-alignment.html: Added. >+ * media/track/track-webvtt-tc015-positioning-expected.txt: Added. >+ * media/track/track-webvtt-tc015-positioning.html: Added. >+ * media/track/track-webvtt-tc016-align_positioning-expected.txt: Added. >+ * media/track/track-webvtt-tc016-align_positioning.html: Added. >+ * media/track/track-webvtt-tc017-lineposition-expected.txt: Added. >+ * media/track/track-webvtt-tc017-lineposition.html: Added. >+ * media/track/track-webvtt-tc018-align_text_lineposition-expected.txt: Added. >+ * media/track/track-webvtt-tc018-align_text_lineposition.html: Added. >+ * media/track/track-webvtt-tc019-cuesize-expected.txt: Added. >+ * media/track/track-webvtt-tc019-cuesize.html: Added. >+ * media/track/track-webvtt-tc020-cuesizealign-expected.txt: Added. >+ * media/track/track-webvtt-tc020-cuesizealign.html: Added. >+ * media/track/track-webvtt-tc021-valign-expected.txt: Added. >+ * media/track/track-webvtt-tc021-valign.html: Added. >+ * media/track/track-webvtt-tc022-entities-expected.txt: Added. >+ * media/track/track-webvtt-tc022-entities.html: Added. >+ * media/track/track-webvtt-tc023-markup-expected.txt: Added. >+ * media/track/track-webvtt-tc023-markup.html: Added. >+ * media/track/track-webvtt-tc024-timestamp-expected.txt: Added. >+ * media/track/track-webvtt-tc024-timestamp.html: Added. >+ * media/track/track-webvtt-tc025-classmarkup-expected.txt: Added. >+ * media/track/track-webvtt-tc025-classmarkup.html: Added. >+ * media/track/track-webvtt-tc026-voice-expected.txt: Added. >+ * media/track/track-webvtt-tc026-voice.html: Added. >+ * media/track/track-webvtt-tc027-emptycue-expected.txt: Added. >+ * media/track/track-webvtt-tc027-emptycue.html: Added. >+ * media/track/track-webvtt-tc028-unsupportedmarkup-expected.txt: Added. >+ * media/track/track-webvtt-tc028-unsupportedmarkup.html: Added. >+ > 2011-08-23 Adam Barth <abarth@webkit.org> > > Fix baselines for fast/block/float/fit_line_below_floats.html. I forgot Windows in my previous patch. >diff --git a/LayoutTests/media/track/captions/tc014_alignment.vtt b/LayoutTests/media/track/captions/tc014_alignment.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..a1d13db19987f0aefdc3818a74ec3163ec136311 >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc014_alignment.vtt >@@ -0,0 +1,21 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 A:start >+Bear is Coming!!!!! >+Start align. >+ >+2 >+00:00:31.000 --> 00:01:00.500 A:middle >+I said Bear is coming!!!! >+Middle align. >+ >+3 >+00:01:01.000 --> 00:02:00.500 A:end >+I said Bear is coming now!!!! >+End align. >+ >+4 >+00:02:01.000 --> 100:20:00.500 >+I said Bear is coming now!!!! >+Default is middle alignment. >\ No newline at end of file >diff --git a/LayoutTests/media/track/captions/tc014_alignment_ltr.vtt b/LayoutTests/media/track/captions/tc014_alignment_ltr.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..426686f0f235bcc6114aa205e8de767f94ec3832 >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc014_alignment_ltr.vtt >@@ -0,0 +1,21 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 A:start >+Ø§ÙØ¯Ø¨ ÙØ§Ø¯Ù !!!!! >+بدء Ù ØØ§Ø°Ø§ØªÙ. >+ >+2 >+00:00:31.000 --> 00:01:00.500 A:middle >+ÙÙØª Ø§ÙØ¯Ø¨ ÙØ§Ø¯Ù !! >+Ù ØØ§Ø°Ø§Ø© اÙÙØ³Ø·. >+ >+3 >+00:01:01.000 --> 00:02:00.500 A:end >+ÙÙØª Ø§ÙØ¯Ø¨ ÙØ§Ø¯Ù Ø§ÙØ¢Ù!! >+Ù ØØ§Ø°Ø§Ø© Ø§ÙØºØ§ÙØ©. >+ >+4 >+00:02:01.000 --> 100:20:00.500 >+ÙÙØª Ø§ÙØ¯Ø¨ ÙØ§Ø¯Ù Ø§ÙØ¢Ù!! >+Ø§ÙØ§ÙØªØ±Ø§Ø¶ÙØ© ÙÙ Ù ØØ§Ø°Ø§Ø© اÙÙØ³Ø·. >\ No newline at end of file >diff --git a/LayoutTests/media/track/captions/tc014_alignmentbad.vtt b/LayoutTests/media/track/captions/tc014_alignmentbad.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..7b6670fd3794dced2e4b68927d50bceb42f23e5d >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc014_alignmentbad.vtt >@@ -0,0 +1,21 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 A:starta >+Bear is Coming!!!!! >+Erroneous alignment value -> middle. >+ >+2 >+00:00:31.000 --> 00:01:00.500 A:-start >+I said Bear is coming!!!! >+Erroneous alignment value --> middle. >+ >+3 >+00:01:01.000 --> 00:02:00.500 A: end >+I said Bear is coming now!!!! >+Erroneous alignment value with surplus whitespace --> middle. >+ >+4 >+00:02:01.000 --> 100:20:00.500 A:piugjk >+I said Bear is coming now!!!! >+Erroneous alignment value -> middle. >\ No newline at end of file >diff --git a/LayoutTests/media/track/captions/tc015_positioning.vtt b/LayoutTests/media/track/captions/tc015_positioning.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..dbed2362e68d09257f94329eb2b60cae9bc9d4f3 >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc015_positioning.vtt >@@ -0,0 +1,20 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 T:0% >+Bear is Coming!!!!! >+Positioning on the left bottom. >+ >+2 >+00:00:31.000 --> 00:00:45.500 T:50% >+I said Bear is coming!!!! >+Positioning on the bottom middle. >+ >+00:00:46.000 --> 00:01:00.500 >+I said Bear is coming!!!! >+Default positioning on the bottom middle still. >+ >+3 >+00:01:01.000 --> 00:02:00.500 T:100% >+I said Bear is coming now!!!! >+Positioning on the bottom right. >diff --git a/LayoutTests/media/track/captions/tc015_positioning_ltr.vtt b/LayoutTests/media/track/captions/tc015_positioning_ltr.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..90f9977015decc06249cc1c98cc618380673edd2 >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc015_positioning_ltr.vtt >@@ -0,0 +1,20 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 T:0% >+Ø§ÙØ¯Ø¨ ÙØ§Ø¯Ù !!!!! >+ØªØØ¯Ùد اÙÙ ÙØ§Ùع Ù٠أسÙ٠اÙÙÙ ÙÙ. >+ >+2 >+00:00:31.000 --> 00:00:45.500 T:50% >+ÙÙØª Ø§ÙØ¯Ø¨ ÙØ§Ø¯Ù !! >+ØªØØ¯Ùد اÙÙ ÙØ§Ùع ÙÙ Ù ÙØªØµÙ اÙÙØ§Ø¹. >+ >+00:00:46.000 --> 00:01:00.500 >+ÙÙØª Ø§ÙØ¯Ø¨ ÙØ§Ø¯Ù !! >+اÙÙ ÙØ§Ùع Ø§ÙØ§ÙØªØ±Ø§Ø¶ÙØ© عÙÙ Ù ÙØªØµÙ أسÙÙ ØªØ²Ø§Ù ÙØ§Ø¦Ù Ø©. >+ >+3 >+00:01:01.000 --> 00:02:00.500 T:100% >+ÙÙØª Ø§ÙØ¯Ø¨ ÙØ§Ø¯Ù Ø§ÙØ¢Ù!! >+غادر ÙØªØØ¯Ùد اÙÙ ÙØ§Ùع Ù٠اÙÙØ§Ø¹. >\ No newline at end of file >diff --git a/LayoutTests/media/track/captions/tc015_positioningbad.vtt b/LayoutTests/media/track/captions/tc015_positioningbad.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..d85979e2a7c9fdf1a4a0d9a7dbc2ce625ca05d2a >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc015_positioningbad.vtt >@@ -0,0 +1,38 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:15.500 T:-5% >+Bear is Coming!!!!! >+This would be off screen -> ignored. >+ >+00:00:16.000 --> 00:00:30.500 T:150% >+Bear is Coming!!!!! >+This would be off screen -> ignored. >+ >+2 >+00:00:31.000 --> 00:00:45.500 T:50 >+I said Bear is coming!!!! >+Missing percent sign -> ignored. >+ >+2 >+00:00:46.000 --> 00:01:00.500 T:50a% >+I said Bear is coming!!!! >+Surplus character between number and percent sign -> ignored. >+ >+3 >+00:01:01.000 --> 00:01:30.500 T:100%-fj >+I said Bear is coming now!!!! >+Surplus characters after percent sign -> ignored. >+ >+ >+00:01:31.000 --> 00:02:00.500 T:100asdf >+I said Bear is coming now!!!! >+Surplus characters and no percent sign -> ignored. >+ >+00:02:01.000 --> 00:02:02.000 T:e50% >+I said Bear is coming now!!!! >+Surplus characters at beginning of size string -> ignored. >+ >+00:02:02.100 --> 00:02:02.500 T:5g0% >+I said Bear is coming now!!!! >+Surplus characters in middle of size string -> ignored. >diff --git a/LayoutTests/media/track/captions/tc016_align_positioning.vtt b/LayoutTests/media/track/captions/tc016_align_positioning.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..5a5209061524c9c560100f3c6081ef02756bc8d9 >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc016_align_positioning.vtt >@@ -0,0 +1,19 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 T:10% A:start >+Bear is Coming!!!!! >+Positioning on the left bottom, start aligned, and >+first character rendering position is at 10% of width. >+ >+2 >+00:00:31.000 --> 00:00:45.500 T:20% A:middle >+I said Bear is coming!!!! >+Positioning on the bottom left, middle aligned, and >+middle character rendering position of each line is at 20% of width. >+ >+3 >+00:01:01.000 --> 00:02:00.500 A:end T:80% >+I said Bear is coming now!!!! >+Positioning on the bottom right, end aligned, and >+last character rendering position of each line is at 80% of width. >\ No newline at end of file >diff --git a/LayoutTests/media/track/captions/tc016_align_positioningbad.vtt b/LayoutTests/media/track/captions/tc016_align_positioningbad.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..3d546ad53f4b50f313d3720aff5613b10ded917d >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc016_align_positioningbad.vtt >@@ -0,0 +1,19 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 T:10% A: start >+Bear is Coming!!!!! >+Positioning on the left bottom, middle aligned, >+because the alignment is mistyped. >+ >+2 >+00:00:31.000 --> 00:00:45.500 T:200% A:middle >+I said Bear is coming!!!! >+Positioning on the bottom middle, middle aligned, >+because the positioning is off. >+ >+3 >+00:01:01.000 --> 00:02:00.500 T:-80% A:ends >+I said Bear is coming now!!!! >+Positioning on the bottom middle, middle aligned, >+because both the alignment and positioning don't apply. >\ No newline at end of file >diff --git a/LayoutTests/media/track/captions/tc017_linepos.vtt b/LayoutTests/media/track/captions/tc017_linepos.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..9a413639a4e13d1bbeb75dc6cfea9230564fc2f1 >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc017_linepos.vtt >@@ -0,0 +1,36 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:15.000 L:0% >+Bear is Coming!!!!! >+Positioning on the top of the viewport, in the middle. >+ >+00:00:15.500 --> 00:00:30.500 L:0 >+Bear is Coming!!!!! >+This is line 0. >+Positioning on the top of the viewport, in the middle. >+ >+2 >+00:00:31.000 --> 00:00:45.500 L:50% >+I said Bear is coming!!!! >+Positioning on the center of the video. >+ >+ >+00:00:46.000 --> 00:01:00.500 L:5 >+I said Bear is coming!!!! >+This is line 6 from the top of the video viewport. >+ >+3 >+00:01:01.000 --> 00:01:30.000 L:100% >+I said Bear is coming now!!!! >+Positioning on the bottom middle. >+ >+00:01:31.000 --> 00:02:00.500 L:-1 >+I said Bear is coming now!!!! >+This is the first line at the bottom of the video viewport. >+Positioning on the bottom middle. Only 1 line shows. >+ >+00:02:01.000 --> 00:02:30.000 L:500 >+I said Bear is coming now!!!! >+This is legal, >+even though the line will likely not be within the video viewport. >\ No newline at end of file >diff --git a/LayoutTests/media/track/captions/tc017_lineposbad.vtt b/LayoutTests/media/track/captions/tc017_lineposbad.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..85a0b065ee29ef6f7abbb8b757848bbbbd5f0f7d >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc017_lineposbad.vtt >@@ -0,0 +1,34 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:15.000 L:-0% >+Bear is Coming!!!!! >+Negative percentages are not allowed. >+Line position is ignored. >+ >+00:00:15.500 --> 00:00:30.500 L:0.5 >+Bear is Coming!!!!! >+Fractions of lines are not allowed. >+Line position is ignored. >+ >+2 >+00:00:31.000 --> 00:00:45.500 L:+50% >+I said Bear is coming!!!! >+Non-numbers are not allowed. >+Line position is ignored. >+ >+00:00:46.000 --> 00:01:00.500 L:+5 >+I said Bear is coming!!!! >+Plus sign is not allowed. >+Line position is ignored. >+ >+3 >+00:01:01.000 --> 00:01:30.000 L:10%0% >+I said Bear is coming now!!!! >+Doesn't parse into a percentage. >+Line position is ignored. >+ >+00:01:31.000 --> 00:02:00.500 L:-10l >+I said Bear is coming now!!!! >+Doesn't parse into a number. >+Line position is ignored. >diff --git a/LayoutTests/media/track/captions/tc018_align_text_linepos.vtt b/LayoutTests/media/track/captions/tc018_align_text_linepos.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..7273bbcbb4bc7e3e751a9dee708f6b5cd5c5d4d6 >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc018_align_text_linepos.vtt >@@ -0,0 +1,27 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:15.000 T:10% A:start L:0% >+Bear is Coming!!!!! >+Positioning on the top of the viewport at 10% horizontally, >+start aligned. >+ >+00:00:15.500 --> 00:00:30.500 L:0 A:start >+Bear is Coming!!!!! >+This is line 0, middle aligned, first character at 50% width. >+ >+2 >+00:00:31.000 --> 00:00:45.500 T:80% L:80% >+I said Bear is coming!!!! >+Middle aligned, middle of cue's character is at 80% width and 80% height. >+ >+00:00:46.000 --> 00:01:00.500 L:5 A:end T:30% >+I said Bear is coming!!!! >+This is line 6 from the top of the video viewport, >+end aligned with last character at 30% of viewport width. >+ >+3 >+00:01:01.000 --> 00:01:30.000 L:-3 A:middle T:60% >+I said Bear is coming now!!!! >+Positioning on line 3 from the viewport bottom, middle aligned, >+with middle character of cue at 60% width. >diff --git a/LayoutTests/media/track/captions/tc018_align_text_lineposbad.vtt b/LayoutTests/media/track/captions/tc018_align_text_lineposbad.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..1353c0b58a5bf05eba8a497c2b143777987b17ab >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc018_align_text_lineposbad.vtt >@@ -0,0 +1,20 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 T: 0% A: start L: 0% >+Bear is Coming!!!!! >+None of the cue settings will be applied, just the default. >+ >+2 >+00:00:31.000 --> 00:00:01.500 T:0% A:end L:-30% >+I said Bear is coming!!!! >+The line position setting is ignored. >+No text is visible though because it's off-screen at position >+0 and the last character is at position 0%. >+ >+3 >+00:01:01.000 --> 00:01:30.000 L:-3 A:middler T:60% >+I said Bear is coming now!!!! >+Positioning on line 3 from the viewport bottom, middle aligned, >+with middle character of cue at 60% width. >+The alignment is ignored. >diff --git a/LayoutTests/media/track/captions/tc019_cuesize.vtt b/LayoutTests/media/track/captions/tc019_cuesize.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..868fc3b41e53979778fb9b4c87447c66fd1ceb25 >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc019_cuesize.vtt >@@ -0,0 +1,18 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 S:100% >+Bear is Coming!!!!! >+Box for the cue is 100% of the video viewport width, >+exemplified through background color, >+even if the text needs less. >+ >+2 >+00:00:31.000 --> 00:01:00.500 S:10% >+I said Bear is coming!!!! >+Box for the cue is 10% of the video viewport width, which will mean that automatic line wrapping will happen. >+ >+3 >+00:01:01.000 --> 00:02:00.500 S:0% >+I said Bear is coming now!!!! >+Cue text box size of 0 is acceptable, even if not visible. >diff --git a/LayoutTests/media/track/captions/tc019_cuesizebad.vtt b/LayoutTests/media/track/captions/tc019_cuesizebad.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..22d2283bcec3aa7e56a47798b1d3f55e3879af68 >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc019_cuesizebad.vtt >@@ -0,0 +1,16 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 S: 50% >+Bear is Coming!!!!! >+Cue size setting doesn't parse and is ignored. >+ >+2 >+00:00:31.000 --> 00:01:00.500 S:-10% >+I said Bear is coming!!!! >+Negative cue size setting is not acceptable and is ignored. >+ >+3 >+00:01:01.000 --> 00:02:00.500 S:4000% >+I said Bear is coming now!!!! >+Cue size beyond 100% is not acceptable and is ignored. >diff --git a/LayoutTests/media/track/captions/tc020_cuesize_align.vtt b/LayoutTests/media/track/captions/tc020_cuesize_align.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..3704e26f1664c42bbb457d255e27e47a7543a438 >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc020_cuesize_align.vtt >@@ -0,0 +1,18 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 S:100% A:start >+Bear is Coming!!!!! >+Box for the cue is 100% of the video viewport width >+and because of the start align, all text is left aligned on the video viewport. >+ >+2 >+00:00:31.000 --> 00:01:00.500 S:10% A:end >+I said Bear is coming!!!! >+Box for the cue is 10% of the video viewport width, which will mean that automatic line wrapping will happen >+and the text is aligned to the end. >+ >+3 >+00:01:01.000 --> 00:02:00.500 S:0% A:middle >+I said Bear is coming now!!!! >+Cue text box size of 0 is acceptable, even if not visible. >diff --git a/LayoutTests/media/track/captions/tc020_cuesize_alignbad.vtt b/LayoutTests/media/track/captions/tc020_cuesize_alignbad.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..84cced8f526bc5ea241008df92841352d046d92e >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc020_cuesize_alignbad.vtt >@@ -0,0 +1,17 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 S:100% A:@start >+Bear is Coming!!!!! >+Box for the cue is 100% of the video viewport width, alignment is ignored. >+ >+2 >+00:00:31.000 --> 00:01:00.500 S:-10% A:end >+I said Bear is coming!!!! >+Box for the cue is as big as the text, no line wrapping, >+(except if viewport is too small) and end aligned. >+ >+3 >+00:01:01.000 --> 00:02:00.500 S:110% A:@middle >+I said Bear is coming now!!!! >+Both cue size and alignment are ignored. >\ No newline at end of file >diff --git a/LayoutTests/media/track/captions/tc021_valign.vtt b/LayoutTests/media/track/captions/tc021_valign.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..3d2ebf6c0a46b700e5631e30bb61d5cc7a00970b >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc021_valign.vtt >@@ -0,0 +1,19 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 D:vertical >+Bear is Coming!!!!! >+Renders on the right side of the video viewport, middle aligned, >+top to bottom, growing left. >+ >+2 >+00:00:31.000 --> 00:01:00.500 D:vertical-lr >+I said Bear is coming!!!! >+Renders on the left side of the video viewport, middle aligned, >+top to bottom, growing right. >+ >+3 >+00:01:01.000 --> 00:02:00.500 D:vertical A:start T:0% >+I said Bear is coming now!!!! >+Renders on the right side of the video viewport, top aligned both >+for the cue box and the text within, text from top to bottom, growing left. >diff --git a/LayoutTests/media/track/captions/tc021_valign_ltr.vtt b/LayoutTests/media/track/captions/tc021_valign_ltr.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..d7c091372cccebdf6049d61681fa715921b6dcbc >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc021_valign_ltr.vtt >@@ -0,0 +1,19 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 D:vertical >+Ø§ÙØ¯Ø¨ ÙØ§Ø¯Ù !!!!! >+ÙØ¬Ø¹Ù عÙÙ Ø§ÙØ¬Ø§Ùب Ø§ÙØ£Ù٠٠٠٠اÙ٠عاÙÙØ© اÙÙÙØ¯ÙÙ ÙØ§ÙÙ ØªÙØ³Ø·Ø© Ø§ÙØ§ÙØÙاز Ø >+أسÙ٠إÙ٠أعÙÙØ ÙØªØ²Ø§Ùد اÙÙØ³Ø§Ø±. >+ >+2 >+00:00:31.000 --> 00:01:00.500 D:vertical-lr >+ÙÙØª Ø§ÙØ¯Ø¨ ÙØ§Ø¯Ù !! >+ÙØ¬Ø¹Ù عÙÙ Ø§ÙØ¬Ø§Ùب Ø§ÙØ£Ùسر ٠٠اÙ٠عاÙÙØ© اÙÙÙØ¯ÙÙ ÙØ§ÙÙ ØªÙØ³Ø·Ø© Ø§ÙØ§ÙØÙاز Ø >+أسÙ٠إÙ٠أعÙÙØ ÙØªÙا٠٠اÙÙÙ ÙÙ. >+ >+3 >+00:01:01.000 --> 00:02:00.500 D:vertical A:start T:0% >+ÙÙØª Ø§ÙØ¯Ø¨ ÙØ§Ø¯Ù Ø§ÙØ¢Ù!! >+ÙØ¬Ø¹Ù عÙÙ Ø§ÙØ¬Ø§Ùب Ø§ÙØ£Ù٠٠٠٠اÙ٠عاÙÙØ© اÙÙÙØ¯ÙÙ Ø Ø¹ÙÙ ØØ¯ Ø³ÙØ§Ø¡ أسÙÙ Ù ØØ§Ø°Ø§Ø© >+Ù٠ربع جدÙÙØ© ÙØ§ÙÙØµ داخ٠اÙÙØµ Ø Ù Ù Ø£Ø³Ù٠إÙ٠أعÙÙØ ÙØªØ²Ø§Ùد اÙÙØ³Ø§Ø±. >diff --git a/LayoutTests/media/track/captions/tc021_valignbad.vtt b/LayoutTests/media/track/captions/tc021_valignbad.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..b449af3d53544ac15cc07cefc2704355ecc20b94 >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc021_valignbad.vtt >@@ -0,0 +1,16 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 D:#vertical >+Bear is Coming!!!!! >+Normal rendering - direction setting is ignored. >+ >+2 >+00:00:31.000 --> 00:01:00.500 D:verticallr >+I said Bear is coming!!!! >+Normal rendering - direction setting is ignored. >+ >+3 >+00:01:01.000 --> 00:02:00.500 D:vertical-rl >+I said Bear is coming now!!!! >+Normal rendering - direction setting is ignored. >diff --git a/LayoutTests/media/track/captions/tc022_entities.vtt b/LayoutTests/media/track/captions/tc022_entities.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..068e93e45b921400bba33b6f1d5a0b9ecbf544fd >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc022_entities.vtt >@@ -0,0 +1,13 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 A:start T:20% >+This cue has an amp & character. >+ >+2 >+00:00:31.000 --> 00:01:00.500 A:start T:20% >+This cue has a less than < character. >+ >+3 >+00:01:01.000 --> 00:02:00.500 A:start T:20% >+This cue has a greater than > character. >diff --git a/LayoutTests/media/track/captions/tc022_entitieswrong.vtt b/LayoutTests/media/track/captions/tc022_entitieswrong.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..05dedacac9c338ef530abbdebf117fd7caf80ff6 >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc022_entitieswrong.vtt >@@ -0,0 +1,19 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 A:start T:20% >+This cue has an amp & character. >+Ampersand is ignored. >+ >+2 >+00:00:31.000 --> 00:01:00.500 A:start T:20% >+This cue has a less than < character. >+It turns everything from there on into an annotation >+for an empty tag and ends only at the next > or & character. >+ >+ >+3 >+00:01:01.000 --> 00:02:00.500 A:start T:20% >+This cue has a greater than > character. >+Since it's not related to a < character, >+it's just interpreted as text. >diff --git a/LayoutTests/media/track/captions/tc023_markup.vtt b/LayoutTests/media/track/captions/tc023_markup.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..3f58c1506c97fc32930346b8ff207fbf055d6d0c >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc023_markup.vtt >@@ -0,0 +1,21 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:15.000 A:start T:20% >+The following bear is bold: >+<b>Bear</b> is Coming!!!!! >+ >+00:00:15.500 --> 00:00:30.500 A:start T:20% >+The following bear is in italics and has a class of "larger": >+<i.larger>Bear</i> is Coming!!!!! >+ >+2 >+00:00:31.000 --> 00:01:00.500 A:start T:20% >+The following bear is underlined even though the element has a blank: >+I said <u >Bear</u> is coming!!!! >+ >+3 >+00:01:01.000 --> 00:01:30.000 A:start T:20% >+The following bear is ruby annotated: >+I said <ruby>Bear<rt>bear with me</rt></ruby> is coming!!!! >+ >diff --git a/LayoutTests/media/track/captions/tc023_markupbad.vtt b/LayoutTests/media/track/captions/tc023_markupbad.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..f4d16205e119c565903c11da82f1455939d7aeac >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc023_markupbad.vtt >@@ -0,0 +1,21 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:15.000 A:start T:20% >+The following bear starts bold but end is broken: >+<b>Bear</ b> is Coming!!!!! >+ >+00:00:15.500 --> 00:00:30.500 A:start T:20% >+The following bear is not in italics but the markup is removed: >+< i>Bear</i> is Coming!!!!! >+ >+2 >+00:00:31.000 --> 00:01:00.500 A:start T:20% >+The following bear is not underlined and markup is removed: >+I said < u >Bear</u> is coming!!!! >+ >+3 >+00:01:01.000 --> 00:01:30.000 A:start T:20% >+The following bear is not ruby annotated and markup is removed: >+I said <ru by>Bear<rt>bear with me</rt></ruby> is coming!!!! >+ >diff --git a/LayoutTests/media/track/captions/tc024_timestamp.vtt b/LayoutTests/media/track/captions/tc024_timestamp.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..482b785244331f0b675ad96b2e5095287b7c03d4 >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc024_timestamp.vtt >@@ -0,0 +1,13 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 A:start T:20% >+This <00:00:05.000>cue <00:00:10.000>is <00:00:15.000>painted <00:00:20.000>on. >+ >+2 >+00:00:31.000 --> 00:01:00.500 A:start T:20% >+I <00:00:35.000>said <00:00:40.000>Bear <00:00:45.000>is <00:00:50.000>coming!!!! >+ >+3 >+00:01:01.000 --> 00:02:00.500 A:start T:20% >+I <00:01:05.000>said <00:01:10.000>Bear <00:01:15.000>is <00:01:20.000>coming <00:01:25.000>now!!!! >\ No newline at end of file >diff --git a/LayoutTests/media/track/captions/tc024_timestampbad.vtt b/LayoutTests/media/track/captions/tc024_timestampbad.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..2b71b679952d6b3938a69e91e6f289418f015dbb >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc024_timestampbad.vtt >@@ -0,0 +1,16 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 A:start T:20% >+This <00:00:05.000>cue <00:00:10.000>is <00:00:12.000>painted <00:00:08.000>on. >+But since the last two timestamps are out of order, they are ignored. >+ >+2 >+00:00:31.000 --> 00:01:00.500 A:start T:20% >+I <00:00:20.000>said <00:00:22.000>Bear <00:00:24.000>is <00:00:26.000>coming!!!! >+All of these timestamps are before the start of the cue, so get ignored. >+ >+3 >+00:01:01.000 --> 00:02:00.500 A:start T:20% >+I <00:02:05.000>said <00:02:10.000>Bear <00:02:15.000>is <00:02:20.000>coming <00:02:25.000>now!!!! >+All of these timestamps are after the end of the cue, so get ignored. >diff --git a/LayoutTests/media/track/captions/tc025_class.vtt b/LayoutTests/media/track/captions/tc025_class.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..4271bc4d3cfe3a023e9746884881de25e7feedd4 >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc025_class.vtt >@@ -0,0 +1,13 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 A:start T:20% >+<c.black>Bear is Coming!!!!!</c> >+ >+2 >+00:00:31.000 --> 00:01:00.500 A:start T:20% >+<c.green>I said Bear is coming!!!!</c> >+ >+3 >+00:01:01.000 --> 00:02:00.500 A:start T:20% >+I said <c.red.uppercase>Bear is coming now</c>!!!! >diff --git a/LayoutTests/media/track/captions/tc025_classbad.vtt b/LayoutTests/media/track/captions/tc025_classbad.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..06a56e98c83c9ee1a8669eb711520a6c28d46557 >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc025_classbad.vtt >@@ -0,0 +1,16 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 A:start T:20% >+<c .black>Bear is Coming!!!!!</c> >+The space signified an annotation start. >+ >+2 >+00:00:31.000 --> 00:01:00.500 A:start T:20% >+<c.red&large>I said Bear is coming!!!!</c> >+Probably should only allow characters that CSS allows in class names. >+ >+3 >+00:01:01.000 --> 00:02:00.500 A:start T:20% >+I said <c.9red.upper+case>Bear is coming now</c>!!!! >+Probably should only allow characters that CSS allows in class names. >diff --git a/LayoutTests/media/track/captions/tc026_voice.vtt b/LayoutTests/media/track/captions/tc026_voice.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..8528b70be7a54866e732f34cf82a2b26646511df >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc026_voice.vtt >@@ -0,0 +1,14 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 A:start T:20% >+<v.blue Speaker>Bear is Coming!!!!!</v> >+Text span with a class and an annotation. >+ >+2 >+00:00:31.000 --> 00:01:00.500 A:start T:20% >+<v Doe Hunter>I said Bear is coming!!!!</v> >+ >+3 >+00:01:01.000 --> 00:02:00.500 A:start T:20% >+I said <v.blue Speaker>Bear is coming now</v>!!!! >diff --git a/LayoutTests/media/track/captions/tc026_voicebad.vtt b/LayoutTests/media/track/captions/tc026_voicebad.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..c85310b45f7b8f4b2d937d006f79212a1f081b32 >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc026_voicebad.vtt >@@ -0,0 +1,16 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 A:start T:20% >+< v Speaker>Bear is Coming!!!!!</v> >+This is two annotations for an empty tag. >+ >+2 >+00:00:31.000 --> 00:01:00.500 A:start T:20% >+<v&Doe Hunter>I said Bear is coming!!!!</v> >+This does not parse as a voice tag. >+ >+3 >+00:01:01.000 --> 00:02:00.500 A:start T:20% >+I said <v-Speaker>Bear is coming now</v>!!!! >+This does not parse as a voice tag. >diff --git a/LayoutTests/media/track/captions/tc027_emtycue.vtt b/LayoutTests/media/track/captions/tc027_emtycue.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..89c751780220fd62cca997d8ef9817f2875e9b50 >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc027_emtycue.vtt >@@ -0,0 +1,10 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 A:start T:20% >+ >+2 >+00:00:31.000 --> 00:01:00.500 A:start T:20% >+ >+3 >+00:01:01.000 --> 00:02:00.500 A:start T:20% >diff --git a/LayoutTests/media/track/captions/tc028_unsupportedmarkup.vtt b/LayoutTests/media/track/captions/tc028_unsupportedmarkup.vtt >new file mode 100644 >index 0000000000000000000000000000000000000000..3a5606c512441cdff73d39ee54dc83c4af3c605c >--- /dev/null >+++ b/LayoutTests/media/track/captions/tc028_unsupportedmarkup.vtt >@@ -0,0 +1,22 @@ >+WEBVTT >+ >+1 >+00:00:00.000 --> 00:00:30.500 A:start T:20% >+<h1>Bear is Coming!!!!!</h1> >+<p>And what kind of a bear it is - just have <a href="webpage.html">look</a>.</p> >+ >+2 >+00:00:31.000 --> 00:01:00.500 A:start T:20% >+<ul> >+ <li>I said Bear is coming!!!!</li> >+ <li>I said Bear is still coming!!!!</li> >+</ul> >+ >+ >+3 >+00:01:01.000 --> 00:02:00.500 A:start T:20% >+<ol> >+ <li>I said Bear is coming now!!!!</li> >+ <li><img src="bear.png" alt="mighty bear"></li> >+ <li><video src="bear_ad.webm" controls></video></li> >+</ol> >\ No newline at end of file >diff --git a/LayoutTests/media/track/track-webvtt-tc014-alignment-expected.txt b/LayoutTests/media/track/track-webvtt-tc014-alignment-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..54e871c05696fb0c60d44a06ebd4d32b3261eefd >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc014-alignment-expected.txt >@@ -0,0 +1,19 @@ >+Tests cue alignment from settings. >+ >+EXPECTED (video.textTracks[0].cues.length == '4') OK >+EXPECTED (video.textTracks[0].cues[0].alignment == 'start') OK >+EXPECTED (video.textTracks[0].cues[1].alignment == 'middle') OK >+EXPECTED (video.textTracks[0].cues[2].alignment == 'end') OK >+EXPECTED (video.textTracks[0].cues[3].alignment == 'middle') OK >+EXPECTED (video.textTracks[1].cues.length == '4') OK >+EXPECTED (video.textTracks[1].cues[0].alignment == 'start') OK >+EXPECTED (video.textTracks[1].cues[1].alignment == 'middle') OK >+EXPECTED (video.textTracks[1].cues[2].alignment == 'end') OK >+EXPECTED (video.textTracks[1].cues[3].alignment == 'middle') OK >+EXPECTED (video.textTracks[2].cues.length == '4') OK >+EXPECTED (video.textTracks[2].cues[0].alignment == 'middle') OK >+EXPECTED (video.textTracks[2].cues[1].alignment == 'middle') OK >+EXPECTED (video.textTracks[2].cues[2].alignment == 'middle') OK >+EXPECTED (video.textTracks[2].cues[3].alignment == 'middle') OK >+END OF TEST >+ >diff --git a/LayoutTests/media/track/track-webvtt-tc014-alignment.html b/LayoutTests/media/track/track-webvtt-tc014-alignment.html >new file mode 100644 >index 0000000000000000000000000000000000000000..009438f12cc1227b9315177820428daf3eb1bc49 >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc014-alignment.html >@@ -0,0 +1,59 @@ >+<html> >+ <head> >+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> >+ >+ <script src=../media-file.js></script> >+ <script src=../video-test.js></script> >+ <script> >+ >+ var numberTests = 0; >+ >+ function trackLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "4"); >+ >+ testExpected("video.textTracks[" + i + "].cues[0].alignment","start"); >+ >+ testExpected("video.textTracks[" + i + "].cues[1].alignment","middle"); >+ >+ testExpected("video.textTracks[" + i + "].cues[2].alignment","end"); >+ >+ testExpected("video.textTracks[" + i + "].cues[3].alignment","middle"); >+ >+ allTestsEnded(); >+ } >+ >+ function trackWithErrorLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "4"); >+ >+ testExpected("video.textTracks[" + i + "].cues[0].alignment","middle"); >+ >+ testExpected("video.textTracks[" + i + "].cues[1].alignment","middle"); >+ >+ testExpected("video.textTracks[" + i + "].cues[2].alignment","middle"); >+ >+ testExpected("video.textTracks[" + i + "].cues[3].alignment","middle"); >+ >+ allTestsEnded(); >+ } >+ >+ function allTestsEnded() >+ { >+ numberTests++; >+ if (numberTests >= 3) >+ endTest(); >+ } >+ </script> >+ </head> >+ <body> >+ <p>Tests cue alignment from settings.</p> >+ <video> >+ <track src="captions/tc014_alignment.vtt" onload="trackLoaded(0)"> >+ <track src="captions/tc014_alignment_ltr.vtt" onload="trackLoaded(1)"> >+ <track src="captions/tc014_alignmentbad.vtt" onload="trackWithErrorLoaded(2)"> >+ </video> >+ </body> >+</html> >\ No newline at end of file >diff --git a/LayoutTests/media/track/track-webvtt-tc015-positioning-expected.txt b/LayoutTests/media/track/track-webvtt-tc015-positioning-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..eba86431df80e293f102dbff7bda98a54f6a6a64 >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc015-positioning-expected.txt >@@ -0,0 +1,23 @@ >+Tests cue text position from settings. >+ >+EXPECTED (video.textTracks[0].cues.length == '4') OK >+EXPECTED (video.textTracks[0].cues[0].textPosition == '0') OK >+EXPECTED (video.textTracks[0].cues[1].textPosition == '50') OK >+EXPECTED (video.textTracks[0].cues[2].textPosition == '50') OK >+EXPECTED (video.textTracks[0].cues[3].textPosition == '100') OK >+EXPECTED (video.textTracks[1].cues.length == '4') OK >+EXPECTED (video.textTracks[1].cues[0].textPosition == '0') OK >+EXPECTED (video.textTracks[1].cues[1].textPosition == '50') OK >+EXPECTED (video.textTracks[1].cues[2].textPosition == '50') OK >+EXPECTED (video.textTracks[1].cues[3].textPosition == '100') OK >+EXPECTED (video.textTracks[2].cues.length == '8') OK >+EXPECTED (video.textTracks[2].cues[0].textPosition == '50') OK >+EXPECTED (video.textTracks[2].cues[1].textPosition == '50') OK >+EXPECTED (video.textTracks[2].cues[2].textPosition == '50') OK >+EXPECTED (video.textTracks[2].cues[3].textPosition == '50') OK >+EXPECTED (video.textTracks[2].cues[4].textPosition == '50') OK >+EXPECTED (video.textTracks[2].cues[5].textPosition == '50') OK >+EXPECTED (video.textTracks[2].cues[6].textPosition == '50') OK >+EXPECTED (video.textTracks[2].cues[7].textPosition == '50') OK >+END OF TEST >+ >diff --git a/LayoutTests/media/track/track-webvtt-tc015-positioning.html b/LayoutTests/media/track/track-webvtt-tc015-positioning.html >new file mode 100644 >index 0000000000000000000000000000000000000000..17270e75d4ce003a883100d874e2fa36b0d11f92 >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc015-positioning.html >@@ -0,0 +1,55 @@ >+<html> >+ <head> >+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> >+ >+ <script src=../media-file.js></script> >+ <script src=../video-test.js></script> >+ <script> >+ >+ var numberTests = 0; >+ >+ function trackLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "4"); >+ >+ testExpected("video.textTracks[" + i + "].cues[0].textPosition","0"); >+ >+ testExpected("video.textTracks[" + i + "].cues[1].textPosition","50"); >+ >+ testExpected("video.textTracks[" + i + "].cues[2].textPosition","50"); >+ >+ testExpected("video.textTracks[" + i + "].cues[3].textPosition","100"); >+ >+ allTestsEnded(); >+ } >+ >+ function trackWithErrorLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "8"); >+ >+ for (cue = 0; cue < video.textTracks[i].cues.length; cue++) { >+ testExpected("video.textTracks[" + i + "].cues[" + cue + "].textPosition","50"); >+ } >+ >+ allTestsEnded(); >+ } >+ >+ function allTestsEnded() >+ { >+ numberTests++; >+ if (numberTests >= 3) >+ endTest(); >+ } >+ </script> >+ </head> >+ <body> >+ <p>Tests cue text position from settings.</p> >+ <video> >+ <track src="captions/tc015_positioning.vtt" onload="trackLoaded(0)"> >+ <track src="captions/tc015_positioning_ltr.vtt" onload="trackLoaded(1)"> >+ <track src="captions/tc015_positioningbad.vtt" onload="trackWithErrorLoaded(2)"> >+ </video> >+ </body> >+</html> >\ No newline at end of file >diff --git a/LayoutTests/media/track/track-webvtt-tc016-align_positioning-expected.txt b/LayoutTests/media/track/track-webvtt-tc016-align_positioning-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..414ebbc81fda42968f8ee6e16cf19bd5952e4dda >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc016-align_positioning-expected.txt >@@ -0,0 +1,18 @@ >+Tests cue text position and alignment from settings. >+ >+EXPECTED (video.textTracks[0].cues.length == '3') OK >+EXPECTED (video.textTracks[0].cues[0].textPosition == '10') OK >+EXPECTED (video.textTracks[0].cues[0].alignment == 'start') OK >+EXPECTED (video.textTracks[0].cues[1].textPosition == '20') OK >+EXPECTED (video.textTracks[0].cues[1].alignment == 'middle') OK >+EXPECTED (video.textTracks[0].cues[2].textPosition == '80') OK >+EXPECTED (video.textTracks[0].cues[2].alignment == 'end') OK >+EXPECTED (video.textTracks[1].cues.length == '3') OK >+EXPECTED (video.textTracks[1].cues[0].textPosition == '10') OK >+EXPECTED (video.textTracks[1].cues[0].alignment == 'middle') OK >+EXPECTED (video.textTracks[1].cues[1].textPosition == '50') OK >+EXPECTED (video.textTracks[1].cues[1].alignment == 'middle') OK >+EXPECTED (video.textTracks[1].cues[2].textPosition == '50') OK >+EXPECTED (video.textTracks[1].cues[2].alignment == 'middle') OK >+END OF TEST >+ >diff --git a/LayoutTests/media/track/track-webvtt-tc016-align_positioning.html b/LayoutTests/media/track/track-webvtt-tc016-align_positioning.html >new file mode 100644 >index 0000000000000000000000000000000000000000..3cd92466d51d4ce7fd82699871bd38dc658a6a9d >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc016-align_positioning.html >@@ -0,0 +1,60 @@ >+<html> >+ <head> >+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> >+ >+ <script src=../media-file.js></script> >+ <script src=../video-test.js></script> >+ <script> >+ >+ var numberTests = 0; >+ >+ function trackLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "3"); >+ >+ testExpected("video.textTracks[" + i + "].cues[0].textPosition","10"); >+ testExpected("video.textTracks[" + i + "].cues[0].alignment","start"); >+ >+ testExpected("video.textTracks[" + i + "].cues[1].textPosition","20"); >+ testExpected("video.textTracks[" + i + "].cues[1].alignment","middle"); >+ >+ testExpected("video.textTracks[" + i + "].cues[2].textPosition","80"); >+ testExpected("video.textTracks[" + i + "].cues[2].alignment","end"); >+ >+ allTestsEnded(); >+ } >+ >+ function trackWithErrorLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "3"); >+ >+ testExpected("video.textTracks[" + i + "].cues[0].textPosition","10"); >+ testExpected("video.textTracks[" + i + "].cues[0].alignment","middle"); >+ >+ testExpected("video.textTracks[" + i + "].cues[1].textPosition","50"); >+ testExpected("video.textTracks[" + i + "].cues[1].alignment","middle"); >+ >+ testExpected("video.textTracks[" + i + "].cues[2].textPosition","50"); >+ testExpected("video.textTracks[" + i + "].cues[2].alignment","middle"); >+ >+ allTestsEnded(); >+ } >+ >+ function allTestsEnded() >+ { >+ numberTests++; >+ if (numberTests >= 2) >+ endTest(); >+ } >+ </script> >+ </head> >+ <body> >+ <p>Tests cue text position and alignment from settings.</p> >+ <video> >+ <track src="captions/tc016_align_positioning.vtt" onload="trackLoaded(0)"> >+ <track src="captions/tc016_align_positioningbad.vtt" onload="trackWithErrorLoaded(1)"> >+ </video> >+ </body> >+</html> >\ No newline at end of file >diff --git a/LayoutTests/media/track/track-webvtt-tc017-lineposition-expected.txt b/LayoutTests/media/track/track-webvtt-tc017-lineposition-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..a1da1873fdf33d9f22b598f84b9d76b12384691f >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc017-lineposition-expected.txt >@@ -0,0 +1,32 @@ >+Tests cue line position from settings. >+ >+EXPECTED (video.textTracks[0].cues.length == '7') OK >+EXPECTED (video.textTracks[0].cues[0].linePosition == '0') OK >+EXPECTED (video.textTracks[0].cues[0].snapToLines == 'false') OK >+EXPECTED (video.textTracks[0].cues[1].linePosition == '0') OK >+EXPECTED (video.textTracks[0].cues[1].snapToLines == 'true') OK >+EXPECTED (video.textTracks[0].cues[2].linePosition == '50') OK >+EXPECTED (video.textTracks[0].cues[2].snapToLines == 'false') OK >+EXPECTED (video.textTracks[0].cues[3].linePosition == '5') OK >+EXPECTED (video.textTracks[0].cues[3].snapToLines == 'true') OK >+EXPECTED (video.textTracks[0].cues[4].linePosition == '100') OK >+EXPECTED (video.textTracks[0].cues[4].snapToLines == 'false') OK >+EXPECTED (video.textTracks[0].cues[5].linePosition == '-1') OK >+EXPECTED (video.textTracks[0].cues[5].snapToLines == 'true') OK >+EXPECTED (video.textTracks[0].cues[6].linePosition == '500') OK >+EXPECTED (video.textTracks[0].cues[6].snapToLines == 'true') OK >+EXPECTED (video.textTracks[1].cues.length == '6') OK >+EXPECTED (video.textTracks[1].cues[0].linePosition == '-1') OK >+EXPECTED (video.textTracks[1].cues[0].snapToLines == 'true') OK >+EXPECTED (video.textTracks[1].cues[1].linePosition == '-1') OK >+EXPECTED (video.textTracks[1].cues[1].snapToLines == 'true') OK >+EXPECTED (video.textTracks[1].cues[2].linePosition == '-1') OK >+EXPECTED (video.textTracks[1].cues[2].snapToLines == 'true') OK >+EXPECTED (video.textTracks[1].cues[3].linePosition == '-1') OK >+EXPECTED (video.textTracks[1].cues[3].snapToLines == 'true') OK >+EXPECTED (video.textTracks[1].cues[4].linePosition == '-1') OK >+EXPECTED (video.textTracks[1].cues[4].snapToLines == 'true') OK >+EXPECTED (video.textTracks[1].cues[5].linePosition == '-1') OK >+EXPECTED (video.textTracks[1].cues[5].snapToLines == 'true') OK >+END OF TEST >+ >diff --git a/LayoutTests/media/track/track-webvtt-tc017-lineposition.html b/LayoutTests/media/track/track-webvtt-tc017-lineposition.html >new file mode 100644 >index 0000000000000000000000000000000000000000..1da8a96090b70b9b93111b5b42be0b97cfb66bed >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc017-lineposition.html >@@ -0,0 +1,68 @@ >+<html> >+ <head> >+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> >+ >+ <script src=../media-file.js></script> >+ <script src=../video-test.js></script> >+ <script> >+ >+ var numberTests = 0; >+ >+ function trackLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "7"); >+ >+ testExpected("video.textTracks[" + i + "].cues[0].linePosition","0"); >+ testExpected("video.textTracks[" + i + "].cues[0].snapToLines",false); >+ >+ testExpected("video.textTracks[" + i + "].cues[1].linePosition","0"); >+ testExpected("video.textTracks[" + i + "].cues[1].snapToLines",true); >+ >+ testExpected("video.textTracks[" + i + "].cues[2].linePosition","50"); >+ testExpected("video.textTracks[" + i + "].cues[2].snapToLines",false); >+ >+ testExpected("video.textTracks[" + i + "].cues[3].linePosition","5"); >+ testExpected("video.textTracks[" + i + "].cues[3].snapToLines",true); >+ >+ testExpected("video.textTracks[" + i + "].cues[4].linePosition","100"); >+ testExpected("video.textTracks[" + i + "].cues[4].snapToLines",false); >+ >+ testExpected("video.textTracks[" + i + "].cues[5].linePosition","-1"); >+ testExpected("video.textTracks[" + i + "].cues[5].snapToLines",true); >+ >+ testExpected("video.textTracks[" + i + "].cues[6].linePosition","500"); >+ testExpected("video.textTracks[" + i + "].cues[6].snapToLines",true); >+ >+ allTestsEnded(); >+ } >+ >+ function trackWithErrorLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "6"); >+ >+ for (cue = 0; cue < video.textTracks[i].cues.length; cue++) { >+ testExpected("video.textTracks[" + i + "].cues[" + cue + "].linePosition","-1"); >+ testExpected("video.textTracks[" + i + "].cues[" + cue + "].snapToLines",true); >+ } >+ >+ allTestsEnded(); >+ } >+ >+ function allTestsEnded() >+ { >+ numberTests++; >+ if (numberTests >= 2) >+ endTest(); >+ } >+ </script> >+ </head> >+ <body> >+ <p>Tests cue line position from settings.</p> >+ <video> >+ <track src="captions/tc017_linepos.vtt" onload="trackLoaded(0)"> >+ <track src="captions/tc017_lineposbad.vtt" onload="trackWithErrorLoaded(1)"> >+ </video> >+ </body> >+</html> >\ No newline at end of file >diff --git a/LayoutTests/media/track/track-webvtt-tc018-align_text_lineposition-expected.txt b/LayoutTests/media/track/track-webvtt-tc018-align_text_lineposition-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..2f630050699744634053fceeebb797eba60d281f >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc018-align_text_lineposition-expected.txt >@@ -0,0 +1,38 @@ >+Tests cue alignment, line and text position from settings. >+ >+EXPECTED (video.textTracks[0].cues.length == '5') OK >+EXPECTED (video.textTracks[0].cues[0].alignment == 'start') OK >+EXPECTED (video.textTracks[0].cues[0].textPosition == '10') OK >+EXPECTED (video.textTracks[0].cues[0].linePosition == '0') OK >+EXPECTED (video.textTracks[0].cues[0].snapToLines == 'false') OK >+EXPECTED (video.textTracks[0].cues[1].alignment == 'start') OK >+EXPECTED (video.textTracks[0].cues[1].textPosition == '50') OK >+EXPECTED (video.textTracks[0].cues[1].linePosition == '0') OK >+EXPECTED (video.textTracks[0].cues[1].snapToLines == 'true') OK >+EXPECTED (video.textTracks[0].cues[2].alignment == 'middle') OK >+EXPECTED (video.textTracks[0].cues[2].textPosition == '80') OK >+EXPECTED (video.textTracks[0].cues[2].linePosition == '80') OK >+EXPECTED (video.textTracks[0].cues[2].snapToLines == 'false') OK >+EXPECTED (video.textTracks[0].cues[3].alignment == 'end') OK >+EXPECTED (video.textTracks[0].cues[3].textPosition == '30') OK >+EXPECTED (video.textTracks[0].cues[3].linePosition == '5') OK >+EXPECTED (video.textTracks[0].cues[3].snapToLines == 'true') OK >+EXPECTED (video.textTracks[0].cues[4].alignment == 'middle') OK >+EXPECTED (video.textTracks[0].cues[4].textPosition == '60') OK >+EXPECTED (video.textTracks[0].cues[4].linePosition == '-3') OK >+EXPECTED (video.textTracks[0].cues[4].snapToLines == 'true') OK >+EXPECTED (video.textTracks[1].cues.length == '3') OK >+EXPECTED (video.textTracks[1].cues[0].alignment == 'middle') OK >+EXPECTED (video.textTracks[1].cues[0].textPosition == '50') OK >+EXPECTED (video.textTracks[1].cues[0].linePosition == '-1') OK >+EXPECTED (video.textTracks[1].cues[0].snapToLines == 'true') OK >+EXPECTED (video.textTracks[1].cues[1].alignment == 'end') OK >+EXPECTED (video.textTracks[1].cues[1].textPosition == '0') OK >+EXPECTED (video.textTracks[1].cues[1].linePosition == '-1') OK >+EXPECTED (video.textTracks[1].cues[1].snapToLines == 'true') OK >+EXPECTED (video.textTracks[1].cues[2].alignment == 'middle') OK >+EXPECTED (video.textTracks[1].cues[2].textPosition == '60') OK >+EXPECTED (video.textTracks[1].cues[2].linePosition == '-3') OK >+EXPECTED (video.textTracks[1].cues[2].snapToLines == 'true') OK >+END OF TEST >+ >diff --git a/LayoutTests/media/track/track-webvtt-tc018-align_text_lineposition.html b/LayoutTests/media/track/track-webvtt-tc018-align_text_lineposition.html >new file mode 100644 >index 0000000000000000000000000000000000000000..369c61a29939f5ae1314e160afccf9f03d4bc6a6 >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc018-align_text_lineposition.html >@@ -0,0 +1,82 @@ >+<html> >+ <head> >+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> >+ >+ <script src=../media-file.js></script> >+ <script src=../video-test.js></script> >+ <script> >+ >+ var numberTests = 0; >+ >+ function trackLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "5"); >+ >+ testExpected("video.textTracks[" + i + "].cues[0].alignment","start"); >+ testExpected("video.textTracks[" + i + "].cues[0].textPosition","10"); >+ testExpected("video.textTracks[" + i + "].cues[0].linePosition","0"); >+ testExpected("video.textTracks[" + i + "].cues[0].snapToLines",false); >+ >+ testExpected("video.textTracks[" + i + "].cues[1].alignment","start"); >+ testExpected("video.textTracks[" + i + "].cues[1].textPosition","50"); >+ testExpected("video.textTracks[" + i + "].cues[1].linePosition","0"); >+ testExpected("video.textTracks[" + i + "].cues[1].snapToLines",true); >+ >+ testExpected("video.textTracks[" + i + "].cues[2].alignment","middle"); >+ testExpected("video.textTracks[" + i + "].cues[2].textPosition","80"); >+ testExpected("video.textTracks[" + i + "].cues[2].linePosition","80"); >+ testExpected("video.textTracks[" + i + "].cues[2].snapToLines",false); >+ >+ testExpected("video.textTracks[" + i + "].cues[3].alignment","end"); >+ testExpected("video.textTracks[" + i + "].cues[3].textPosition","30"); >+ testExpected("video.textTracks[" + i + "].cues[3].linePosition","5"); >+ testExpected("video.textTracks[" + i + "].cues[3].snapToLines",true); >+ >+ testExpected("video.textTracks[" + i + "].cues[4].alignment","middle"); >+ testExpected("video.textTracks[" + i + "].cues[4].textPosition","60"); >+ testExpected("video.textTracks[" + i + "].cues[4].linePosition","-3"); >+ testExpected("video.textTracks[" + i + "].cues[4].snapToLines",true); >+ >+ allTestsEnded(); >+ } >+ >+ function trackWithErrorLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "3"); >+ >+ testExpected("video.textTracks[" + i + "].cues[0].alignment","middle"); >+ testExpected("video.textTracks[" + i + "].cues[0].textPosition","50"); >+ testExpected("video.textTracks[" + i + "].cues[0].linePosition","-1"); >+ testExpected("video.textTracks[" + i + "].cues[0].snapToLines",true); >+ >+ testExpected("video.textTracks[" + i + "].cues[1].alignment","end"); >+ testExpected("video.textTracks[" + i + "].cues[1].textPosition","0"); >+ testExpected("video.textTracks[" + i + "].cues[1].linePosition","-1"); >+ testExpected("video.textTracks[" + i + "].cues[1].snapToLines",true); >+ >+ testExpected("video.textTracks[" + i + "].cues[2].alignment","middle"); >+ testExpected("video.textTracks[" + i + "].cues[2].textPosition","60"); >+ testExpected("video.textTracks[" + i + "].cues[2].linePosition","-3"); >+ testExpected("video.textTracks[" + i + "].cues[2].snapToLines",true); >+ >+ allTestsEnded(); >+ } >+ >+ function allTestsEnded() >+ { >+ numberTests++; >+ if (numberTests >= 2) >+ endTest(); >+ } >+ </script> >+ </head> >+ <body> >+ <p>Tests cue alignment, line and text position from settings.</p> >+ <video> >+ <track src="captions/tc018_align_text_linepos.vtt" onload="trackLoaded(0)"> >+ <track src="captions/tc018_align_text_lineposbad.vtt" onload="trackWithErrorLoaded(1)"> >+ </video> >+ </body> >+</html> >\ No newline at end of file >diff --git a/LayoutTests/media/track/track-webvtt-tc019-cuesize-expected.txt b/LayoutTests/media/track/track-webvtt-tc019-cuesize-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..ad34d11a806b0f3a48c8c3fc07b51c0d466f4d4b >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc019-cuesize-expected.txt >@@ -0,0 +1,12 @@ >+Tests cue size from settings. >+ >+EXPECTED (video.textTracks[0].cues.length == '3') OK >+EXPECTED (video.textTracks[0].cues[0].size == '100') OK >+EXPECTED (video.textTracks[0].cues[1].size == '10') OK >+EXPECTED (video.textTracks[0].cues[2].size == '0') OK >+EXPECTED (video.textTracks[1].cues.length == '3') OK >+EXPECTED (video.textTracks[1].cues[0].size == '100') OK >+EXPECTED (video.textTracks[1].cues[1].size == '100') OK >+EXPECTED (video.textTracks[1].cues[2].size == '100') OK >+END OF TEST >+ >diff --git a/LayoutTests/media/track/track-webvtt-tc019-cuesize.html b/LayoutTests/media/track/track-webvtt-tc019-cuesize.html >new file mode 100644 >index 0000000000000000000000000000000000000000..a514ed6d91f542380ff72f14b894a89cc45e6cc2 >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc019-cuesize.html >@@ -0,0 +1,50 @@ >+<html> >+ <head> >+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> >+ >+ <script src=../media-file.js></script> >+ <script src=../video-test.js></script> >+ <script> >+ >+ var numberTests = 0; >+ >+ function trackLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "3"); >+ >+ testExpected("video.textTracks[" + i + "].cues[0].size","100"); >+ testExpected("video.textTracks[" + i + "].cues[1].size","10"); >+ testExpected("video.textTracks[" + i + "].cues[2].size","0"); >+ >+ allTestsEnded(); >+ } >+ >+ function trackWithErrorLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "3"); >+ >+ testExpected("video.textTracks[" + i + "].cues[0].size","100"); >+ testExpected("video.textTracks[" + i + "].cues[1].size","100"); >+ testExpected("video.textTracks[" + i + "].cues[2].size","100"); >+ >+ allTestsEnded(); >+ } >+ >+ function allTestsEnded() >+ { >+ numberTests++; >+ if (numberTests >= 2) >+ endTest(); >+ } >+ </script> >+ </head> >+ <body> >+ <p>Tests cue size from settings.</p> >+ <video> >+ <track src="captions/tc019_cuesize.vtt" onload="trackLoaded(0)"> >+ <track src="captions/tc019_cuesizebad.vtt" onload="trackWithErrorLoaded(1)"> >+ </video> >+ </body> >+</html> >\ No newline at end of file >diff --git a/LayoutTests/media/track/track-webvtt-tc020-cuesizealign-expected.txt b/LayoutTests/media/track/track-webvtt-tc020-cuesizealign-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..a43d6d3b66a4ccb5496aaf544fd8e95e0c57b2c1 >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc020-cuesizealign-expected.txt >@@ -0,0 +1,18 @@ >+Tests cue size and alignment from settings. >+ >+EXPECTED (video.textTracks[0].cues.length == '3') OK >+EXPECTED (video.textTracks[0].cues[0].size == '100') OK >+EXPECTED (video.textTracks[0].cues[0].alignment == 'start') OK >+EXPECTED (video.textTracks[0].cues[1].size == '10') OK >+EXPECTED (video.textTracks[0].cues[1].alignment == 'end') OK >+EXPECTED (video.textTracks[0].cues[2].size == '0') OK >+EXPECTED (video.textTracks[0].cues[2].alignment == 'middle') OK >+EXPECTED (video.textTracks[1].cues.length == '3') OK >+EXPECTED (video.textTracks[1].cues[0].size == '100') OK >+EXPECTED (video.textTracks[1].cues[0].alignment == 'middle') OK >+EXPECTED (video.textTracks[1].cues[1].size == '100') OK >+EXPECTED (video.textTracks[1].cues[1].alignment == 'end') OK >+EXPECTED (video.textTracks[1].cues[2].size == '100') OK >+EXPECTED (video.textTracks[1].cues[2].alignment == 'middle') OK >+END OF TEST >+ >diff --git a/LayoutTests/media/track/track-webvtt-tc020-cuesizealign.html b/LayoutTests/media/track/track-webvtt-tc020-cuesizealign.html >new file mode 100644 >index 0000000000000000000000000000000000000000..ddeaf3c85051e816c04b236b8b1bef473cbf23e7 >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc020-cuesizealign.html >@@ -0,0 +1,56 @@ >+<html> >+ <head> >+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> >+ >+ <script src=../media-file.js></script> >+ <script src=../video-test.js></script> >+ <script> >+ >+ var numberTests = 0; >+ >+ function trackLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "3"); >+ >+ testExpected("video.textTracks[" + i + "].cues[0].size","100"); >+ testExpected("video.textTracks[" + i + "].cues[0].alignment","start"); >+ testExpected("video.textTracks[" + i + "].cues[1].size","10"); >+ testExpected("video.textTracks[" + i + "].cues[1].alignment","end"); >+ testExpected("video.textTracks[" + i + "].cues[2].size","0"); >+ testExpected("video.textTracks[" + i + "].cues[2].alignment","middle"); >+ >+ allTestsEnded(); >+ } >+ >+ function trackWithErrorLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "3"); >+ >+ testExpected("video.textTracks[" + i + "].cues[0].size","100"); >+ testExpected("video.textTracks[" + i + "].cues[0].alignment","middle"); >+ testExpected("video.textTracks[" + i + "].cues[1].size","100"); >+ testExpected("video.textTracks[" + i + "].cues[1].alignment","end"); >+ testExpected("video.textTracks[" + i + "].cues[2].size","100"); >+ testExpected("video.textTracks[" + i + "].cues[2].alignment","middle"); >+ >+ allTestsEnded(); >+ } >+ >+ function allTestsEnded() >+ { >+ numberTests++; >+ if (numberTests >= 2) >+ endTest(); >+ } >+ </script> >+ </head> >+ <body> >+ <p>Tests cue size and alignment from settings.</p> >+ <video> >+ <track src="captions/tc020_cuesize_align.vtt" onload="trackLoaded(0)"> >+ <track src="captions/tc020_cuesize_alignbad.vtt" onload="trackWithErrorLoaded(1)"> >+ </video> >+ </body> >+</html> >\ No newline at end of file >diff --git a/LayoutTests/media/track/track-webvtt-tc021-valign-expected.txt b/LayoutTests/media/track/track-webvtt-tc021-valign-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..ea6d8e1071bf54479b2bc415654e3693b91619f8 >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc021-valign-expected.txt >@@ -0,0 +1,20 @@ >+Tests cue vertical alignment (direction) from settings. >+ >+EXPECTED (video.textTracks[0].cues.length == '3') OK >+EXPECTED (video.textTracks[0].cues[0].direction == 'vertical') OK >+EXPECTED (video.textTracks[0].cues[1].direction == 'vertical-lr') OK >+EXPECTED (video.textTracks[0].cues[2].direction == 'vertical') OK >+EXPECTED (video.textTracks[0].cues[2].alignment == 'start') OK >+EXPECTED (video.textTracks[0].cues[2].textPosition == '0') OK >+EXPECTED (video.textTracks[1].cues.length == '3') OK >+EXPECTED (video.textTracks[1].cues[0].direction == 'vertical') OK >+EXPECTED (video.textTracks[1].cues[1].direction == 'vertical-lr') OK >+EXPECTED (video.textTracks[1].cues[2].direction == 'vertical') OK >+EXPECTED (video.textTracks[1].cues[2].alignment == 'start') OK >+EXPECTED (video.textTracks[1].cues[2].textPosition == '0') OK >+EXPECTED (video.textTracks[2].cues.length == '3') OK >+EXPECTED (video.textTracks[2].cues[0].direction == 'horizontal') OK >+EXPECTED (video.textTracks[2].cues[1].direction == 'horizontal') OK >+EXPECTED (video.textTracks[2].cues[2].direction == 'horizontal') OK >+END OF TEST >+ >diff --git a/LayoutTests/media/track/track-webvtt-tc021-valign.html b/LayoutTests/media/track/track-webvtt-tc021-valign.html >new file mode 100644 >index 0000000000000000000000000000000000000000..50df529d7038a59a0a59d070de2eedd00ad8846f >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc021-valign.html >@@ -0,0 +1,53 @@ >+<html> >+ <head> >+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> >+ >+ <script src=../media-file.js></script> >+ <script src=../video-test.js></script> >+ <script> >+ >+ var numberTests = 0; >+ >+ function trackLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "3"); >+ >+ testExpected("video.textTracks[" + i + "].cues[0].direction","vertical"); >+ testExpected("video.textTracks[" + i + "].cues[1].direction","vertical-lr"); >+ testExpected("video.textTracks[" + i + "].cues[2].direction","vertical"); >+ testExpected("video.textTracks[" + i + "].cues[2].alignment","start"); >+ testExpected("video.textTracks[" + i + "].cues[2].textPosition","0"); >+ >+ allTestsEnded(); >+ } >+ >+ function trackWithErrorLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "3"); >+ >+ testExpected("video.textTracks[" + i + "].cues[0].direction","horizontal"); >+ testExpected("video.textTracks[" + i + "].cues[1].direction","horizontal"); >+ testExpected("video.textTracks[" + i + "].cues[2].direction","horizontal"); >+ >+ allTestsEnded(); >+ } >+ >+ function allTestsEnded() >+ { >+ numberTests++; >+ if (numberTests >= 3) >+ endTest(); >+ } >+ </script> >+ </head> >+ <body> >+ <p>Tests cue vertical alignment (direction) from settings.</p> >+ <video> >+ <track src="captions/tc021_valign.vtt" onload="trackLoaded(0)"> >+ <track src="captions/tc021_valign_ltr.vtt" onload="trackLoaded(1)"> >+ <track src="captions/tc021_valignbad.vtt" onload="trackWithErrorLoaded(2)"> >+ </video> >+ </body> >+</html> >\ No newline at end of file >diff --git a/LayoutTests/media/track/track-webvtt-tc022-entities-expected.txt b/LayoutTests/media/track/track-webvtt-tc022-entities-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..aede12ec6df3e31b3c8400822085657c6605b7fc >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc022-entities-expected.txt >@@ -0,0 +1,12 @@ >+Tests special characters &, <, and > in the cue text. >+ >+EXPECTED (video.textTracks[0].cues.length == '3') OK >+EXPECTED (video.textTracks[0].cues[0].getCueAsHTML().textContent == 'This cue has an amp & character.') OK >+EXPECTED (video.textTracks[0].cues[1].getCueAsHTML().textContent == 'This cue has a less than < character.') OK >+EXPECTED (video.textTracks[0].cues[2].getCueAsHTML().textContent == 'This cue has a greater than > character.') OK >+EXPECTED (video.textTracks[1].cues.length == '3') OK >+EXPECTED (video.textTracks[1].cues[0].getCueAsHTML().textContent == 'This cue has an amp character. Ampersand is ignored.') OK >+EXPECTED (video.textTracks[1].cues[1].getCueAsHTML().textContent == 'This cue has a less than ') OK >+EXPECTED (video.textTracks[1].cues[2].getCueAsHTML().textContent == 'This cue has a greater than > character. Since it's not related to a < character, it's just interpreted as text.') OK >+END OF TEST >+ >diff --git a/LayoutTests/media/track/track-webvtt-tc022-entities.html b/LayoutTests/media/track/track-webvtt-tc022-entities.html >new file mode 100644 >index 0000000000000000000000000000000000000000..114332cb6a0138b9dd5d87f61bb1a8a132173a65 >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc022-entities.html >@@ -0,0 +1,50 @@ >+<html> >+ <head> >+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> >+ >+ <script src=../media-file.js></script> >+ <script src=../video-test.js></script> >+ <script> >+ >+ var numberTests = 0; >+ >+ function trackLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "3"); >+ >+ testExpected("video.textTracks[" + i + "].cues[0].getCueAsHTML().textContent","This cue has an amp & character."); >+ testExpected("video.textTracks[" + i + "].cues[1].getCueAsHTML().textContent","This cue has a less than < character."); >+ testExpected("video.textTracks[" + i + "].cues[2].getCueAsHTML().textContent","This cue has a greater than > character."); >+ >+ allTestsEnded(); >+ } >+ >+ function trackWithErrorLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "3"); >+ >+ testExpected("video.textTracks[" + i + "].cues[0].getCueAsHTML().textContent","This cue has an amp character.\nAmpersand is ignored."); >+ testExpected("video.textTracks[" + i + "].cues[1].getCueAsHTML().textContent","This cue has a less than "); >+ testExpected("video.textTracks[" + i + "].cues[2].getCueAsHTML().textContent","This cue has a greater than > character.\nSince it's not related to a < character,\nit's just interpreted as text."); >+ >+ allTestsEnded(); >+ } >+ >+ function allTestsEnded() >+ { >+ numberTests++; >+ if (numberTests >= 2) >+ endTest(); >+ } >+ </script> >+ </head> >+ <body> >+ <p>Tests special characters &, <, and > in the cue text.</p> >+ <video> >+ <track src="captions/tc022_entities.vtt" onload="trackLoaded(0)"> >+ <track src="captions/tc022_entitieswrong.vtt" onload="trackWithErrorLoaded(1)"> >+ </video> >+ </body> >+</html> >\ No newline at end of file >diff --git a/LayoutTests/media/track/track-webvtt-tc023-markup-expected.txt b/LayoutTests/media/track/track-webvtt-tc023-markup-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..8fc643e2fe62be961f2c6f861cc4420fa366b218 >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc023-markup-expected.txt >@@ -0,0 +1,14 @@ >+Tests cues with <b>, <i>, <u>, <rt> and <ruby> tags. >+ >+EXPECTED (video.textTracks[0].cues.length == '4') OK >+EXPECTED (true == 'true') OK >+EXPECTED (true == 'true') OK >+EXPECTED (true == 'true') OK >+EXPECTED (true == 'true') OK >+EXPECTED (video.textTracks[1].cues.length == '4') OK >+EXPECTED (true == 'true') OK >+EXPECTED (true == 'true') OK >+EXPECTED (true == 'true') OK >+EXPECTED (true == 'true') OK >+END OF TEST >+ >diff --git a/LayoutTests/media/track/track-webvtt-tc023-markup.html b/LayoutTests/media/track/track-webvtt-tc023-markup.html >new file mode 100644 >index 0000000000000000000000000000000000000000..061c744dbd79b7183bb949c2d1ec7975d7e1792f >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc023-markup.html >@@ -0,0 +1,115 @@ >+<html> >+ <head> >+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> >+ <script src=../media-file.js></script> >+ <script src=../video-test.js></script> >+ <script> >+ >+ var numberTests = 0; >+ >+ function trackLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "4"); >+ >+ var fragment = document.createDocumentFragment(); >+ fragment.appendChild(document.createTextNode("The following bear is bold:\n")); >+ var bold = document.createElement("b"); >+ bold.appendChild(document.createTextNode("Bear")); >+ fragment.appendChild(bold); >+ fragment.appendChild(document.createTextNode(" is Coming!!!!!")); >+ >+ testExpected(fragment.isEqualNode(video.textTracks[i].cues[0].getCueAsHTML()), true); >+ >+ fragment = document.createDocumentFragment(); >+ fragment.appendChild(document.createTextNode("The following bear is in italics and has a class of \"larger\":\n")); >+ var italics = document.createElement("i"); >+ italics.className = "larger"; >+ italics.appendChild(document.createTextNode("Bear")); >+ fragment.appendChild(italics); >+ fragment.appendChild(document.createTextNode(" is Coming!!!!!")); >+ >+ testExpected(fragment.isEqualNode(video.textTracks[i].cues[1].getCueAsHTML()), true); >+ >+ fragment = document.createDocumentFragment(); >+ fragment.appendChild(document.createTextNode("The following bear is underlined even though the element has a blank:\nI said ")); >+ var underline = document.createElement("u"); >+ underline.appendChild(document.createTextNode("Bear")); >+ fragment.appendChild(underline); >+ fragment.appendChild(document.createTextNode(" is coming!!!!")); >+ >+ testExpected(fragment.isEqualNode(video.textTracks[i].cues[2].getCueAsHTML()), true); >+ >+ fragment = document.createDocumentFragment(); >+ fragment.appendChild(document.createTextNode("The following bear is ruby annotated:\nI said ")); >+ var ruby = document.createElement("ruby"); >+ ruby.appendChild(document.createTextNode("Bear")); >+ var rt = document.createElement("rt"); >+ rt.appendChild(document.createTextNode("bear with me")); >+ ruby.appendChild(rt); >+ fragment.appendChild(ruby); >+ fragment.appendChild(document.createTextNode(" is coming!!!!")); >+ >+ testExpected(fragment.isEqualNode(video.textTracks[i].cues[3].getCueAsHTML()), true); >+ >+ allTestsEnded(); >+ } >+ >+ function trackWithErrorLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "4"); >+ >+ var fragment = document.createDocumentFragment(); >+ fragment.appendChild(document.createTextNode("The following bear starts bold but end is broken:\n")); >+ var bold = document.createElement("b"); >+ bold.appendChild(document.createTextNode("Bear")); >+ bold.appendChild(document.createTextNode(" is Coming!!!!!")); >+ fragment.appendChild(bold); >+ >+ testExpected(fragment.isEqualNode(video.textTracks[i].cues[0].getCueAsHTML()), true); >+ >+ fragment = document.createDocumentFragment(); >+ fragment.appendChild(document.createTextNode("The following bear is not in italics but the markup is removed:\n")); >+ fragment.appendChild(document.createTextNode("Bear")); >+ fragment.appendChild(document.createTextNode(" is Coming!!!!!")); >+ >+ testExpected(fragment.isEqualNode(video.textTracks[i].cues[1].getCueAsHTML()), true); >+ >+ >+ fragment = document.createDocumentFragment(); >+ fragment.appendChild(document.createTextNode("The following bear is not underlined and markup is removed:\nI said ")); >+ fragment.appendChild(document.createTextNode("Bear")); >+ fragment.appendChild(document.createTextNode(" is coming!!!!")); >+ >+ testExpected(fragment.isEqualNode(video.textTracks[i].cues[2].getCueAsHTML()), true); >+ >+ fragment = document.createDocumentFragment(); >+ fragment.appendChild(document.createTextNode("The following bear is not ruby annotated and markup is removed:\nI said ")); >+ fragment.appendChild(document.createTextNode("Bear")); >+ var rt = document.createElement("rt"); >+ rt.appendChild(document.createTextNode("bear with me")); >+ fragment.appendChild(rt); >+ fragment.appendChild(document.createTextNode(" is coming!!!!")); >+ >+ testExpected(fragment.isEqualNode(video.textTracks[i].cues[3].getCueAsHTML()), true); >+ >+ allTestsEnded(); >+ } >+ >+ function allTestsEnded() >+ { >+ numberTests++; >+ if (numberTests >= 2) >+ endTest(); >+ } >+ </script> >+ </head> >+ <body> >+ <p>Tests cues with <b>, <i>, <u>, <rt> and <ruby> tags.</p> >+ <video> >+ <track src="captions/tc023_markup.vtt" onload="trackLoaded(0)"> >+ <track src="captions/tc023_markupbad.vtt" onload="trackWithErrorLoaded(1)"> >+ </video> >+ </body> >+</html> >\ No newline at end of file >diff --git a/LayoutTests/media/track/track-webvtt-tc024-timestamp-expected.txt b/LayoutTests/media/track/track-webvtt-tc024-timestamp-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..f7a2beb61a2088c3f8db1c4985587b31ed16cca1 >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc024-timestamp-expected.txt >@@ -0,0 +1,12 @@ >+Tests cues with <timestamps> tags. >+ >+EXPECTED (video.textTracks[0].cues.length == '3') OK >+EXPECTED (video.textTracks[0].cues[0].getCueAsHTML().textContent == 'This cue is painted on.') OK >+EXPECTED (video.textTracks[0].cues[1].getCueAsHTML().textContent == 'I said Bear is coming!!!!') OK >+EXPECTED (video.textTracks[0].cues[2].getCueAsHTML().textContent == 'I said Bear is coming now!!!!') OK >+EXPECTED (video.textTracks[1].cues.length == '3') OK >+EXPECTED (video.textTracks[1].cues[0].getCueAsHTML().textContent == 'This cue is painted on. But since the last two timestamps are out of order, they are ignored.') OK >+EXPECTED (video.textTracks[1].cues[1].getCueAsHTML().textContent == 'I said Bear is coming!!!! All of these timestamps are before the start of the cue, so get ignored.') OK >+EXPECTED (video.textTracks[1].cues[2].getCueAsHTML().textContent == 'I said Bear is coming now!!!! All of these timestamps are after the end of the cue, so get ignored.') OK >+END OF TEST >+ >diff --git a/LayoutTests/media/track/track-webvtt-tc024-timestamp.html b/LayoutTests/media/track/track-webvtt-tc024-timestamp.html >new file mode 100644 >index 0000000000000000000000000000000000000000..e683ff3f9bf72bbb4aacfd6a69b14266f1cfdaab >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc024-timestamp.html >@@ -0,0 +1,75 @@ >+<html> >+ <head> >+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> >+ >+ <script src=../media-file.js></script> >+ <script src=../video-test.js></script> >+ <script> >+ >+ var numberTests = 0; >+ >+ function trackLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "3"); >+ >+ // Note: Timestamps are handled as ProcessingInstructions, but because ProcessingInstructions >+ // are used in XML and not HTML, they are ignored here. >+ // This should later be tested with oncuechange events. >+ var fragment = document.createDocumentFragment(); >+ fragment.appendChild(document.createTextNode("This cue is painted on.")); >+ >+ testExpected("video.textTracks[" + i + "].cues[0].getCueAsHTML().textContent", fragment.textContent); >+ >+ fragment = document.createDocumentFragment(); >+ fragment.appendChild(document.createTextNode("I said Bear is coming!!!!")); >+ >+ testExpected("video.textTracks[" + i + "].cues[1].getCueAsHTML().textContent", fragment.textContent); >+ >+ fragment = document.createDocumentFragment(); >+ fragment.appendChild(document.createTextNode("I said Bear is coming now!!!!")); >+ >+ testExpected("video.textTracks[" + i + "].cues[2].getCueAsHTML().textContent", fragment.textContent); >+ >+ allTestsEnded(); >+ } >+ >+ function trackWithErrorLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "3"); >+ >+ var fragment = document.createDocumentFragment(); >+ fragment.appendChild(document.createTextNode("This cue is painted on.\nBut since the last two timestamps are out of order, they are ignored.")); >+ >+ testExpected("video.textTracks[" + i + "].cues[0].getCueAsHTML().textContent", fragment.textContent); >+ >+ fragment = document.createDocumentFragment(); >+ fragment.appendChild(document.createTextNode("I said Bear is coming!!!!\nAll of these timestamps are before the start of the cue, so get ignored.")); >+ >+ testExpected("video.textTracks[" + i + "].cues[1].getCueAsHTML().textContent", fragment.textContent); >+ >+ fragment = document.createDocumentFragment(); >+ fragment.appendChild(document.createTextNode("I said Bear is coming now!!!!\nAll of these timestamps are after the end of the cue, so get ignored.")); >+ >+ testExpected("video.textTracks[" + i + "].cues[2].getCueAsHTML().textContent", fragment.textContent); >+ >+ allTestsEnded(); >+ } >+ >+ function allTestsEnded() >+ { >+ numberTests++; >+ if (numberTests >= 2) >+ endTest(); >+ } >+ </script> >+ </head> >+ <body> >+ <p>Tests cues with <timestamps> tags.</p> >+ <video> >+ <track src="captions/tc024_timestamp.vtt" onload="trackLoaded(0)"> >+ <track src="captions/tc024_timestampbad.vtt" onload="trackWithErrorLoaded(1)"> >+ </video> >+ </body> >+</html> >\ No newline at end of file >diff --git a/LayoutTests/media/track/track-webvtt-tc025-classmarkup-expected.txt b/LayoutTests/media/track/track-webvtt-tc025-classmarkup-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..26d26f37998a9e1b25f9e238572c623dc757f81e >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc025-classmarkup-expected.txt >@@ -0,0 +1,12 @@ >+Tests cues with class markup <c>. >+ >+EXPECTED (video.textTracks[0].cues.length == '3') OK >+EXPECTED (true == 'true') OK >+EXPECTED (true == 'true') OK >+EXPECTED (true == 'true') OK >+EXPECTED (video.textTracks[1].cues.length == '3') OK >+EXPECTED (true == 'true') OK >+EXPECTED (true == 'true') OK >+EXPECTED (true == 'true') OK >+END OF TEST >+ >diff --git a/LayoutTests/media/track/track-webvtt-tc025-classmarkup.html b/LayoutTests/media/track/track-webvtt-tc025-classmarkup.html >new file mode 100644 >index 0000000000000000000000000000000000000000..3a823c28613974f2e55a42efa10c01e0d74e15e9 >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc025-classmarkup.html >@@ -0,0 +1,95 @@ >+<html> >+ <head> >+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> >+ >+ <script src=../media-file.js></script> >+ <script src=../video-test.js></script> >+ <script> >+ >+ var numberTests = 0; >+ >+ function trackLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "3"); >+ >+ var fragment = document.createDocumentFragment(); >+ var cspan = document.createElement("span"); >+ cspan.className = "black"; >+ cspan.appendChild(document.createTextNode("Bear is Coming!!!!!")); >+ fragment.appendChild(cspan); >+ >+ testExpected(fragment.isEqualNode(video.textTracks[i].cues[0].getCueAsHTML()), true); >+ >+ fragment = document.createDocumentFragment(); >+ cspan = document.createElement("span"); >+ cspan.className = "green"; >+ cspan.appendChild(document.createTextNode("I said Bear is coming!!!!")); >+ fragment.appendChild(cspan); >+ >+ testExpected(fragment.isEqualNode(video.textTracks[i].cues[1].getCueAsHTML()), true); >+ >+ fragment = document.createDocumentFragment(); >+ fragment.appendChild(document.createTextNode("I said ")); >+ cspan = document.createElement("span"); >+ cspan.className = "red uppercase"; >+ cspan.appendChild(document.createTextNode("Bear is coming now")); >+ fragment.appendChild(cspan); >+ fragment.appendChild(document.createTextNode("!!!!")); >+ >+ testExpected(fragment.isEqualNode(video.textTracks[i].cues[2].getCueAsHTML()), true); >+ >+ allTestsEnded(); >+ } >+ >+ function trackWithErrorLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "3"); >+ >+ var fragment = document.createDocumentFragment(); >+ var cspan = document.createElement("span"); >+ cspan.appendChild(document.createTextNode("Bear is Coming!!!!!")); >+ fragment.appendChild(cspan); >+ fragment.appendChild(document.createTextNode("\nThe space signified an annotation start.")); >+ >+ testExpected(fragment.isEqualNode(video.textTracks[i].cues[0].getCueAsHTML()), true); >+ >+ fragment = document.createDocumentFragment(); >+ cspan = document.createElement("span"); >+ cspan.className = "red&large"; >+ cspan.appendChild(document.createTextNode("I said Bear is coming!!!!")); >+ fragment.appendChild(cspan); >+ fragment.appendChild(document.createTextNode("\nProbably should only allow characters that CSS allows in class names.")); >+ >+ testExpected(fragment.isEqualNode(video.textTracks[i].cues[1].getCueAsHTML()), true); >+ >+ fragment = document.createDocumentFragment(); >+ fragment.appendChild(document.createTextNode("I said ")); >+ cspan = document.createElement("span"); >+ cspan.className = "9red upper+case"; >+ cspan.appendChild(document.createTextNode("Bear is coming now")); >+ fragment.appendChild(cspan); >+ fragment.appendChild(document.createTextNode("!!!!\nProbably should only allow characters that CSS allows in class names.")); >+ >+ testExpected(fragment.isEqualNode(video.textTracks[i].cues[2].getCueAsHTML()), true); >+ >+ allTestsEnded(); >+ } >+ >+ function allTestsEnded() >+ { >+ numberTests++; >+ if (numberTests >= 2) >+ endTest(); >+ } >+ </script> >+ </head> >+ <body> >+ <p>Tests cues with class markup <c>.</p> >+ <video> >+ <track src="captions/tc025_class.vtt" onload="trackLoaded(0)"> >+ <track src="captions/tc025_classbad.vtt" onload="trackWithErrorLoaded(1)"> >+ </video> >+ </body> >+</html> >\ No newline at end of file >diff --git a/LayoutTests/media/track/track-webvtt-tc026-voice-expected.txt b/LayoutTests/media/track/track-webvtt-tc026-voice-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..ed2af8ac64a18849490e02633a72796178733f31 >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc026-voice-expected.txt >@@ -0,0 +1,12 @@ >+Tests cues with voice markup <v>. >+ >+EXPECTED (video.textTracks[0].cues.length == '3') OK >+EXPECTED (true == 'true') OK >+EXPECTED (true == 'true') OK >+EXPECTED (true == 'true') OK >+EXPECTED (video.textTracks[1].cues.length == '3') OK >+EXPECTED (true == 'true') OK >+EXPECTED (true == 'true') OK >+EXPECTED (true == 'true') OK >+END OF TEST >+ >diff --git a/LayoutTests/media/track/track-webvtt-tc026-voice.html b/LayoutTests/media/track/track-webvtt-tc026-voice.html >new file mode 100644 >index 0000000000000000000000000000000000000000..d1f1183505b788900d5fceb9b18d1cbf07f28c11 >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc026-voice.html >@@ -0,0 +1,92 @@ >+<html> >+ <head> >+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> >+ >+ <script src=../media-file.js></script> >+ <script src=../video-test.js></script> >+ <script> >+ >+ var numberTests = 0; >+ >+ function trackLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "3"); >+ >+ var fragment = document.createDocumentFragment(); >+ var q = document.createElement("q"); >+ q.className = "blue"; >+ q.title = "Speaker"; >+ q.appendChild(document.createTextNode("Bear is Coming!!!!!")); >+ fragment.appendChild(q); >+ fragment.appendChild(document.createTextNode("\nText span with a class and an annotation.")); >+ >+ testExpected(fragment.isEqualNode(video.textTracks[i].cues[0].getCueAsHTML()), true); >+ >+ fragment = document.createDocumentFragment(); >+ q = document.createElement("q"); >+ q.title = "Doe Hunter"; >+ q.appendChild(document.createTextNode("I said Bear is coming!!!!")); >+ fragment.appendChild(q); >+ >+ testExpected(fragment.isEqualNode(video.textTracks[i].cues[1].getCueAsHTML()), true); >+ >+ >+ fragment = document.createDocumentFragment(); >+ fragment.appendChild(document.createTextNode("I said ")); >+ q = document.createElement("q"); >+ q.className = "blue"; >+ q.title = "Speaker"; >+ q.appendChild(document.createTextNode("Bear is coming now")); >+ fragment.appendChild(q); >+ fragment.appendChild(document.createTextNode("!!!!")); >+ >+ testExpected(fragment.isEqualNode(video.textTracks[i].cues[2].getCueAsHTML()), true); >+ >+ allTestsEnded(); >+ } >+ >+ function trackWithErrorLoaded(i) >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[" + i + "].cues.length", "3"); >+ >+ var fragment = document.createDocumentFragment(); >+ fragment.appendChild(document.createTextNode("Bear is Coming!!!!!")); >+ fragment.appendChild(document.createTextNode("\nThis is two annotations for an empty tag.")); >+ >+ >+ testExpected(fragment.isEqualNode(video.textTracks[i].cues[0].getCueAsHTML()), true); >+ >+ fragment = document.createDocumentFragment(); >+ fragment.appendChild(document.createTextNode("I said Bear is coming!!!!")); >+ fragment.appendChild(document.createTextNode("\nThis does not parse as a voice tag.")); >+ >+ testExpected(fragment.isEqualNode(video.textTracks[i].cues[1].getCueAsHTML()), true); >+ >+ fragment = document.createDocumentFragment(); >+ fragment.appendChild(document.createTextNode("I said ")); >+ fragment.appendChild(document.createTextNode("Bear is coming now")); >+ fragment.appendChild(document.createTextNode("!!!!\nThis does not parse as a voice tag.")); >+ >+ testExpected(fragment.isEqualNode(video.textTracks[i].cues[2].getCueAsHTML()), true); >+ >+ allTestsEnded(); >+ } >+ >+ function allTestsEnded() >+ { >+ numberTests++; >+ if (numberTests >= 2) >+ endTest(); >+ } >+ </script> >+ </head> >+ <body> >+ <p>Tests cues with voice markup <v>.</p> >+ <video> >+ <track src="captions/tc026_voice.vtt" onload="trackLoaded(0)"> >+ <track src="captions/tc026_voicebad.vtt" onload="trackWithErrorLoaded(1)"> >+ </video> >+ </body> >+</html> >\ No newline at end of file >diff --git a/LayoutTests/media/track/track-webvtt-tc027-emptycue-expected.txt b/LayoutTests/media/track/track-webvtt-tc027-emptycue-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..6aad3bc098e244d7bc8d3ecca41fe7b3f661952c >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc027-emptycue-expected.txt >@@ -0,0 +1,5 @@ >+Tests that empty cues are discarded. >+ >+EXPECTED (video.textTracks[0].cues.length == '0') OK >+END OF TEST >+ >diff --git a/LayoutTests/media/track/track-webvtt-tc027-emptycue.html b/LayoutTests/media/track/track-webvtt-tc027-emptycue.html >new file mode 100644 >index 0000000000000000000000000000000000000000..da528c8685bbaf5ab93d25299b1aee15ab9d8dea >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc027-emptycue.html >@@ -0,0 +1,27 @@ >+<html> >+ <head> >+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> >+ >+ <script src=../media-file.js></script> >+ <script src=../video-test.js></script> >+ <script> >+ >+ var numberTests = 0; >+ >+ function trackLoaded() >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[0].cues.length", "0"); >+ >+ endTest(); >+ } >+ >+ </script> >+ </head> >+ <body> >+ <p>Tests that empty cues are discarded.</p> >+ <video> >+ <track src="captions/tc027_emtycue.vtt" onload="trackLoaded()"> >+ </video> >+ </body> >+</html> >\ No newline at end of file >diff --git a/LayoutTests/media/track/track-webvtt-tc028-unsupportedmarkup-expected.txt b/LayoutTests/media/track/track-webvtt-tc028-unsupportedmarkup-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..426ccd2c1ea39f9546fe8207569c4fb73f2714a5 >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc028-unsupportedmarkup-expected.txt >@@ -0,0 +1,22 @@ >+Tests that unsupported markup is properly ignored. >+ >+EXPECTED (video.textTracks[0].cues.length == '3') OK >+EXPECTED (video.textTracks[0].cues[0].getCueAsHTML().textContent == 'Bear is Coming!!!!! And what kind of a bear it is - just have look.') OK >+EXPECTED (video.textTracks[0].cues[0].getCueAsSource() == ' >+Bear is Coming!!!!! >+ >+And what kind of a bear it is - just have look. >+ >+') OK >+EXPECTED (video.textTracks[0].cues[1].getCueAsHTML().textContent == ' I said Bear is coming!!!! I said Bear is still coming!!!! ') OK >+EXPECTED (video.textTracks[0].cues[1].getCueAsSource() == ' >+I said Bear is coming!!!! >+I said Bear is still coming!!!! >+') OK >+EXPECTED (video.textTracks[0].cues[2].getCueAsHTML().textContent == ' I said Bear is coming now!!!! ') OK >+EXPECTED (video.textTracks[0].cues[2].getCueAsSource() == ' >+I said Bear is coming now!!!! >+ >+') OK >+END OF TEST >+ >diff --git a/LayoutTests/media/track/track-webvtt-tc028-unsupportedmarkup.html b/LayoutTests/media/track/track-webvtt-tc028-unsupportedmarkup.html >new file mode 100644 >index 0000000000000000000000000000000000000000..629d6d52704e262077fba7c050fef6802e219750 >--- /dev/null >+++ b/LayoutTests/media/track/track-webvtt-tc028-unsupportedmarkup.html >@@ -0,0 +1,36 @@ >+<html> >+ <head> >+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> >+ >+ <script src=../media-file.js></script> >+ <script src=../video-test.js></script> >+ <script> >+ >+ var numberTests = 0; >+ >+ function trackLoaded() >+ { >+ findMediaElement(); >+ testExpected("video.textTracks[0].cues.length", "3"); >+ >+ testExpected("video.textTracks[0].cues[0].getCueAsHTML().textContent", "Bear is Coming!!!!!\nAnd what kind of a bear it is - just have look."); >+ testExpected("video.textTracks[0].cues[0].getCueAsSource()", "<h1>Bear is Coming!!!!!</h1>\n<p>And what kind of a bear it is - just have <a href=\"webpage.html\">look</a>.</p>"); >+ >+ testExpected("video.textTracks[0].cues[1].getCueAsHTML().textContent", "\n I said Bear is coming!!!!\n I said Bear is still coming!!!!\n"); >+ testExpected("video.textTracks[0].cues[1].getCueAsSource()", "<ul>\n <li>I said Bear is coming!!!!</li>\n <li>I said Bear is still coming!!!!</li>\n</ul>"); >+ >+ testExpected("video.textTracks[0].cues[2].getCueAsHTML().textContent", "\n I said Bear is coming now!!!!\n \n \n"); >+ testExpected("video.textTracks[0].cues[2].getCueAsSource()", "<ol>\n <li>I said Bear is coming now!!!!</li>\n <li><img src=\"bear.png\" alt=\"mighty bear\"></li>\n <li><video src=\"bear_ad.webm\" controls></video></li>\n</ol>"); >+ >+ endTest(); >+ } >+ >+ </script> >+ </head> >+ <body> >+ <p>Tests that unsupported markup is properly ignored.</p> >+ <video> >+ <track src="captions/tc028_unsupportedmarkup.vtt" onload="trackLoaded()"> >+ </video> >+ </body> >+</html> >\ No newline at end of file
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 65884
:
104956
|
105233
|
105365