| function runTest(config, qualifier) { |
| var testname = testnamePrefix( qualifier, config.keysystem ) |
| + ', setMediaKeys'; |
| |
| var configuration = getSimpleConfigurationForContent( config.content ); |
| |
| if ( config.initDataType && config.initData ) { |
| configuration.initDataTypes = [ config.initDataType ]; |
| } |
| |
| async_test (function (test) { |
| var _video = config.video, |
| _mediaKeys; |
| |
| // Test MediaKeys assignment. |
| assert_equals(_video.mediaKeys, null); |
| assert_equals(typeof _video.setMediaKeys, 'function'); |
| |
| function onFailure(error) { |
| forceTestFailureFromPromise(test, error); |
| } |
| |
| // Try setting mediaKeys to null. |
| _video.setMediaKeys(null).then(function(result) { |
| assert_equals(_video.mediaKeys, null); |
| |
| // setMediaKeys should fail when setting to the wrong type of object - Date. |
| return _video.setMediaKeys(new Date()); |
| }).then(function (result) { |
| assert_unreached('setMediaKeys should fail when setting to wrong kind of object (Date)'); |
| }, function(error) { |
| // The error should be TypeError. |
| assert_equals(error.name, 'TypeError', 'setMediaKeys should return a TypeError when setting to wrong kind of object (Date)'); |
| return navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]); |
| }).then(function(access) { |
| assert_equals(access.keySystem, config.keysystem) |
| return access.createMediaKeys(); |
| }).then(function(result) { |
| _mediaKeys = result; |
| assert_not_equals(_mediaKeys, null); |
| assert_equals(typeof _mediaKeys.createSession, 'function'); |
| return _video.setMediaKeys(_mediaKeys); |
| }).then(function(result) { |
| assert_not_equals(_video.mediaKeys, null); |
| assert_equals(_video.mediaKeys, _mediaKeys); |
| test.done(); |
| }).catch(onFailure); |
| }, testname); |
| } |