| <!DOCTYPE HTML> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <canvas id="canvas"> |
| </canvas> |
| <script> |
| |
| function createAudioTrack() { |
| ac = new AudioContext(); |
| var osc = ac.createOscillator(); |
| var dest = ac.createMediaStreamDestination(); |
| osc.connect(dest); |
| audio_track = dest.stream.getAudioTracks()[0]; |
| |
| assert_equals(audio_track.kind, "audio"); |
| return audio_track; |
| } |
| |
| function createVideoTrack() { |
| canvas = document.getElementById("canvas"); |
| video_track = canvas.captureStream().getVideoTracks()[0]; |
| |
| assert_equals(video_track.kind, "video"); |
| return video_track; |
| } |
| |
| test(t => { |
| audio_track = createAudioTrack(); |
| assert_equals("", audio_track.contentHint); |
| |
| video_track = createVideoTrack(); |
| assert_equals("", video_track.contentHint); |
| }, "Tracks have empty default content hint"); |
| |
| test(t => { |
| audio_track = createAudioTrack(); |
| audio_track.contentHint = "speech"; |
| assert_equals(audio_track.contentHint, "speech"); |
| audio_track.contentHint = "music"; |
| assert_equals(audio_track.contentHint, "music"); |
| audio_track.contentHint = ""; |
| assert_equals(audio_track.contentHint, ""); |
| }, "Accepts valid audio contentHints"); |
| |
| test(t => { |
| audio_track = createAudioTrack(); |
| audio_track.contentHint = "speech"; |
| assert_equals(audio_track.contentHint, "speech"); |
| audio_track.contentHint = "motion"; |
| assert_equals(audio_track.contentHint, "speech", |
| "Audio tracks should ignore video-only contentHints."); |
| audio_track.contentHint = "bogus"; |
| assert_equals(audio_track.contentHint, "speech", |
| "Audio tracks should ignore garbage contentHints"); |
| }, "Audio tracks ignore invalid/video contentHints"); |
| |
| test(t => { |
| video_track = createVideoTrack(); |
| video_track.contentHint = "motion"; |
| assert_equals(video_track.contentHint, "motion"); |
| video_track.contentHint = "detail"; |
| assert_equals(video_track.contentHint, "detail"); |
| video_track.contentHint = "text"; |
| assert_equals(video_track.contentHint, "text"); |
| video_track.contentHint = ""; |
| assert_equals(video_track.contentHint, ""); |
| }, "Accepts valid video contentHints"); |
| |
| test(t => { |
| video_track = createVideoTrack(); |
| video_track.contentHint = "motion"; |
| assert_equals(video_track.contentHint, "motion"); |
| video_track.contentHint = "speech"; |
| assert_equals(video_track.contentHint, "motion", |
| "Video tracks should ignore audio-only contentHints."); |
| video_track.contentHint = "bogus"; |
| assert_equals(video_track.contentHint, "motion", |
| "Video tracks should ignore garbage contentHints"); |
| }, "Video tracks ignore invalid/audio contentHints"); |
| |
| test(t => { |
| video_track = createVideoTrack(); |
| video_track.contentHint = "motion"; |
| assert_equals(video_track.contentHint, "motion"); |
| |
| // Cloning a track should preserve contentHint. |
| video_track_clone = video_track.clone(); |
| assert_equals(video_track_clone.contentHint, "motion"); |
| |
| // Changing a cloned track's contentHint should not change the original. |
| video_track_clone.contentHint = "detail"; |
| assert_equals(video_track_clone.contentHint, "detail"); |
| assert_equals(video_track.contentHint, "motion"); |
| }, "Cloned video tracks have separate contentHints"); |
| |
| test(t => { |
| audio_track = createAudioTrack(); |
| audio_track.contentHint = "speech"; |
| assert_equals(audio_track.contentHint, "speech"); |
| |
| // Cloning a track should preserve contentHint. |
| audio_track_clone = audio_track.clone(); |
| assert_equals(audio_track_clone.contentHint, "speech"); |
| |
| // Changing a cloned track's contentHint should not change the original. |
| audio_track_clone.contentHint = "music"; |
| assert_equals(audio_track_clone.contentHint, "music"); |
| assert_equals(audio_track.contentHint, "speech"); |
| }, "Cloned audio tracks have separate contentHints"); |
| |
| </script> |