mirror of
https://github.com/servo/servo.git
synced 2025-08-06 22:15:33 +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,161 @@
|
|||
function runTest(config,qualifier)
|
||||
{
|
||||
var testname = testnamePrefix( qualifier, config.keysystem ) + ', temporary, keystatuses';
|
||||
|
||||
var configuration = getSimpleConfigurationForContent( config.content );
|
||||
|
||||
if ( config.initDataType && config.initData ) configuration.initDataTypes = [ config.initDataType ];
|
||||
|
||||
async_test(function(test)
|
||||
{
|
||||
var mediaKeySession;
|
||||
var initDataType;
|
||||
var initData;
|
||||
var closed = false;
|
||||
|
||||
// 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 ),
|
||||
key1String = arrayBufferAsString(key1),
|
||||
key2String = arrayBufferAsString(key2);
|
||||
|
||||
function onFailure(error) {
|
||||
forceTestFailureFromPromise(test, error);
|
||||
}
|
||||
|
||||
function processMessage(event)
|
||||
{
|
||||
// No keys added yet.
|
||||
assert_equals(mediaKeySession.keyStatuses.size, 0);
|
||||
|
||||
waitForEventAndRunStep('keystatuseschange', mediaKeySession, processKeyStatusesChange, test);
|
||||
|
||||
// Add keys to session
|
||||
config.messagehandler( event.messageType, event.message ).then( function( response ) {
|
||||
event.target.update( response ).catch(onFailure);
|
||||
});
|
||||
}
|
||||
|
||||
function checkKeyStatusFor2Keys()
|
||||
{
|
||||
// Two keys added, so both should show up in |keyStatuses|.
|
||||
assert_equals(mediaKeySession.keyStatuses.size, 2);
|
||||
|
||||
// Check |keyStatuses| for 2 entries.
|
||||
var result = [];
|
||||
for (let item of mediaKeySession.keyStatuses) {
|
||||
result.push({ key: arrayBufferAsString(item[0]), value: item[1] });
|
||||
}
|
||||
function lexicographical( a, b ) { return a < b ? -1 : a === b ? 0 : +1; }
|
||||
function lexicographicalkey( a, b ) { return lexicographical( a.key, b.key ); }
|
||||
var expected = [{ key: key1String, value: 'usable'}, { key: key2String, value: 'usable'}].sort( lexicographicalkey );
|
||||
assert_equals(JSON.stringify(result),
|
||||
JSON.stringify(expected),
|
||||
"keystatuses should have the two expected keys with keystatus 'usable'");
|
||||
|
||||
// |keyStatuses| must contain both keys.
|
||||
result = [];
|
||||
for (var key of mediaKeySession.keyStatuses.keys()) {
|
||||
result.push(arrayBufferAsString(key));
|
||||
}
|
||||
assert_array_equals(result,
|
||||
[key1String, key2String].sort( lexicographical ),
|
||||
"keyStatuses.keys() should return an iterable over the two expected keys");
|
||||
|
||||
// Both values in |mediaKeySession| should be 'usable'.
|
||||
result = [];
|
||||
for (var value of mediaKeySession.keyStatuses.values()) {
|
||||
result.push(value);
|
||||
}
|
||||
assert_array_equals(result,
|
||||
['usable', 'usable'],
|
||||
"keyStatuses.values() should return an iterable with two 'usable' values");
|
||||
|
||||
// Check |keyStatuses.entries()|.
|
||||
result = [];
|
||||
for (var entry of mediaKeySession.keyStatuses.entries()) {
|
||||
result.push({ key: arrayBufferAsString(entry[0]), value: entry[1] });
|
||||
}
|
||||
assert_equals(JSON.stringify(result),
|
||||
JSON.stringify(expected),
|
||||
"keyStatuses.entries() should return an iterable over the two expected keys, with keystatus 'usable'");
|
||||
|
||||
// forEach() should return both entries.
|
||||
result = [];
|
||||
mediaKeySession.keyStatuses.forEach(function(status, keyId) {
|
||||
result.push({ key: arrayBufferAsString(keyId), value: status });
|
||||
});
|
||||
assert_equals(JSON.stringify(result),
|
||||
JSON.stringify(expected),
|
||||
"keyStatuses.forEach() should iterate over the two expected keys, with keystatus 'usable'");
|
||||
|
||||
// has() and get() should return the expected values.
|
||||
assert_true(mediaKeySession.keyStatuses.has(key1), "keyStatuses should have key1");
|
||||
assert_true(mediaKeySession.keyStatuses.has(key2), "keyStatuses should have key2");
|
||||
assert_equals(mediaKeySession.keyStatuses.get(key1), 'usable', "key1 should have status 'usable'");
|
||||
assert_equals(mediaKeySession.keyStatuses.get(key2), 'usable', "key2 should have status 'usable'");
|
||||
|
||||
// Try some invalid keyIds.
|
||||
var invalid1 = key1.subarray(0, key1.length - 1);
|
||||
assert_false(mediaKeySession.keyStatuses.has(invalid1), "keystatuses should not have invalid key (1)");
|
||||
assert_equals(mediaKeySession.keyStatuses.get(invalid1), undefined, "keystatus value for invalid key should be undefined (1)");
|
||||
|
||||
var invalid2 = key1.subarray(1);
|
||||
assert_false(mediaKeySession.keyStatuses.has(invalid2), "keystatuses should not have invalid key (2)");
|
||||
assert_equals(mediaKeySession.keyStatuses.get(invalid2), undefined, "keystatus value for invalid key should be undefined (2)");
|
||||
|
||||
var invalid3 = new Uint8Array(key1);
|
||||
invalid3[0] += 1;
|
||||
assert_false(mediaKeySession.keyStatuses.has(invalid3), "keystatuses should not have invalid key (3)");
|
||||
assert_equals(mediaKeySession.keyStatuses.get(invalid3), undefined, "keystatus value for invalid key should be undefined (3)");
|
||||
|
||||
var invalid4 = new Uint8Array(key1);
|
||||
invalid4[invalid4.length - 1] -= 1;
|
||||
assert_false(mediaKeySession.keyStatuses.has(invalid4), "keystatuses should not have invalid key (4)");
|
||||
assert_equals(mediaKeySession.keyStatuses.get(invalid4), undefined, "keystatus value for invalid key should be undefined (4)");
|
||||
|
||||
var invalid5 = new Uint8Array(key1.length + 1);
|
||||
invalid5.set(key1, 1); // First element will be 0.
|
||||
assert_false(mediaKeySession.keyStatuses.has(invalid5), "keystatuses should not have invalid key (5)");
|
||||
assert_equals(mediaKeySession.keyStatuses.get(invalid5), undefined, "keystatus value for invalid key should be undefined (5)");
|
||||
|
||||
var invalid6 = new Uint8Array(key1.length + 1);
|
||||
invalid6.set(key1, 0); // Last element will be 0.
|
||||
assert_false(mediaKeySession.keyStatuses.has(invalid6), "keystatuses should not have invalid key (6)");
|
||||
assert_equals(mediaKeySession.keyStatuses.get(invalid6), undefined, "keystatus value for invalid key should be undefined (6)");
|
||||
}
|
||||
|
||||
function processKeyStatusesChange(event)
|
||||
{
|
||||
if ( !closed )
|
||||
{
|
||||
// The first keystatuseschange (caused by update())
|
||||
// should include both keys.
|
||||
checkKeyStatusFor2Keys();
|
||||
|
||||
mediaKeySession.close().catch(onFailure);
|
||||
closed = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// The second keystatuseschange (caused by close())
|
||||
// should not have any keys.
|
||||
assert_equals(mediaKeySession.keyStatuses.size, 0);
|
||||
test.done();
|
||||
}
|
||||
}
|
||||
|
||||
navigator.requestMediaKeySystemAccess( config.keysystem, [ configuration ] ).then(function(access) {
|
||||
return access.createMediaKeys();
|
||||
}).then(test.step_func(function(mediaKeys) {
|
||||
mediaKeySession = mediaKeys.createSession();
|
||||
|
||||
// There should be no keys defined yet.
|
||||
//verifyKeyStatuses(mediaKeySession.keyStatuses, { expected: [], unexpected: [key1, key2] });
|
||||
|
||||
waitForEventAndRunStep('message', mediaKeySession, processMessage, test);
|
||||
return mediaKeySession.generateRequest(config.initDataType, config.initData);
|
||||
})).catch(onFailure);
|
||||
}, testname );
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue