mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Update web-platform-tests to revision c26470dac73f2df9d4822a0d3482f7eb1ebf57d9
This commit is contained in:
parent
7de87c487b
commit
4d3c932c47
648 changed files with 9014 additions and 4821 deletions
|
@ -0,0 +1,139 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<title>RTCPeerConnection.prototype.setRemoteDescription - replaceTrack</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="RTCPeerConnection-helper.js"></script>
|
||||
<script>
|
||||
'use strict';
|
||||
|
||||
// The following helper functions are called from RTCPeerConnection-helper.js:
|
||||
// getUserMediaTracksAndStreams
|
||||
|
||||
async_test(t => {
|
||||
const caller = new RTCPeerConnection();
|
||||
return getUserMediaTracksAndStreams(2)
|
||||
.then(t.step_func(([tracks, streams]) => {
|
||||
const sender = caller.addTrack(tracks[0]);
|
||||
return sender.replaceTrack(tracks[1])
|
||||
.then(t.step_func(() => {
|
||||
assert_equals(sender.track, tracks[1]);
|
||||
t.done();
|
||||
}));
|
||||
}))
|
||||
.catch(t.step_func(reason => {
|
||||
assert_unreached(reason);
|
||||
}));
|
||||
}, 'replaceTrack() sets the track attribute to a new track.');
|
||||
|
||||
async_test(t => {
|
||||
const caller = new RTCPeerConnection();
|
||||
return getUserMediaTracksAndStreams(1)
|
||||
.then(t.step_func(([tracks, streams]) => {
|
||||
const sender = caller.addTrack(tracks[0]);
|
||||
return sender.replaceTrack(null)
|
||||
.then(t.step_func(() => {
|
||||
assert_equals(sender.track, null);
|
||||
t.done();
|
||||
}));
|
||||
}))
|
||||
.catch(t.step_func(reason => {
|
||||
assert_unreached(reason);
|
||||
}));
|
||||
}, 'replaceTrack() sets the track attribute to null.');
|
||||
|
||||
async_test(t => {
|
||||
const caller = new RTCPeerConnection();
|
||||
return getUserMediaTracksAndStreams(2)
|
||||
.then(t.step_func(([tracks, streams]) => {
|
||||
const sender = caller.addTrack(tracks[0]);
|
||||
assert_equals(sender.track, tracks[0]);
|
||||
sender.replaceTrack(tracks[1]);
|
||||
// replaceTrack() is asynchronous, there should be no synchronously
|
||||
// observable effects.
|
||||
assert_equals(sender.track, tracks[0]);
|
||||
t.done();
|
||||
}))
|
||||
.catch(t.step_func(reason => {
|
||||
assert_unreached(reason);
|
||||
}));
|
||||
}, 'replaceTrack() does not set the track synchronously.');
|
||||
|
||||
async_test(t => {
|
||||
const expectedException = 'InvalidStateError';
|
||||
const caller = new RTCPeerConnection();
|
||||
return getUserMediaTracksAndStreams(2)
|
||||
.then(t.step_func(([tracks, streams]) => {
|
||||
const sender = caller.addTrack(tracks[0]);
|
||||
caller.close();
|
||||
return sender.replaceTrack(tracks[1])
|
||||
.then(t.step_func(() => {
|
||||
assert_unreached('Expected replaceTrack() to be rejected with ' +
|
||||
expectedException + ' but the promise was resolved.');
|
||||
}),
|
||||
t.step_func(e => {
|
||||
assert_equals(e.name, expectedException);
|
||||
t.done();
|
||||
}));
|
||||
}))
|
||||
.catch(t.step_func(reason => {
|
||||
assert_unreached(reason);
|
||||
}));
|
||||
}, 'replaceTrack() rejects when the peer connection is closed.');
|
||||
|
||||
async_test(t => {
|
||||
const expectedException = 'InvalidModificationError';
|
||||
const caller = new RTCPeerConnection();
|
||||
return getUserMediaTracksAndStreams(2)
|
||||
.then(t.step_func(([tracks, streams]) => {
|
||||
const sender = caller.addTrack(tracks[0]);
|
||||
caller.removeTrack(sender);
|
||||
// replaceTrack() should fail because the sender should be inactive after
|
||||
// removeTrack().
|
||||
return sender.replaceTrack(tracks[1])
|
||||
.then(t.step_func(() => {
|
||||
assert_unreached('Expected replaceTrack() to be rejected with ' +
|
||||
expectedException + ' but the promise was resolved.');
|
||||
}),
|
||||
t.step_func(e => {
|
||||
assert_equals(e.name, expectedException);
|
||||
t.done();
|
||||
}));
|
||||
}))
|
||||
.catch(t.step_func(reason => {
|
||||
assert_unreached(reason);
|
||||
}));
|
||||
}, 'replaceTrack() rejects when invoked after removeTrack().');
|
||||
|
||||
async_test(t => {
|
||||
const expectedException = 'InvalidModificationError';
|
||||
const caller = new RTCPeerConnection();
|
||||
return getUserMediaTracksAndStreams(2)
|
||||
.then(t.step_func(([tracks, streams]) => {
|
||||
const sender = caller.addTrack(tracks[0]);
|
||||
let p = sender.replaceTrack(tracks[1])
|
||||
caller.removeTrack(sender);
|
||||
// replaceTrack() should fail because it executes steps in parallel and
|
||||
// queues a task to execute after removeTrack() has occurred. The sender
|
||||
// should be inactive. If this can be racy, update or remove the test.
|
||||
// https://github.com/w3c/webrtc-pc/issues/1728
|
||||
return p.then(t.step_func(() => {
|
||||
assert_unreached('Expected replaceTrack() to be rejected with ' +
|
||||
expectedException + ' but the promise was resolved.');
|
||||
}),
|
||||
t.step_func(e => {
|
||||
assert_equals(e.name, expectedException);
|
||||
t.done();
|
||||
}));
|
||||
}))
|
||||
.catch(t.step_func(reason => {
|
||||
assert_unreached(reason);
|
||||
}));
|
||||
}, 'replaceTrack() rejects after a subsequent removeTrack().');
|
||||
|
||||
// TODO(hbos): Verify that replaceTrack() changes what media is received on
|
||||
// the remote end of two connected peer connections. For video tracks, this
|
||||
// requires Chromium's video tag to update on receiving frames when running
|
||||
// content_shell. https://crbug.com/793808
|
||||
|
||||
</script>
|
Loading…
Add table
Add a link
Reference in a new issue