mirror of
https://github.com/servo/servo.git
synced 2025-08-18 03:45:33 +01:00
Update web-platform-tests to revision 0d318188757a9c996e20b82db201fd04de5aa255
This commit is contained in:
parent
b2a5225831
commit
1a81b18b9f
12321 changed files with 544385 additions and 6 deletions
|
@ -0,0 +1,113 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test Attaching a MediaSource to multiple HTMLMediaElements.</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="mediasource-util.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
function twoMediaElementTest(testFunction, description)
|
||||
{
|
||||
media_test(function(test)
|
||||
{
|
||||
var firstMediaTag = document.createElement('video');
|
||||
var secondMediaTag = document.createElement('video');
|
||||
document.body.appendChild(firstMediaTag);
|
||||
document.body.appendChild(secondMediaTag);
|
||||
|
||||
// Overload done() so that elements added to the document can be
|
||||
// removed.
|
||||
var removeMediaElements = true;
|
||||
var oldTestDone = test.done.bind(test);
|
||||
test.done = function()
|
||||
{
|
||||
if (removeMediaElements) {
|
||||
document.body.removeChild(secondMediaTag);
|
||||
document.body.removeChild(firstMediaTag);
|
||||
removeMediaElements = false;
|
||||
}
|
||||
oldTestDone();
|
||||
};
|
||||
|
||||
testFunction(test, firstMediaTag, secondMediaTag);
|
||||
}, description);
|
||||
}
|
||||
|
||||
twoMediaElementTest(function(test, firstMediaTag, secondMediaTag)
|
||||
{
|
||||
// When attachment of mediaSource to two MediaElements is done
|
||||
// without an intervening stable state, exactly one of the two
|
||||
// MediaElements should successfully attach, and the other one
|
||||
// should get error event due to mediaSource already in 'open'
|
||||
// readyState.
|
||||
var mediaSource = new MediaSource();
|
||||
var mediaSourceURL = URL.createObjectURL(mediaSource);
|
||||
var gotSourceOpen = false;
|
||||
var gotError = false;
|
||||
var doneIfFinished = test.step_func(function()
|
||||
{
|
||||
if (gotSourceOpen && gotError)
|
||||
test.done();
|
||||
});
|
||||
var errorHandler = test.step_func(function(e)
|
||||
{
|
||||
firstMediaTag.removeEventListener('error', errorHandler);
|
||||
secondMediaTag.removeEventListener('error', errorHandler);
|
||||
|
||||
var eventTarget = e.target;
|
||||
var otherTarget;
|
||||
if (eventTarget == firstMediaTag) {
|
||||
otherTarget = secondMediaTag;
|
||||
} else {
|
||||
assert_equals(eventTarget, secondMediaTag, 'Error target check');
|
||||
otherTarget = firstMediaTag;
|
||||
}
|
||||
|
||||
assert_true(eventTarget.error != null, 'Error state on one tag');
|
||||
assert_equals(eventTarget.error.code, MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED, 'Expected error code');
|
||||
assert_equals(otherTarget.error, null, 'No error on other tag');
|
||||
|
||||
assert_equals(eventTarget.networkState, HTMLMediaElement.NETWORK_NO_SOURCE,
|
||||
'Tag with error state networkState');
|
||||
assert_equals(otherTarget.networkState, HTMLMediaElement.NETWORK_LOADING,
|
||||
'Tag without error state networkState');
|
||||
|
||||
gotError = true;
|
||||
doneIfFinished();
|
||||
});
|
||||
|
||||
test.expectEvent(mediaSource, 'sourceopen', 'An attachment succeeded');
|
||||
firstMediaTag.addEventListener('error', errorHandler);
|
||||
secondMediaTag.addEventListener('error', errorHandler);
|
||||
|
||||
firstMediaTag.src = mediaSourceURL;
|
||||
secondMediaTag.src = mediaSourceURL;
|
||||
|
||||
test.waitForExpectedEvents(function()
|
||||
{
|
||||
assert_equals(mediaSource.readyState, 'open', 'Source is opened');
|
||||
gotSourceOpen = true;
|
||||
doneIfFinished();
|
||||
});
|
||||
}, 'Test exactly one succeeds when two MediaElements attach to same MediaSource');
|
||||
|
||||
mediasource_test(function(test, mediaElement, mediaSource) {
|
||||
assert_equals(mediaSource.readyState, 'open', 'Source open');
|
||||
// Set the tag's src attribute. This should close mediaSource,
|
||||
// reattach it to the tag, and initiate source reopening.
|
||||
test.expectEvent(mediaSource, 'sourceopen', 'Source attached again');
|
||||
mediaElement.src = URL.createObjectURL(mediaSource);
|
||||
assert_equals(mediaSource.readyState, 'closed', 'Source closed');
|
||||
|
||||
test.waitForExpectedEvents(function()
|
||||
{
|
||||
assert_equals(mediaSource.readyState, 'open', 'Source reopened');
|
||||
test.done();
|
||||
});
|
||||
}, 'Test that MediaSource can reattach if closed first');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Loading…
Add table
Add a link
Reference in a new issue