summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/encrypted-media/polyfill/firefox-polyfill.js
blob: ce241af362a873af0ba490013790a5be365b9fac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
(function(){
    if(navigator.userAgent.toLowerCase().indexOf('firefox') > -1){

        // Work around https://bugzilla.mozilla.org/show_bug.cgi?id=1282142
        // Firefox does not correctly reject the Clear Key session types it does not support
        var _requestMediaKeySystemAccess = navigator.requestMediaKeySystemAccess.bind( navigator );

        navigator.requestMediaKeySystemAccess = function( keysystem, configurations )
        {
            if ( keysystem !== 'org.w3.clearkey' ) return _requestMediaKeySystemAccess( keysystem, configurations );

            var supported_configurations = configurations.filter( function( c ) {

                return !c.sessionTypes || ( c.sessionTypes.length === 1 && c.sessionTypes[ 0 ] === 'temporary' );

            } );

            if ( supported_configurations.length === 0 ) return Promise.reject( new DOMException( 'None of the requested configurations were supported.' ) );

            return _requestMediaKeySystemAccess( keysystem, supported_configurations );
        }
    }
}());