tor-browser

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

clearkey-retrieve-persistent-license.html (2684B)


      1 <!doctype html>
      2 <html>
      3  <head>
      4    <meta charset=utf-8>
      5    <title>Encrypted Media Extensions: persistent-license, retrieve and playback, ClearKey</title>
      6    <link rel="help" href="https://w3c.github.io/encrypted-media/">
      7 
      8    <!-- Helper scripts for Encrypted Media Extensions tests  -->
      9    <script src=/encrypted-media/util/utils.js></script>
     10    <script src=/encrypted-media/util/utf8.js></script>
     11    <script src=/encrypted-media/util/testmediasource.js></script>
     12 
     13  </head>
     14  <body>
     15    <div id='log'></div>
     16 
     17    <div id='video'>
     18      <video id="videoelement" width="200px"></video>
     19    </div>
     20 
     21    <script>
     22    // Wait for a message from the main window with details of our task
     23    window.addEventListener( 'message', function( event ) {
     24 
     25        var config = event.data.config,
     26            configuration = {   initDataTypes: [ config.initDataType ],
     27                                audioCapabilities: [ { contentType: config.audioType } ],
     28                                videoCapabilities: [ { contentType: config.videoType } ],
     29                                sessionTypes: [ 'persistent-license' ] },
     30            assertions = [ ];
     31 
     32        var _mediaKeySession;
     33 
     34        config.video = document.getElementById('videoelement');
     35 
     36        function onComplete() {
     37            window.opener.postMessage({ testResult: assertions }, '*');
     38        }
     39 
     40        function onFailure(error) {
     41            assertions.push( { actual: false, expected: true, message: error.toString() } );
     42            onComplete();
     43        }
     44 
     45        function onTimeupdate(event) {
     46            if ( config.video.currentTime > ( config.duration || 1 ) ) {
     47                config.video.pause();
     48                _mediaKeySession.close()
     49            }
     50        }
     51 
     52        navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ] )
     53        .then(function(access) {
     54            return access.createMediaKeys();
     55        }).then(function(mediaKeys) {
     56            return config.video.setMediaKeys(mediaKeys);
     57        }).then(function() {
     58            config.video.addEventListener('timeupdate', onTimeupdate, true);
     59            _mediaKeySession = config.video.mediaKeys.createSession( 'persistent-license' );
     60            _mediaKeySession.closed.then(onComplete);
     61            return _mediaKeySession.load(event.data.sessionId);
     62        }).then(function( success ) {
     63            if ( !success ) throw new DOMException( 'Could not load session' );
     64            return testmediasource(config);
     65        }).then(function(source) {
     66            config.video.src = URL.createObjectURL(source);
     67            config.video.play();
     68        })
     69        .catch(onFailure);
     70    } );
     71 
     72    </script>
     73  </body>
     74 </html>