function runTest(config, qualifier) { function checkEncryptionScheme(encryptionScheme) { var simpleConfig = getSimpleConfiguration(); assert_greater_than(simpleConfig[0].audioCapabilities.length, 0); simpleConfig[0].audioCapabilities.forEach(function(capability) { capability.encryptionScheme = encryptionScheme; }); return navigator.requestMediaKeySystemAccess(config.keysystem, simpleConfig) .then( function(access) { var actualConfiguration = access.getConfiguration(); for (let i = 0; i < actualConfiguration.audioCapabilities.length; i++) { const capability = actualConfiguration.audioCapabilities[i]; // If "encryptionScheme" is not supported, fail. if (!('encryptionScheme' in capability)) { return Promise.reject('Not implemented'); } // If "encryptionScheme" is supported, it should be returned. assert_equals(capability.encryptionScheme, encryptionScheme); } return Promise.resolve('Supported'); }, function error() { // CDM does not support "encryptionScheme". Test should still pass. return Promise.resolve('Not supported'); }); } promise_test( () => checkEncryptionScheme('cenc'), testnamePrefix(qualifier, config.keysystem) + ' support for "cenc" encryption scheme.'); promise_test( () => checkEncryptionScheme('cbcs'), testnamePrefix(qualifier, config.keysystem) + ' support for "cbcs" encryption scheme.'); promise_test( () => checkEncryptionScheme('cbcs-1-9'), testnamePrefix(qualifier, config.keysystem) + ' support for "cbcs-1-9" encryption scheme.'); }