mirror of
https://github.com/servo/servo.git
synced 2025-10-04 02:29:12 +01:00
Update web-platform-tests to revision 7a6f5673ff5d146ca5c09c6a1b42b7706cfee328
This commit is contained in:
parent
e2fca1b228
commit
4787b28da3
261 changed files with 8195 additions and 4689 deletions
|
@ -14,8 +14,8 @@
|
|||
t.add_cleanup(() => pc1.close());
|
||||
const stream = await navigator.mediaDevices.getUserMedia(
|
||||
{audio: false, video: true});
|
||||
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
|
||||
const videoTrack = stream.getVideoTracks()[0];
|
||||
t.add_cleanup(() => videoTrack.stop());
|
||||
pc1.addTrack(videoTrack, stream);
|
||||
const offer = await pc1.createOffer();
|
||||
await pc1.setLocalDescription(offer);
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
t.add_cleanup(() => pc.close());
|
||||
|
||||
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
||||
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
|
||||
const [track] = stream.getTracks();
|
||||
|
||||
pc.close();
|
||||
|
@ -64,6 +65,7 @@
|
|||
t.add_cleanup(() => pc.close());
|
||||
|
||||
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
||||
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
|
||||
const [track] = stream.getTracks();
|
||||
|
||||
const sender = pc.addTrack(track);
|
||||
|
@ -95,6 +97,7 @@
|
|||
t.add_cleanup(() => pc.close());
|
||||
|
||||
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
||||
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
|
||||
const [track] = stream.getTracks();
|
||||
|
||||
const sender = pc.addTrack(track, stream);
|
||||
|
@ -111,6 +114,7 @@
|
|||
t.add_cleanup(() => pc.close());
|
||||
|
||||
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
||||
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
|
||||
const [track] = stream.getTracks();
|
||||
|
||||
const stream2 = new MediaStream([track]);
|
||||
|
@ -134,6 +138,7 @@
|
|||
t.add_cleanup(() => pc.close());
|
||||
|
||||
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
||||
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
|
||||
const [track] = stream.getTracks();
|
||||
|
||||
pc.addTrack(track, stream);
|
||||
|
|
|
@ -46,19 +46,17 @@
|
|||
|
||||
}, 'addTransceiver - Calling removeTrack when connection is closed should throw InvalidStateError');
|
||||
|
||||
promise_test(t => {
|
||||
promise_test(async t => {
|
||||
const pc = new RTCPeerConnection();
|
||||
|
||||
t.add_cleanup(() => pc.close());
|
||||
|
||||
return navigator.mediaDevices.getUserMedia({ audio: true })
|
||||
.then(mediaStream => {
|
||||
const [track] = mediaStream.getTracks();
|
||||
const sender = pc.addTrack(track, mediaStream);
|
||||
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
||||
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
|
||||
const [track] = stream.getTracks();
|
||||
const sender = pc.addTrack(track, stream);
|
||||
|
||||
pc.close();
|
||||
assert_throws('InvalidStateError', () => pc.removeTrack(sender));
|
||||
});
|
||||
pc.close();
|
||||
assert_throws('InvalidStateError', () => pc.removeTrack(sender));
|
||||
}, 'addTrack - Calling removeTrack when connection is closed should throw InvalidStateError');
|
||||
|
||||
test(t => {
|
||||
|
@ -73,20 +71,18 @@
|
|||
|
||||
}, 'addTransceiver - Calling removeTrack on different connection that is closed should throw InvalidStateError');
|
||||
|
||||
promise_test(t => {
|
||||
promise_test(async t => {
|
||||
const pc = new RTCPeerConnection();
|
||||
|
||||
t.add_cleanup(() => pc.close());
|
||||
|
||||
return navigator.mediaDevices.getUserMedia({ audio: true })
|
||||
.then(mediaStream => {
|
||||
const [track] = mediaStream.getTracks();
|
||||
const sender = pc.addTrack(track, mediaStream);
|
||||
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
||||
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
|
||||
const [track] = stream.getTracks();
|
||||
const sender = pc.addTrack(track, stream);
|
||||
|
||||
const pc2 = new RTCPeerConnection();
|
||||
pc2.close();
|
||||
assert_throws('InvalidStateError', () => pc2.removeTrack(sender));
|
||||
});
|
||||
const pc2 = new RTCPeerConnection();
|
||||
pc2.close();
|
||||
assert_throws('InvalidStateError', () => pc2.removeTrack(sender));
|
||||
}, 'addTrack - Calling removeTrack on different connection that is closed should throw InvalidStateError');
|
||||
|
||||
/*
|
||||
|
@ -104,19 +100,17 @@
|
|||
|
||||
}, 'addTransceiver - Calling removeTrack on different connection should throw InvalidAccessError');
|
||||
|
||||
promise_test(t => {
|
||||
promise_test(async t => {
|
||||
const pc = new RTCPeerConnection();
|
||||
|
||||
t.add_cleanup(() => pc.close());
|
||||
|
||||
return navigator.mediaDevices.getUserMedia({ audio: true })
|
||||
.then(mediaStream => {
|
||||
const [track] = mediaStream.getTracks();
|
||||
const sender = pc.addTrack(track, mediaStream);
|
||||
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
||||
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
|
||||
const [track] = stream.getTracks();
|
||||
const sender = pc.addTrack(track, stream);
|
||||
|
||||
const pc2 = new RTCPeerConnection();
|
||||
assert_throws('InvalidAccessError', () => pc2.removeTrack(sender));
|
||||
});
|
||||
const pc2 = new RTCPeerConnection();
|
||||
assert_throws('InvalidAccessError', () => pc2.removeTrack(sender));
|
||||
}, 'addTrack - Calling removeTrack on different connection should throw InvalidAccessError')
|
||||
|
||||
/*
|
||||
|
@ -139,21 +133,19 @@
|
|||
|
||||
}, 'addTransceiver - Calling removeTrack with valid sender should set sender.track to null');
|
||||
|
||||
promise_test(t => {
|
||||
promise_test(async t => {
|
||||
const pc = new RTCPeerConnection();
|
||||
|
||||
t.add_cleanup(() => pc.close());
|
||||
|
||||
return navigator.mediaDevices.getUserMedia({ audio: true })
|
||||
.then(mediaStream => {
|
||||
const [track] = mediaStream.getTracks();
|
||||
const sender = pc.addTrack(track, mediaStream);
|
||||
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
||||
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
|
||||
const [track] = stream.getTracks();
|
||||
const sender = pc.addTrack(track, stream);
|
||||
|
||||
assert_equals(sender.track, track);
|
||||
assert_equals(sender.track, track);
|
||||
|
||||
pc.removeTrack(sender);
|
||||
assert_equals(sender.track, null);
|
||||
});
|
||||
pc.removeTrack(sender);
|
||||
assert_equals(sender.track, null);
|
||||
}, 'addTrack - Calling removeTrack with valid sender should set sender.track to null');
|
||||
|
||||
/*
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
t.add_cleanup(() => callee.close());
|
||||
const localStream =
|
||||
await navigator.mediaDevices.getUserMedia({audio: true});
|
||||
t.add_cleanup(() => localStream.getTracks().forEach(track => track.stop()));
|
||||
caller.addTrack(localStream.getTracks()[0]);
|
||||
const ontrackPromise = addEventListenerPromise(t, callee, 'track', e => {
|
||||
assert_equals(e.track.id, localStream.getTracks()[0].id,
|
||||
|
@ -41,6 +42,7 @@
|
|||
t.add_cleanup(() => callee.close());
|
||||
const localStream =
|
||||
await navigator.mediaDevices.getUserMedia({audio: true});
|
||||
t.add_cleanup(() => localStream.getTracks().forEach(track => track.stop()));
|
||||
caller.addTrack(localStream.getTracks()[0], localStream);
|
||||
const ontrackPromise = addEventListenerPromise(t, callee, 'track', e => {
|
||||
assert_equals(e.track.id, localStream.getTracks()[0].id,
|
||||
|
@ -63,6 +65,7 @@
|
|||
let eventSequence = '';
|
||||
const localStream =
|
||||
await navigator.mediaDevices.getUserMedia({audio: true});
|
||||
t.add_cleanup(() => localStream.getTracks().forEach(track => track.stop()));
|
||||
caller.addTrack(localStream.getTracks()[0], localStream);
|
||||
const ontrackPromise = addEventListenerPromise(t, callee, 'track', e => {
|
||||
eventSequence += 'ontrack;';
|
||||
|
@ -213,6 +216,7 @@
|
|||
t.add_cleanup(() => callee.close());
|
||||
const localStream =
|
||||
await navigator.mediaDevices.getUserMedia({audio: true});
|
||||
t.add_cleanup(() => localStream.getTracks().forEach(track => track.stop()));
|
||||
caller.addTrack(localStream.getTracks()[0]);
|
||||
const ontrackPromise = addEventListenerPromise(t, callee, 'track', e => {
|
||||
assert_array_equals(callee.getReceivers(), [e.receiver],
|
||||
|
@ -229,6 +233,7 @@
|
|||
t.add_cleanup(() => callee.close());
|
||||
const localStream =
|
||||
await navigator.mediaDevices.getUserMedia({audio: true});
|
||||
t.add_cleanup(() => localStream.getTracks().forEach(track => track.stop()));
|
||||
const sender = caller.addTrack(localStream.getTracks()[0]);
|
||||
const ontrackPromise = addEventListenerPromise(t, callee, 'track');
|
||||
await exchangeOfferAnswer(caller, callee);
|
||||
|
@ -246,7 +251,9 @@
|
|||
t.add_cleanup(() => callee.close());
|
||||
const localStream =
|
||||
await navigator.mediaDevices.getUserMedia({audio: true});
|
||||
const sender = caller.addTrack(localStream.getTracks()[0], localStream);
|
||||
t.add_cleanup(() => localStream.getTracks().forEach(track => track.stop()));
|
||||
const [track] = localStream.getTracks();
|
||||
const sender = caller.addTrack(track, localStream);
|
||||
const ontrackPromise = addEventListenerPromise(t, callee, 'track', e => {
|
||||
assert_equals(e.streams.length, 1);
|
||||
return e.streams[0];
|
||||
|
@ -273,6 +280,7 @@
|
|||
let eventSequence = '';
|
||||
const localStream =
|
||||
await navigator.mediaDevices.getUserMedia({audio: true});
|
||||
t.add_cleanup(() => localStream.getTracks().forEach(track => track.stop()));
|
||||
const sender = caller.addTrack(localStream.getTracks()[0], localStream);
|
||||
const ontrackPromise = addEventListenerPromise(t, callee, 'track', e => {
|
||||
assert_equals(e.streams.length, 1);
|
||||
|
@ -299,6 +307,7 @@
|
|||
t.add_cleanup(() => callee.close());
|
||||
const localStream =
|
||||
await navigator.mediaDevices.getUserMedia({audio: true});
|
||||
t.add_cleanup(() => localStream.getTracks().forEach(track => track.stop()));
|
||||
const sender = caller.addTrack(localStream.getTracks()[0], localStream);
|
||||
const ontrackPromise = addEventListenerPromise(t, callee, 'track', e => {
|
||||
assert_equals(e.streams.length, 1);
|
||||
|
@ -324,6 +333,7 @@
|
|||
let eventSequence = '';
|
||||
const localStream =
|
||||
await navigator.mediaDevices.getUserMedia({audio: true});
|
||||
t.add_cleanup(() => localStream.getTracks().forEach(track => track.stop()));
|
||||
const sender = caller.addTrack(localStream.getTracks()[0], localStream);
|
||||
const ontrackPromise = addEventListenerPromise(t, callee, 'track', e => {
|
||||
assert_equals(e.streams.length, 1);
|
||||
|
@ -347,6 +357,7 @@
|
|||
const pc = new RTCPeerConnection();
|
||||
t.add_cleanup(() => pc.close());
|
||||
const stream = await navigator.mediaDevices.getUserMedia({audio: true});
|
||||
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
|
||||
const sender = pc.addTrack(stream.getTracks()[0]);
|
||||
pc.removeTrack(sender);
|
||||
pc.removeTrack(sender);
|
||||
|
|
|
@ -63,6 +63,7 @@
|
|||
const callee = new RTCPeerConnection();
|
||||
t.add_cleanup(() => callee.close());
|
||||
const stream = await navigator.mediaDevices.getUserMedia({audio:true});
|
||||
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
|
||||
const [track] = stream.getTracks();
|
||||
caller.addTrack(track, stream);
|
||||
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
const callee = new RTCPeerConnection();
|
||||
t.add_cleanup(() => callee.close());
|
||||
const stream = await navigator.mediaDevices.getUserMedia({audio:true});
|
||||
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
|
||||
const [track] = stream.getTracks();
|
||||
const sender = caller.addTrack(track, stream);
|
||||
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
/* a codemod for ensuring RTCPeerConnection is cleaned up in tests.
|
||||
* For each `new RTCPeerConnection` add a
|
||||
* `test.add_cleanup(() => pc.close())`
|
||||
* Only applies in promise_tests if there is no add_cleanup in the
|
||||
* test function body.
|
||||
*/
|
||||
export default function transformer(file, api) {
|
||||
const j = api.jscodeshift;
|
||||
return j(file.source)
|
||||
// find each RTCPeerConnection constructor
|
||||
.find(j.NewExpression, {callee: {type: 'Identifier', name: 'RTCPeerConnection'}})
|
||||
|
||||
// check it is inside a promise_test
|
||||
.filter(path => {
|
||||
// iterate parentPath until you find a CallExpression
|
||||
let nextPath = path.parentPath;
|
||||
while (nextPath && nextPath.value.type !== 'CallExpression') {
|
||||
nextPath = nextPath.parentPath;
|
||||
}
|
||||
return nextPath && nextPath.value.callee.name === 'promise_test';
|
||||
})
|
||||
// check there is no add_cleanup in the function body
|
||||
.filter(path => {
|
||||
let nextPath = path.parentPath;
|
||||
while (nextPath && nextPath.value.type !== 'CallExpression') {
|
||||
nextPath = nextPath.parentPath;
|
||||
}
|
||||
const body = nextPath.value.arguments[0].body;
|
||||
return j(body).find(j.Identifier, {name: 'add_cleanup'}).length === 0;
|
||||
})
|
||||
.forEach(path => {
|
||||
// iterate parentPath until you find a CallExpression
|
||||
let nextPath = path.parentPath;
|
||||
while (nextPath && nextPath.value.type !== 'CallExpression') {
|
||||
nextPath = nextPath.parentPath;
|
||||
}
|
||||
const declaration = path.parentPath.parentPath.parentPath;
|
||||
const pc = path.parentPath.value.id;
|
||||
|
||||
declaration.insertAfter(
|
||||
j.expressionStatement(
|
||||
j.callExpression(
|
||||
j.memberExpression(
|
||||
nextPath.node.arguments[0].params[0],
|
||||
j.identifier('add_cleanup')
|
||||
),
|
||||
[j.arrowFunctionExpression([],
|
||||
j.callExpression(
|
||||
j.memberExpression(pc, j.identifier('close'), false),
|
||||
[]
|
||||
)
|
||||
)]
|
||||
)
|
||||
)
|
||||
);
|
||||
})
|
||||
.toSource();
|
||||
};
|
34
tests/wpt/web-platform-tests/webrtc/tools/html-codemod.js
Normal file
34
tests/wpt/web-platform-tests/webrtc/tools/html-codemod.js
Normal file
|
@ -0,0 +1,34 @@
|
|||
/*
|
||||
* extract script content from a series of html files, run a
|
||||
* jscodeshift codemod on them and overwrite the original file.
|
||||
*
|
||||
* Usage: node html-codemod.js codemod-file list of files to process
|
||||
*/
|
||||
const { JSDOM } = require('jsdom');
|
||||
const fs = require('fs');
|
||||
const {execFileSync} = require('child_process');
|
||||
|
||||
const codemod = process.argv[2];
|
||||
const filenames = process.argv.slice(3);
|
||||
filenames.forEach((filename) => {
|
||||
const originalContent = fs.readFileSync(filename, 'utf-8');
|
||||
const dom = new JSDOM(originalContent);
|
||||
const document = dom.window.document;
|
||||
const scriptTags = document.querySelectorAll('script');
|
||||
const lastTag = scriptTags[scriptTags.length - 1];
|
||||
const script = lastTag.innerHTML;
|
||||
if (!script) {
|
||||
console.log('NO SCRIPT FOUND', filename);
|
||||
return;
|
||||
}
|
||||
const scriptFilename = filename + '.codemod.js';
|
||||
const scriptFile = fs.writeFileSync(scriptFilename, script);
|
||||
// exec jscodeshift
|
||||
const output = execFileSync('./node_modules/.bin/jscodeshift', ['-t', codemod, scriptFilename]);
|
||||
console.log(filename, output.toString()); // output jscodeshift output.
|
||||
// read back file, resubstitute
|
||||
const newScript = fs.readFileSync(scriptFilename, 'utf-8').toString();
|
||||
const modifiedContent = originalContent.split(script).join(newScript);
|
||||
fs.writeFileSync(filename, modifiedContent);
|
||||
fs.unlinkSync(scriptFilename);
|
||||
});
|
1213
tests/wpt/web-platform-tests/webrtc/tools/package-lock.json
generated
1213
tests/wpt/web-platform-tests/webrtc/tools/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -7,7 +7,9 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"eslint": "^4.11.0",
|
||||
"eslint-plugin-html": "^4.0.0"
|
||||
"eslint-plugin-html": "^4.0.0",
|
||||
"jscodeshift": "^0.5.1",
|
||||
"jsdom": "^11.11.0"
|
||||
},
|
||||
"license": "BSD",
|
||||
"private": true
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue