Bug 1556801: Work around and fix harness errors caused by uncaught promise rejections. r=jib

Differential Revision: https://phabricator.services.mozilla.com/D33990

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Byron Campen [:bwc] 2019-06-13 16:22:00 +00:00
Родитель 8d84b7f01b
Коммит 10c835f1fe
4 изменённых файлов: 44 добавлений и 102 удалений

Просмотреть файл

@ -1,9 +1,4 @@
[RTCPeerConnection-peerIdentity.https.html]
expected: ERROR
[setRemoteDescription() on offer with a=identity that resolve to value different from target peer identity should reject with InvalidModificationError]
expected: FAIL
bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1538775
[setRemoteDescription() with peerIdentity set and with IdP proxy that return validationAssertion with mismatch contents should reject with OperationError]
expected: FAIL
bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1538778

Просмотреть файл

@ -1,2 +0,0 @@
[RTCPeerConnection-ontrack.https.html]
expected: ERROR

Просмотреть файл

@ -112,15 +112,10 @@
const offer = await pc1.createOffer();
try {
await pc2.setRemoteDescription(offer);
assert_true(false, "Previous line (sRD) should have thrown!");
} catch (e) {
assert_equals(e.name, 'InvalidModificationError');
}
assert_true(pc2.signalingState, 'closed',
'Expect peer connection to be closed after mismatch peer identity');
await promise_rejects(t, 'InvalidModificationError',
pc2.setRemoteDescription(offer));
await promise_rejects(t, 'InvalidModificationError',
pc2.peerIdentity);
}, 'setRemoteDescription() on offer with a=identity that resolve to value different from target peer identity should reject with InvalidModificationError');
/*

Просмотреть файл

@ -95,7 +95,7 @@
// tests that ontrack is called and parses the msid information from the SDP and creates
// the streams with matching identifiers.
async_test(t => {
promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
@ -123,34 +123,28 @@ a=msid:stream1 track1
a=ssrc:1001 cname:some
`;
pc.ontrack = t.step_func(trackEvent => {
const { streams, track, transceiver } = trackEvent;
const trackEventPromise = addEventListenerPromise(t, pc, 'track');
await pc.setRemoteDescription({ type: 'offer', sdp });
const trackEvent = await trackEventPromise;
const { streams, track, transceiver } = trackEvent;
assert_equals(streams.length, 1,
'the track belongs to one MediaStream');
assert_equals(streams.length, 1,
'the track belongs to one MediaStream');
const [stream] = streams;
assert_equals(stream.id, 'stream1',
'Expect stream.id to be the same as specified in the a=msid line');
const [stream] = streams;
assert_equals(stream.id, 'stream1',
'Expect stream.id to be the same as specified in the a=msid line');
assert_equals(track.kind, 'audio',
'Expect track.kind to be audio');
assert_equals(track.kind, 'audio',
'Expect track.kind to be audio');
validateTrackEvent(trackEvent);
validateTrackEvent(trackEvent);
assert_equals(transceiver.direction, 'recvonly',
'Expect transceiver.direction to be reverse of sendonly (recvonly)');
t.done();
});
pc.setRemoteDescription({ type: 'offer', sdp })
.catch(t.step_func(err => {
assert_unreached('Error ' + err.name + ': ' + err.message);
}));
assert_equals(transceiver.direction, 'recvonly',
'Expect transceiver.direction to be reverse of sendonly (recvonly)');
}, 'setRemoteDescription should trigger ontrack event when the MSID of the stream is is parsed.');
async_test(t => {
promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
@ -179,101 +173,61 @@ a=ssrc:1001 cname:some
pc.ontrack = t.unreached_func('ontrack event should not fire for track with recvonly direction');
pc.setRemoteDescription({ type: 'offer', sdp })
.catch(t.step_func(err => {
assert_unreached('Error ' + err.name + ': ' + err.message);
}))
.then(t.step_func(() => {
t.step_timeout(t.step_func_done(), 100);
}));
await pc.setRemoteDescription({ type: 'offer', sdp });
await new Promise(resolve => t.step_timeout(resolve, 100));
}, 'setRemoteDescription() with m= line of recvonly direction should not trigger track event');
async_test(t => {
promise_test(async t => {
const pc1 = new RTCPeerConnection();
t.add_cleanup(() => pc1.close());
const pc2 = new RTCPeerConnection();
t.add_cleanup(() => pc2.close());
pc2.ontrack = t.step_func(trackEvent => {
const { track } = trackEvent;
const [track, mediaStream] = await getTrackFromUserMedia('audio');
pc1.addTrack(track, mediaStream);
const trackEventPromise = addEventListenerPromise(t, pc2, 'track');
await pc2.setRemoteDescription(await pc1.createOffer());
const trackEvent = await trackEventPromise;
assert_equals(track.kind, 'audio',
'Expect track.kind to be audio');
assert_equals(trackEvent.track.kind, 'audio',
'Expect track.kind to be audio');
validateTrackEvent(trackEvent);
t.done();
});
return getTrackFromUserMedia('audio')
.then(([track, mediaStream]) => {
pc1.addTrack(track, mediaStream);
return pc1.createOffer()
.then(offer => pc2.setRemoteDescription(offer));
})
.catch(t.step_func(err => {
assert_unreached('Error ' + err.name + ': ' + err.message);
}));
validateTrackEvent(trackEvent);
}, 'addTrack() should cause remote connection to fire ontrack when setRemoteDescription()');
async_test(t => {
promise_test(async t => {
const pc1 = new RTCPeerConnection();
t.add_cleanup(() => pc1.close());
const pc2 = new RTCPeerConnection();
t.add_cleanup(() => pc2.close());
pc2.ontrack = t.step_func(trackEvent => {
const { track } = trackEvent;
assert_equals(track.kind, 'video',
'Expect track.kind to be video');
validateTrackEvent(trackEvent);
t.done();
});
pc1.addTransceiver('video');
return pc1.createOffer()
.then(offer => pc2.setRemoteDescription(offer))
.catch(t.step_func(err => {
assert_unreached('Error ' + err.name + ': ' + err.message);
}));
const trackEventPromise = addEventListenerPromise(t, pc2, 'track');
await pc2.setRemoteDescription(await pc1.createOffer());
const trackEvent = await trackEventPromise;
const { track } = trackEvent;
assert_equals(track.kind, 'video',
'Expect track.kind to be video');
validateTrackEvent(trackEvent);
}, `addTransceiver('video') should cause remote connection to fire ontrack when setRemoteDescription()`);
async_test(t => {
promise_test(async t => {
const pc1 = new RTCPeerConnection();
t.add_cleanup(() => pc1.close());
const pc2 = new RTCPeerConnection();
t.add_cleanup(() => pc2.close());
pc2.ontrack = t.step_func(trackEvent => {
const { track } = trackEvent;
assert_equals(track.kind, 'video',
'Expect track.kind to be video');
validateTrackEvent(trackEvent);
t.done();
});
pc1.addTransceiver('audio', { direction: 'inactive' });
pc2.ontrack = t.unreached_func('ontrack event should not fire for track with inactive direction');
return pc1.createOffer()
.then(offer => pc2.setRemoteDescription(offer))
.catch(t.step_func(err => {
assert_unreached('Error ' + err.name + ': ' + err.message);
}))
.then(t.step_func(() => {
t.step_timeout(t.step_func_done(), 100);
}));
await pc2.setRemoteDescription(await pc1.createOffer());
await new Promise(resolve => t.step_timeout(resolve, 100));
}, `addTransceiver() with inactive direction should not cause remote connection to fire ontrack when setRemoteDescription()`);
</script>