tor-browser

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

cast-polyfill.js (2744B)


      1 (function() {
      2 
      3    if ( /CrKey\/[0-9]+\.[0-9a-z]+\.[0-9a-z]+/i.exec( navigator.userAgent ) ) {
      4 
      5        var castscript = document.createElement('script');
      6        castscript.type = 'text/javascript';
      7        castscript.src = 'https://www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js'
      8        document.head.appendChild( castscript );
      9 
     10        var _requestMediaKeySystemAccess = navigator.requestMediaKeySystemAccess.bind( navigator ),
     11            _setMediaKeys = HTMLMediaElement.prototype.setMediaKeys,
     12            _load = MediaKeySession.prototype.load;
     13 
     14        MediaKeySession.prototype.load = function load()
     15        {
     16            return _load.call( this ).then( function( success )
     17            {
     18                return success ? this.remove() : false;
     19            }.bind( this ) );
     20        };
     21 
     22        function MediaKeys( mediaKeys )
     23        {
     24            this._mediaKeys = mediaKeys;
     25        }
     26 
     27        MediaKeys.prototype.setServerCertificate = function setServerCertificate( certificate )
     28        {
     29            return this._mediaKeys.setServerCertificate( certificate );
     30        };
     31 
     32        MediaKeys.prototype.createSession = function createSession( sessionType )
     33        {
     34            return this._mediaKeys.createSession( sessionType );
     35        };
     36 
     37        function MediaKeySystemAccess( access )
     38        {
     39            this._access = mediaKeySystemAccess;
     40        }
     41 
     42        Object.defineProperty( MediaKeySystemAccess.prototype, 'keySystem', { get: function() { return this._access.keySystem; } } );
     43 
     44        MediaKeySystemAccess.prototype.getConfiguration = function getConfiguration() { return this._access.getConfiguration(); };
     45 
     46        MediaKeySystemAccess.prototype.createMediaKeys = function createMediaKeys() {
     47 
     48            return this._access.createMediaKey().then( function( mediaKeys ) { return new MediaKeys( mediaKeys ); } );
     49 
     50        };
     51 
     52        HTMLMediaElement.prototype.setMediaKeys = function setMediaKeys( mediaKeys )
     53        {
     54            if ( mediaKeys instanceof MediaKeys )
     55            {
     56                return _setMediaKeys.call( this, mediaKeys._mediaKeys );
     57            }
     58            else
     59            {
     60                return _setMediaKeys.call( this, mediaKeys );
     61            }
     62        };
     63 
     64        navigator.requestMediaKeySystemAccess = function requestMediaKeySystemAccess( keysystem, supportedConfigurations ) {
     65 
     66            if ( keysystem !== 'com.chromecast.playready' )
     67            {
     68                return _requestMediaKeySystemAccess( keysystem, supportedConfigurations );
     69            }
     70 
     71            return _requestMediaKeySystemAccess( keysystem, supportedConfigurations )
     72            .then( function( access ) { return new MediaKeySystemAccess( access ); } );
     73        };
     74    }
     75 })();