mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Update web-platform-tests to revision dc5cbf088edcdb266541d4e5a76149a2c6e716a0
This commit is contained in:
parent
1d40075f03
commit
079092dfea
2381 changed files with 90360 additions and 17722 deletions
|
@ -0,0 +1,107 @@
|
|||
function runTest(config,qualifier)
|
||||
{
|
||||
var testname = testnamePrefix( qualifier, config.keysystem ) + ', temporary, keystatuses, multiple sessions';
|
||||
|
||||
var configuration = getSimpleConfigurationForContent( config.content );
|
||||
|
||||
if ( config.initDataType && config.initData ) configuration.initDataTypes = [ config.initDataType ];
|
||||
|
||||
async_test(function(test)
|
||||
{
|
||||
var mediaKeySession1;
|
||||
var mediaKeySession2;
|
||||
|
||||
// Even though key ids are uint8, using printable values so that
|
||||
// they can be verified easily.
|
||||
var key1 = new Uint8Array( config.content.keys[ 0 ].kid ),
|
||||
key2 = new Uint8Array( config.content.keys[ 1 ].kid );
|
||||
|
||||
function processMessage1(event)
|
||||
{
|
||||
// This should only be called for session1.
|
||||
assert_equals(event.target, mediaKeySession1);
|
||||
|
||||
// No keys added yet.
|
||||
verifyKeyStatuses(mediaKeySession1.keyStatuses, { expected: [], unexpected: [key1, key2] });
|
||||
|
||||
// Add key1 to session1.
|
||||
config.messagehandler( event.messageType, event.message ).then( function( response ) {
|
||||
|
||||
event.target.update( response ).catch(function(error) {
|
||||
forceTestFailureFromPromise(test, error);
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function processKeyStatusesChange1(event)
|
||||
{
|
||||
// This should only be called for session1.
|
||||
assert_equals(event.target, mediaKeySession1);
|
||||
|
||||
// Check that keyStatuses contains the expected key1 only.
|
||||
verifyKeyStatuses(mediaKeySession1.keyStatuses, { expected: [key1], unexpected: [key2] });
|
||||
|
||||
// Now trigger a message event on session2.
|
||||
mediaKeySession2.generateRequest(config.initDataType, config.initData[ 1 ]).catch(function(error) {
|
||||
forceTestFailureFromPromise(test, error);
|
||||
});
|
||||
}
|
||||
|
||||
function processMessage2(event)
|
||||
{
|
||||
// This should only be called for session2.
|
||||
assert_equals(event.target, mediaKeySession2);
|
||||
|
||||
// session2 has no keys added yet.
|
||||
verifyKeyStatuses(mediaKeySession2.keyStatuses, { expected: [], unexpected: [key1, key2] });
|
||||
|
||||
// session1 should still have 1 key.
|
||||
verifyKeyStatuses(mediaKeySession1.keyStatuses, { expected: [key1], unexpected: [key2] });
|
||||
|
||||
// Add key2 to session2.
|
||||
config.messagehandler( event.messageType, event.message ).then( function( response ) {
|
||||
|
||||
event.target.update( response ).catch(function(error) {
|
||||
forceTestFailureFromPromise(test, error);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function processKeyStatusesChange2(event)
|
||||
{
|
||||
// This should only be called for session2.
|
||||
assert_equals(event.target, mediaKeySession2);
|
||||
|
||||
// Check that keyStatuses contains the expected key2 only.
|
||||
verifyKeyStatuses(mediaKeySession2.keyStatuses, { expected: [key2], unexpected: [key1] });
|
||||
|
||||
// session1 should still have 1 key.
|
||||
verifyKeyStatuses(mediaKeySession1.keyStatuses, { expected: [key1], unexpected: [key2] });
|
||||
|
||||
test.done();
|
||||
}
|
||||
|
||||
navigator.requestMediaKeySystemAccess( config.keysystem, [ configuration ] ).then(function(access) {
|
||||
return access.createMediaKeys();
|
||||
}).then(function(mediaKeys) {
|
||||
mediaKeySession1 = mediaKeys.createSession();
|
||||
mediaKeySession2 = mediaKeys.createSession();
|
||||
|
||||
// There should be no keys defined on either session.
|
||||
verifyKeyStatuses(mediaKeySession1.keyStatuses, { expected: [], unexpected: [key1, key2] });
|
||||
verifyKeyStatuses(mediaKeySession2.keyStatuses, { expected: [], unexpected: [key1, key2] });
|
||||
|
||||
// Bind all the event handlers now.
|
||||
waitForEventAndRunStep('message', mediaKeySession1, processMessage1, test);
|
||||
waitForEventAndRunStep('message', mediaKeySession2, processMessage2, test);
|
||||
waitForEventAndRunStep('keystatuseschange', mediaKeySession1, processKeyStatusesChange1, test);
|
||||
waitForEventAndRunStep('keystatuseschange', mediaKeySession2, processKeyStatusesChange2, test);
|
||||
|
||||
// Generate a request on session1.
|
||||
return mediaKeySession1.generateRequest(config.initDataType, config.initData[ 0 ] );
|
||||
}).catch(function(error) {
|
||||
forceTestFailureFromPromise(test, error);
|
||||
});
|
||||
}, testname );
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue