mirror of
https://github.com/servo/servo.git
synced 2025-10-04 02:29:12 +01:00
Update web-platform-tests to revision 6856483bcc86322198f10e0c42385a7f9127eb66
This commit is contained in:
parent
b1a2b6b5bf
commit
ff06f1d031
265 changed files with 7539 additions and 988 deletions
|
@ -249,6 +249,19 @@ function createDataChannelPair(
|
|||
});
|
||||
}
|
||||
|
||||
// Wait for RTP and RTCP stats to arrive
|
||||
async function waitForRtpAndRtcpStats(pc) {
|
||||
while (true) {
|
||||
const report = await pc.getStats();
|
||||
const stats = [...report.values()].filter(({type}) => type.endsWith("bound-rtp"));
|
||||
// Each RTP and RTCP stat has a reference
|
||||
// to the matching stat in the other direction
|
||||
if (stats.length && stats.every(({localId, remoteId}) => localId || remoteId)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Wait for a single message event and return
|
||||
// a promise that resolve when the event fires
|
||||
function awaitMessage(channel) {
|
||||
|
|
|
@ -146,7 +146,7 @@
|
|||
generateVideoReceiveOnlyOffer(pc)
|
||||
.then(offer2 =>
|
||||
pc.setLocalDescription(offer2)
|
||||
.then(offer2 => {
|
||||
.then(() => {
|
||||
assert_session_desc_not_similar(offer1, offer2);
|
||||
assert_equals(pc.signalingState, 'have-local-offer');
|
||||
assert_session_desc_similar(pc.localDescription, offer2);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<meta name="timeout" content="long">
|
||||
<title>RTCPeerConnection.prototype.getStats</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
|
@ -12,6 +13,7 @@
|
|||
// The following helper functions are called from RTCPeerConnection-helper.js:
|
||||
// doSignalingHandshake
|
||||
// getUserMediaTracksAndStreams
|
||||
// waitForRtpAndRtcpStats
|
||||
|
||||
// The following helper functions are called from RTCStats-helper.js
|
||||
// (depends on dictionary-helper.js):
|
||||
|
@ -504,6 +506,10 @@
|
|||
await doSignalingHandshake(caller, callee);
|
||||
await onIceConnectionStateCompleted(caller);
|
||||
|
||||
// Wait until RTCP has arrived so that it can not arrive between
|
||||
// the two get stats calls.
|
||||
await waitForRtpAndRtcpStats(caller);
|
||||
|
||||
let senderReport = await sender.getStats();
|
||||
let trackReport = await caller.getStats(sender.track);
|
||||
|
||||
|
@ -532,6 +538,10 @@
|
|||
await onIceConnectionStateCompleted(caller);
|
||||
let receiver = caller.getReceivers()[0];
|
||||
|
||||
// Wait until RTCP has arrived so that it can not arrive between
|
||||
// the two get stats calls.
|
||||
await waitForRtpAndRtcpStats(caller);
|
||||
|
||||
let receiverReport = await receiver.getStats();
|
||||
let trackReport = await caller.getStats(receiver.track);
|
||||
|
||||
|
|
62
tests/wpt/web-platform-tests/webrtc/RTCQuicStream-helper.js
Normal file
62
tests/wpt/web-platform-tests/webrtc/RTCQuicStream-helper.js
Normal file
|
@ -0,0 +1,62 @@
|
|||
'use strict';
|
||||
|
||||
// This file depends on RTCQuicTransport-helper.js which should be loaded from
|
||||
// the main HTML file.
|
||||
// The following helper methods are called from RTCQuicTransport-helper.js:
|
||||
// makeTwoConnectedQuicTransports
|
||||
|
||||
// Run a test function for as many ways as an RTCQuicStream can transition to
|
||||
// the 'closed' state.
|
||||
// |test_func| will be called with the test as the first argument and the closed
|
||||
// RTCQuicStream as the second argument.
|
||||
function closed_stream_test(test_func, description) {
|
||||
promise_test(async t => {
|
||||
const [ localQuicTransport, remoteQuicTransport ] =
|
||||
await makeTwoConnectedQuicTransports(t);
|
||||
const localStream = localQuicTransport.createStream();
|
||||
localStream.reset();
|
||||
assert_equals(localStream.state, 'closed');
|
||||
return test_func(t, localStream);
|
||||
}, 'Stream closed by local reset(): ' + description);
|
||||
|
||||
promise_test(async t => {
|
||||
const [ localQuicTransport, remoteQuicTransport ] =
|
||||
await makeTwoConnectedQuicTransports(t);
|
||||
const localStream = localQuicTransport.createStream();
|
||||
localStream.write(new Uint8Array(1));
|
||||
const remoteWatcher =
|
||||
new EventWatcher(t, remoteQuicTransport, 'quicstream');
|
||||
const { stream: remoteStream } = await remoteWatcher.wait_for('quicstream');
|
||||
localStream.reset();
|
||||
const remoteStreamWatcher =
|
||||
new EventWatcher(t, remoteStream, 'statechange');
|
||||
await remoteStreamWatcher.wait_for('statechange');
|
||||
assert_equals(remoteStream.state, 'closed');
|
||||
return test_func(t, remoteStream);
|
||||
}, 'Stream closed by remote reset(): ' + description);
|
||||
|
||||
promise_test(async t => {
|
||||
const [ localQuicTransport, remoteQuicTransport ] =
|
||||
await makeTwoConnectedQuicTransports(t);
|
||||
const localStream = localQuicTransport.createStream();
|
||||
localQuicTransport.stop();
|
||||
assert_equals(localStream.state, 'closed');
|
||||
return test_func(t, localStream);
|
||||
}, 'Stream closed by local RTCQuicTransport stop(): ' + description);
|
||||
|
||||
promise_test(async t => {
|
||||
const [ localQuicTransport, remoteQuicTransport ] =
|
||||
await makeTwoConnectedQuicTransports(t);
|
||||
const localStream = localQuicTransport.createStream();
|
||||
localStream.write(new Uint8Array(1));
|
||||
const remoteWatcher =
|
||||
new EventWatcher(t, remoteQuicTransport,
|
||||
[ 'quicstream', 'statechange' ]);
|
||||
const { stream: remoteStream } = await remoteWatcher.wait_for('quicstream');
|
||||
localQuicTransport.stop();
|
||||
await remoteWatcher.wait_for('statechange');
|
||||
assert_equals(localStream.state, 'closed');
|
||||
return test_func(t, localStream);
|
||||
}, 'Stream closed by remote RTCQuicTransport stop(): ' + description);
|
||||
}
|
||||
|
|
@ -5,6 +5,7 @@
|
|||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="RTCIceTransport-extension-helper.js"></script>
|
||||
<script src="RTCQuicTransport-helper.js"></script>
|
||||
<script src="RTCQuicStream-helper.js"></script>
|
||||
<script>
|
||||
'use strict';
|
||||
|
||||
|
@ -14,6 +15,8 @@
|
|||
// The following helper functions are called from RTCQuicTransport-helper.js:
|
||||
// makeStandaloneQuicTransport
|
||||
// makeTwoConnectedQuicTransports
|
||||
// The following helper functions are called from RTCQuicStream-helper.js:
|
||||
// closed_stream_test
|
||||
|
||||
promise_test(async t => {
|
||||
const [ quicTransport, ] = await makeTwoConnectedQuicTransports(t);
|
||||
|
@ -25,6 +28,8 @@ promise_test(async t => {
|
|||
'Expect read buffered amount to be 0.');
|
||||
assert_equals(quicStream.writeBufferedAmount, 0,
|
||||
'Expect write buffered amount to be 0.');
|
||||
assert_greater_than(quicStream.maxWriteBufferedAmount, 0,
|
||||
'Expect max write buffered amount to be greater than 0.');
|
||||
}, 'createStream() returns an RTCQuicStream with initial properties set.');
|
||||
|
||||
promise_test(async t => {
|
||||
|
@ -155,4 +160,97 @@ promise_test(async t => {
|
|||
assert_equals(remoteStream.state, 'closed');
|
||||
}, 'finish() then reset() fires two statechange events on the remote side.');
|
||||
|
||||
promise_test(async t => {
|
||||
const [ localQuicTransport, remoteQuicTransport ] =
|
||||
await makeTwoConnectedQuicTransports(t);
|
||||
const localStream = localQuicTransport.createStream();
|
||||
localStream.write(new Uint8Array(0));
|
||||
assert_equals(localStream.writeBufferedAmount, 0);
|
||||
}, 'write() with an empty array does nothing.');
|
||||
|
||||
promise_test(async t => {
|
||||
const [ localQuicTransport, remoteQuicTransport ] =
|
||||
await makeTwoConnectedQuicTransports(t);
|
||||
const localStream = localQuicTransport.createStream();
|
||||
localStream.write(new Uint8Array([65]));
|
||||
assert_equals(localStream.writeBufferedAmount, 1);
|
||||
localStream.write(new Uint8Array([66, 67]));
|
||||
assert_equals(localStream.writeBufferedAmount, 3);
|
||||
localStream.write(new Uint8Array([68, 69, 70]));
|
||||
assert_equals(localStream.writeBufferedAmount, 6);
|
||||
}, 'write() adds to writeBufferedAmount each call.');
|
||||
|
||||
promise_test(async t => {
|
||||
const [ localQuicTransport, remoteQuicTransport ] =
|
||||
await makeTwoConnectedQuicTransports(t);
|
||||
const localStream = localQuicTransport.createStream();
|
||||
localStream.write(new Uint8Array(localStream.maxWriteBufferedAmount));
|
||||
assert_equals(localStream.writeBufferedAmount,
|
||||
localStream.maxWriteBufferedAmount);
|
||||
}, 'write() can write exactly maxWriteBufferedAmount.');
|
||||
|
||||
promise_test(async t => {
|
||||
const [ localQuicTransport, remoteQuicTransport ] =
|
||||
await makeTwoConnectedQuicTransports(t);
|
||||
const localStream = localQuicTransport.createStream();
|
||||
assert_throws('OperationError',
|
||||
() =>
|
||||
localStream.write(
|
||||
new Uint8Array(localStream.maxWriteBufferedAmount + 1)));
|
||||
assert_equals(localStream.writeBufferedAmount, 0);
|
||||
}, 'write() throws if data longer than maxWriteBufferedAmount.');
|
||||
|
||||
promise_test(async t => {
|
||||
const [ localQuicTransport, remoteQuicTransport ] =
|
||||
await makeTwoConnectedQuicTransports(t);
|
||||
const localStream = localQuicTransport.createStream();
|
||||
localStream.write(new Uint8Array(10));
|
||||
assert_throws('OperationError',
|
||||
() =>
|
||||
localStream.write(
|
||||
new Uint8Array(localStream.maxWriteBufferedAmount)));
|
||||
assert_equals(localStream.writeBufferedAmount, 10);
|
||||
}, 'write() throws if total write buffered amount would be greater than ' +
|
||||
'maxWriteBufferedAmount.');
|
||||
|
||||
promise_test(async t => {
|
||||
const [ localQuicTransport, remoteQuicTransport ] =
|
||||
await makeTwoConnectedQuicTransports(t);
|
||||
const localStream = localQuicTransport.createStream();
|
||||
localStream.finish();
|
||||
assert_throws('InvalidStateError',
|
||||
() => localStream.write(new Uint8Array()));
|
||||
}, 'write() throws InvalidStateError if finish() has been called.');
|
||||
|
||||
closed_stream_test(async (t, stream) => {
|
||||
assert_throws('InvalidStateError', () => stream.write(new Uint8Array()));
|
||||
}, 'write() throws InvalidStateError.');
|
||||
|
||||
promise_test(async t => {
|
||||
const [ localQuicTransport, remoteQuicTransport ] =
|
||||
await makeTwoConnectedQuicTransports(t);
|
||||
const localStream = localQuicTransport.createStream();
|
||||
localStream.write(new Uint8Array(10));
|
||||
localStream.reset();
|
||||
assert_equals(localStream.writeBufferedAmount, 0);
|
||||
}, 'writeBufferedAmount set to 0 after local reset().');
|
||||
|
||||
promise_test(async t => {
|
||||
const [ localQuicTransport, remoteQuicTransport ] =
|
||||
await makeTwoConnectedQuicTransports(t);
|
||||
const localStream = localQuicTransport.createStream();
|
||||
localStream.write(new Uint8Array(10));
|
||||
localQuicTransport.stop();
|
||||
assert_equals(localStream.writeBufferedAmount, 0);
|
||||
}, 'writeBufferedAmount set to 0 after local RTCQuicTransport stop().');
|
||||
|
||||
promise_test(async t => {
|
||||
const [ localQuicTransport, remoteQuicTransport ] =
|
||||
await makeTwoConnectedQuicTransports(t);
|
||||
const localStream = localQuicTransport.createStream();
|
||||
localStream.write(new Uint8Array(10));
|
||||
localStream.finish();
|
||||
assert_equals(localStream.writeBufferedAmount, 10);
|
||||
}, 'writeBufferedAmount maintained after finish() has been called.');
|
||||
|
||||
</script>
|
||||
|
|
|
@ -2129,6 +2129,7 @@ const tests = [
|
|||
checkAddTransceiverWithTrack,
|
||||
checkAddTransceiverWithAddTrack,
|
||||
checkAddTransceiverWithDirection,
|
||||
checkMsidNoTrackId,
|
||||
checkAddTransceiverWithSetRemoteOfferSending,
|
||||
checkAddTransceiverWithSetRemoteOfferNoSend,
|
||||
checkAddTransceiverBadKind,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue