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 })();