MediaStreamTrack-contentHint.html (3829B)
1 <!DOCTYPE HTML> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <canvas id="canvas"> 5 </canvas> 6 <script> 7 8 function createAudioTrack() { 9 ac = new AudioContext(); 10 var osc = ac.createOscillator(); 11 var dest = ac.createMediaStreamDestination(); 12 osc.connect(dest); 13 audio_track = dest.stream.getAudioTracks()[0]; 14 15 assert_equals(audio_track.kind, "audio"); 16 return audio_track; 17 } 18 19 function createVideoTrack() { 20 canvas = document.getElementById("canvas"); 21 video_track = canvas.captureStream().getVideoTracks()[0]; 22 23 assert_equals(video_track.kind, "video"); 24 return video_track; 25 } 26 27 test(t => { 28 audio_track = createAudioTrack(); 29 assert_equals("", audio_track.contentHint); 30 31 video_track = createVideoTrack(); 32 assert_equals("", video_track.contentHint); 33 }, "Tracks have empty default content hint"); 34 35 test(t => { 36 audio_track = createAudioTrack(); 37 audio_track.contentHint = "speech"; 38 assert_equals(audio_track.contentHint, "speech"); 39 audio_track.contentHint = "music"; 40 assert_equals(audio_track.contentHint, "music"); 41 audio_track.contentHint = ""; 42 assert_equals(audio_track.contentHint, ""); 43 }, "Accepts valid audio contentHints"); 44 45 test(t => { 46 audio_track = createAudioTrack(); 47 audio_track.contentHint = "speech"; 48 assert_equals(audio_track.contentHint, "speech"); 49 audio_track.contentHint = "motion"; 50 assert_equals(audio_track.contentHint, "speech", 51 "Audio tracks should ignore video-only contentHints."); 52 audio_track.contentHint = "bogus"; 53 assert_equals(audio_track.contentHint, "speech", 54 "Audio tracks should ignore garbage contentHints"); 55 }, "Audio tracks ignore invalid/video contentHints"); 56 57 test(t => { 58 video_track = createVideoTrack(); 59 video_track.contentHint = "motion"; 60 assert_equals(video_track.contentHint, "motion"); 61 video_track.contentHint = "detail"; 62 assert_equals(video_track.contentHint, "detail"); 63 video_track.contentHint = "text"; 64 assert_equals(video_track.contentHint, "text"); 65 video_track.contentHint = ""; 66 assert_equals(video_track.contentHint, ""); 67 }, "Accepts valid video contentHints"); 68 69 test(t => { 70 video_track = createVideoTrack(); 71 video_track.contentHint = "motion"; 72 assert_equals(video_track.contentHint, "motion"); 73 video_track.contentHint = "speech"; 74 assert_equals(video_track.contentHint, "motion", 75 "Video tracks should ignore audio-only contentHints."); 76 video_track.contentHint = "bogus"; 77 assert_equals(video_track.contentHint, "motion", 78 "Video tracks should ignore garbage contentHints"); 79 }, "Video tracks ignore invalid/audio contentHints"); 80 81 test(t => { 82 video_track = createVideoTrack(); 83 video_track.contentHint = "motion"; 84 assert_equals(video_track.contentHint, "motion"); 85 86 // Cloning a track should preserve contentHint. 87 video_track_clone = video_track.clone(); 88 assert_equals(video_track_clone.contentHint, "motion"); 89 90 // Changing a cloned track's contentHint should not change the original. 91 video_track_clone.contentHint = "detail"; 92 assert_equals(video_track_clone.contentHint, "detail"); 93 assert_equals(video_track.contentHint, "motion"); 94 }, "Cloned video tracks have separate contentHints"); 95 96 test(t => { 97 audio_track = createAudioTrack(); 98 audio_track.contentHint = "speech"; 99 assert_equals(audio_track.contentHint, "speech"); 100 101 // Cloning a track should preserve contentHint. 102 audio_track_clone = audio_track.clone(); 103 assert_equals(audio_track_clone.contentHint, "speech"); 104 105 // Changing a cloned track's contentHint should not change the original. 106 audio_track_clone.contentHint = "music"; 107 assert_equals(audio_track_clone.contentHint, "music"); 108 assert_equals(audio_track.contentHint, "speech"); 109 }, "Cloned audio tracks have separate contentHints"); 110 111 </script>