mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-08-30 19:28:40 +09:00
86 lines
No EOL
3.7 KiB
JavaScript
86 lines
No EOL
3.7 KiB
JavaScript
function runTest(config, qualifier) {
|
|
var testname = testnamePrefix( qualifier, config.keysystem )
|
|
+ ', setmediakeys multiple times with different mediakeys';
|
|
|
|
var configuration = getSimpleConfigurationForContent( config.content );
|
|
|
|
async_test (function (test) {
|
|
var _video = config.video,
|
|
_access,
|
|
_mediaKeys1,
|
|
_mediaKeys2,
|
|
fail;
|
|
|
|
// Test MediaKeys assignment.
|
|
assert_equals(_video.mediaKeys, null);
|
|
assert_equals(typeof _video.setMediaKeys, 'function');
|
|
|
|
function onFailure(error) {
|
|
forceTestFailureFromPromise(test, error);
|
|
}
|
|
|
|
navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) {
|
|
_access = access;
|
|
return _access.createMediaKeys();
|
|
}).then(test.step_func(function(result) {
|
|
_mediaKeys1 = result;
|
|
assert_not_equals(_mediaKeys1, null);
|
|
// Create a second mediaKeys.
|
|
return _access.createMediaKeys();
|
|
})).then(test.step_func(function(result) {
|
|
_mediaKeys2 = result;
|
|
assert_not_equals(_mediaKeys2, null);
|
|
// Set _mediaKeys1 on video.
|
|
return _video.setMediaKeys(_mediaKeys1);
|
|
})).then(test.step_func(function() {
|
|
assert_equals(_video.mediaKeys, _mediaKeys1);
|
|
// Set _mediaKeys2 on video (switching MediaKeys).
|
|
return _video.setMediaKeys(_mediaKeys2);
|
|
})).then(test.step_func(function() {
|
|
assert_equals(_video.mediaKeys, _mediaKeys2);
|
|
// Clear mediaKeys from video.
|
|
return _video.setMediaKeys(null);
|
|
})).then(test.step_func(function() {
|
|
assert_equals(_video.mediaKeys, null);
|
|
// Set _mediaKeys1 on video again.
|
|
return _video.setMediaKeys(_mediaKeys1);
|
|
})).then(test.step_func(function() {
|
|
assert_equals(_video.mediaKeys, _mediaKeys1);
|
|
return testmediasource(config);
|
|
})).then(function(source) {
|
|
// Set src attribute on Video Element
|
|
_video.src = URL.createObjectURL(source);
|
|
// Set mediaKeys2 on video element (switching MediaKeys) need not
|
|
// fail after src attribute is set.
|
|
return _video.setMediaKeys(_mediaKeys2);
|
|
})).then(test.step_func(function() {
|
|
// Switching setMediaKeys after setting src attribute on video element
|
|
// is not required to fail.
|
|
assert_equals(_video2.mediaKeys, _mediaKeys2);
|
|
fail = false;
|
|
return Promise.resolve();
|
|
}, test.step_func(function(error) {
|
|
fail = true;
|
|
assert_equals(_video.mediaKeys, _mediaKeys1);
|
|
assert_in_array(error.name, ['InvalidStateError','NotSupportedError']);
|
|
assert_not_equals(error.message, '');
|
|
// Return something so the promise resolves properly.
|
|
return Promise.resolve();
|
|
})).then(function() {
|
|
// Set null mediaKeys on video (clearing MediaKeys) not
|
|
// supported after src attribute is set.
|
|
return _video.setMediaKeys(null);
|
|
}).then(test.step_func(function() {
|
|
assert_unreached('Clearing mediaKeys after setting src should have failed.');
|
|
}), test.step_func(function(error) {
|
|
if(fail) {
|
|
assert_equals(_video.mediaKeys, _mediaKeys1);
|
|
} else {
|
|
assert_equals(_video.mediaKeys, _mediaKeys2);
|
|
}
|
|
assert_is_array(error.name, ['InvalidStateError','ReferenceError']);
|
|
assert_not_equals(error.message, '');
|
|
test.done();
|
|
})).catch(onFailure);
|
|
}, testname);
|
|
} |