| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <script src=../media-file.js></script> | 2 <title>Test that user preference for text track kind is honored.</title> |
| 3 <!-- TODO(philipj): Convert test to testharness.js. crbug.com/588956 | 3 <script src="../media-file.js"></script> |
| 4 (Please avoid writing new tests using video-test.js) --> | 4 <script src="../media-controls.js"></script> |
| 5 <script src=../video-test.js></script> | 5 <script src="../../resources/testharness.js"></script> |
| 6 <script src=../media-controls.js></script> | 6 <script src="../../resources/testharnessreport.js"></script> |
| 7 <script> | |
| 8 | |
| 9 var tracks; | |
| 10 var expectedTrack; | |
| 11 function setPreferences() { | |
| 12 if (!window.internals) { | |
| 13 consoleWrite("<b>** This test only works in DRT! **<" + "/b>"); | |
| 14 return; | |
| 15 } | |
| 16 run("internals.setUserPreferredLanguages(['jp', 'es', 'en', 'fr'])"); | |
| 17 } | |
| 18 | |
| 19 function checkExpected(mode, kind, language) { | |
| 20 testExpected("expectedTrack.mode", mode); | |
| 21 testExpected("expectedTrack.kind", kind); | |
| 22 testExpected("expectedTrack.language", language); | |
| 23 } | |
| 24 | |
| 25 function runTests() { | |
| 26 consoleWrite(""); | |
| 27 tracks = video.textTracks; | |
| 28 testExpected("tracks.length", 7); | |
| 29 testUserPrefersDefault(); | |
| 30 testUserPrefersSubtitles(); | |
| 31 testUserPrefersCaptions(); | |
| 32 } | |
| 33 | |
| 34 function testUserPrefersDefault() { | |
| 35 consoleWrite(""); | |
| 36 // User preference is initialized to pick tracks marked as default. | |
| 37 // When multiple default tracks exist, pick the first default track. | |
| 38 expectedTrack = tracks[5]; | |
| 39 checkExpected("showing", "subtitles", "ar"); | |
| 40 } | |
| 41 | |
| 42 function testUserPrefersSubtitles() { | |
| 43 if (window.internals) | |
| 44 internals.settings.setTextTrackKindUserPreference("subtitles"); | |
| 45 consoleWrite(""); | |
| 46 // Displays subtitle track over caption track when both exist in the sam
e language. | |
| 47 expectedTrack = tracks[4]; | |
| 48 checkExpected("showing", "subtitles", "es"); | |
| 49 } | |
| 50 | |
| 51 function testUserPrefersCaptions() { | |
| 52 if (window.internals) | |
| 53 internals.settings.setTextTrackKindUserPreference("captions"); | |
| 54 consoleWrite(""); | |
| 55 expectedTrack = tracks[1]; | |
| 56 checkExpected("showing", "captions", "es"); | |
| 57 | |
| 58 consoleWrite(""); | |
| 59 // Add a subtitle track in user's first preferred language "jp". This tr
ack must | |
| 60 // be displayed over a caption track with a language less preferred by t
he user. | |
| 61 var track = document.createElement('track'); | |
| 62 track.setAttribute('kind', "subtitles"); | |
| 63 track.setAttribute('src', "captions-webvtt/styling.vtt"); | |
| 64 track.setAttribute('srclang', "jp"); | |
| 65 track.setAttribute('onload', 'trackLoaded()'); | |
| 66 video.appendChild(track); | |
| 67 } | |
| 68 | |
| 69 function trackLoaded() { | |
| 70 consoleWrite("EVENT(load)"); | |
| 71 | |
| 72 // Don't log the event name because the order of the two events in not p
redictable. | |
| 73 track = event.target; | |
| 74 expectedTrack = track.track; | |
| 75 testExpected("track.readyState", HTMLTrackElement.LOADED); | |
| 76 checkExpected("showing", "subtitles", "jp"); | |
| 77 consoleWrite(""); | |
| 78 endTest(); | |
| 79 } | |
| 80 | |
| 81 window.onload = function() { | |
| 82 consoleWrite("Test that user preference for text track kind is honored")
; | |
| 83 findMediaElement(); | |
| 84 setPreferences(); | |
| 85 video.src = findMediaFile('video', '../content/test'); | |
| 86 video.currentTime = 0.1; | |
| 87 waitForEvent('canplaythrough', runTests); | |
| 88 } | |
| 89 </script> | |
| 90 <video> | 7 <video> |
| 91 <track src="captions-webvtt/styling.vtt" kind="captions" srclang="de"> | 8 <track src="captions-webvtt/styling.vtt" kind="captions" srclang="de"> |
| 92 <track src="captions-webvtt/styling.vtt" kind="captions" srclang="es"> | 9 <track src="captions-webvtt/styling.vtt" kind="captions" srclang="es"> |
| 93 <track src="captions-webvtt/styling.vtt" kind="captions" srclang="en"> | 10 <track src="captions-webvtt/styling.vtt" kind="captions" srclang="en"> |
| 94 <track src="captions-webvtt/styling.vtt" kind="subtitles" srclang="fr"> | 11 <track src="captions-webvtt/styling.vtt" kind="subtitles" srclang="fr"> |
| 95 <track src="captions-webvtt/styling.vtt" kind="subtitles" srclang="es"> | 12 <track src="captions-webvtt/styling.vtt" kind="subtitles" srclang="es"> |
| 96 <track src="captions-webvtt/styling.vtt" kind="subtitles" srclang="ar" defau
lt> | 13 <track src="captions-webvtt/styling.vtt" kind="subtitles" srclang="ar" defau
lt> |
| 97 <track src="captions-webvtt/styling.vtt" kind="captions" srclang="fr" defaul
t> | 14 <track src="captions-webvtt/styling.vtt" kind="captions" srclang="fr" defaul
t> |
| 98 </video> | 15 </video> |
| 16 <script> |
| 17 async_test(function(t) { |
| 18 var video = document.querySelector("video"); |
| 19 internals.setUserPreferredLanguages(["jp", "es", "en", "fr"]); |
| 20 video.src = findMediaFile("video", "../content/test"); |
| 21 |
| 22 var tracks; |
| 23 var expectedTrack; |
| 24 video.oncanplaythrough = t.step_func(function() { |
| 25 tracks = video.textTracks; |
| 26 assert_equals(tracks.length, 7); |
| 27 testUserPreferencesDefault(); |
| 28 testUserPreferencesSubtitles(); |
| 29 testUserPreferencesCaptions(); |
| 30 }); |
| 31 |
| 32 function testUserPreferencesDefault() { |
| 33 // User preference is initialized to pick tracks marked as default. |
| 34 // When multiple default tracks exist, pick the first default track. |
| 35 expectedTrack = tracks[5]; |
| 36 checkExpected("showing", "subtitles", "ar"); |
| 37 } |
| 38 |
| 39 function testUserPreferencesSubtitles() { |
| 40 internals.settings.setTextTrackKindUserPreference("subtitles"); |
| 41 // Displays subtitle track over caption track when both exist in the sam
e language. |
| 42 expectedTrack = tracks[4]; |
| 43 checkExpected("showing", "subtitles", "es"); |
| 44 } |
| 45 |
| 46 function testUserPreferencesCaptions() { |
| 47 internals.settings.setTextTrackKindUserPreference("captions"); |
| 48 expectedTrack = tracks[1]; |
| 49 checkExpected("showing", "captions", "es"); |
| 50 |
| 51 // Add a subtitle track in user"s first preferred language "jp". |
| 52 // This track must be displayed over a caption track with a |
| 53 // language less preferred by the user. |
| 54 var track = document.createElement("track"); |
| 55 track.setAttribute("kind", "subtitles"); |
| 56 track.setAttribute("src", "captions-webvtt/styling.vtt"); |
| 57 track.setAttribute("srclang", "jp"); |
| 58 |
| 59 track.onload = t.step_func_done(trackLoaded); |
| 60 video.appendChild(track); |
| 61 } |
| 62 |
| 63 function trackLoaded() { |
| 64 track = event.target; |
| 65 expectedTrack = track.track; |
| 66 assert_equals(track.readyState, HTMLTrackElement.LOADED); |
| 67 checkExpected("showing", "subtitles", "jp"); |
| 68 } |
| 69 |
| 70 function checkExpected(mode, kind, language) { |
| 71 assert_equals(expectedTrack.mode, mode); |
| 72 assert_equals(expectedTrack.kind, kind); |
| 73 assert_equals(expectedTrack.language, language); |
| 74 } |
| 75 }); |
| 76 </script> |
| OLD | NEW |