blob: b34c493fd113a91780bf365800b71b98b6a3bfd6 [file] [log] [blame]
// This test is only applicable to clearkey
function runTest(config, qualifier)
{
var testname = testnamePrefix(qualifier, config.keysystem) + ' test handling of non-ASCII responses for update()';
var configuration = getSimpleConfigurationForContent(config.content);
if (config.initDataType) {
configuration.initDataTypes = [config.initDataType];
}
promise_test(function (test) {
var initDataType;
var initData;
var mediaKeySession;
var messageEventFired = false;
return navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function (access) {
initDataType = access.getConfiguration().initDataTypes[0];
initData = getInitData(config.content, initDataType);
return access.createMediaKeys();
}).then(function (mediaKeys) {
mediaKeySession = mediaKeys.createSession();
var eventWatcher = new EventWatcher(test, mediaKeySession, ['message']);
var promise = eventWatcher.wait_for('message');
mediaKeySession.generateRequest(initDataType, initData);
return promise;
}).then(function (messageEvent) {
// |jwkSet| contains a non-ASCII character \uDC00.
var jwkSet = '{"keys":[{'
+ '"kty":"oct",'
+ '"k":"MDEyMzQ1Njc4OTAxMjM0NQ",'
+ '"kid":"MDEyMzQ1Njc4O\uDC00TAxMjM0NQ"'
+ '}]}';
messageEventFired = true;
return messageEvent.target.update(stringToUint8Array(jwkSet));
}).then(function () {
assert_unreached('Error: update() should fail because the processed message has non-ASCII character.');
}).catch(function (error) {
if(messageEventFired){
assert_equals(error.name, 'TypeError');
}
else {
assert_unreached('Error: ' + error.name);
}
});
}, testname);
}