tor-browser

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

events.js (2212B)


      1 function runTest(config,qualifier) {
      2 
      3    var testname = testnamePrefix(qualifier, config.keysystem) + ', basic events';
      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    {
     13        var initDataType;
     14        var initData;
     15        var mediaKeySession;
     16 
     17        function onFailure(error) {
     18            forceTestFailureFromPromise(test, error);
     19        }
     20 
     21        function processMessage(event)
     22        {
     23            assert_true(event instanceof window.MediaKeyMessageEvent);
     24            assert_equals(event.target, mediaKeySession);
     25            assert_equals(event.type, 'message');
     26            assert_in_array(event.messageType,['license-request', 'individualization-request']);
     27 
     28            config.messagehandler( event.messageType, event.message ).then(function(response) {
     29                waitForEventAndRunStep('keystatuseschange', mediaKeySession, test.step_func(processKeyStatusesChange), test);
     30                return mediaKeySession.update( response );
     31            }).catch(onFailure);
     32        }
     33 
     34        function processKeyStatusesChange(event)
     35        {
     36            assert_true(event instanceof Event);
     37            assert_equals(event.target, mediaKeySession);
     38            assert_equals(event.type, 'keystatuseschange');
     39            test.done();
     40        }
     41 
     42        navigator.requestMediaKeySystemAccess(config.keysystem,[configuration]).then(function(access) {
     43            initDataType = access.getConfiguration().initDataTypes[0];
     44 
     45            if (config.initDataType && config.initData) {
     46                initData = config.initData;
     47            } else {
     48                initData = getInitData(config.content, initDataType);
     49            }
     50 
     51            return access.createMediaKeys();
     52        }).then(test.step_func(function(mediaKeys) {
     53            mediaKeySession = mediaKeys.createSession();
     54            waitForEventAndRunStep('message', mediaKeySession, test.step_func(processMessage), test);
     55            return mediaKeySession.generateRequest(initDataType, initData);
     56        })).catch(onFailure);
     57    }, testname );
     58 
     59 }