tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>