tor-browser

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

setmediakeys-to-multiple-video-elements.js (2433B)


      1 function runTest(config, qualifier) {
      2    var testname = testnamePrefix(qualifier, config.keysystem)
      3                                 + ', setMediaKeys to multiple video elements';
      4 
      5    var configuration = getSimpleConfigurationForContent(config.content);
      6 
      7    if ( config.initDataType && config.initData ) {
      8        configuration.initDataTypes = [ config.initDataType ];
      9    }
     10 
     11    async_test (function (test) {
     12        var _video1 = config.video1,
     13            _video2 = config.video2,
     14            _mediaKeys;
     15 
     16        function onFailure(error) {
     17            forceTestFailureFromPromise(test, error);
     18        }
     19 
     20        navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) {
     21            assert_equals(access.keySystem, config.keysystem)
     22            return access.createMediaKeys();
     23        }).then(function(result) {
     24            _mediaKeys = result;
     25            assert_not_equals(_mediaKeys, null);
     26            assert_equals(typeof _mediaKeys.createSession, 'function');
     27            return _video1.setMediaKeys(_mediaKeys);
     28        }).then(function(result) {
     29            assert_not_equals(_video1.mediaKeys, null);
     30            assert_equals(_video1.mediaKeys, _mediaKeys);
     31            // The specification allows this to fail, but it is not required to fail.
     32            return _video2.setMediaKeys(_mediaKeys);
     33        }).then(function(result) {
     34            // Second setMediaKeys is not required to fail.
     35            assert_equals(_video2.mediaKeys, _mediaKeys);
     36            return Promise.resolve();
     37        }, function(error) {
     38            assert_equals(error.constructor, globalThis.QuotaExceededError, 'QuotaExceededError constructor match');
     39            assert_equals(error.quota, null, 'quota');
     40            assert_equals(error.requested, null, 'requested');
     41            assert_not_equals(error.message, '');
     42            // Return something so the promise resolves properly.
     43            return Promise.resolve();
     44        }).then(function() {
     45            // Now clear it from video1.
     46            return _video1.setMediaKeys(null);
     47        }).then(function() {
     48            // Should be assignable to video2.
     49            return _video2.setMediaKeys(_mediaKeys);
     50        }).then(function(result) {
     51            assert_not_equals(_video2.mediaKeys, null);
     52            assert_equals(_video2.mediaKeys, _mediaKeys);
     53            test.done();
     54        }).catch(onFailure);
     55    }, testname);
     56 }