mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-27 12:15:33 +00:00
Bug 1511855 [wpt PR 14341] - Create RTCDtlsTransport objects in the blink layer, a=testonly
Automatic update from web-platform-tests Create RTCDtlsTransport objects in the blink layer This CL does on-demand creation of blink-layer transport objects. It also introduces a way to get at the webrtc::PeerConnection object from the WebPeerConnectionHandler API. Bug: chromium:907849 Change-Id: Ic86a5a66289c31d1f939a47d58bc194c32471cbd Reviewed-on: https://chromium-review.googlesource.com/c/1358060 Commit-Queue: Harald Alvestrand <hta@chromium.org> Reviewed-by: Guido Urdaneta <guidou@chromium.org> Reviewed-by: Henrik Boström <hbos@chromium.org> Reviewed-by: Kentaro Hara <haraken@chromium.org> Cr-Commit-Position: refs/heads/master@{#615072} -- wpt-commits: acc3783400742c9400b6ca7c732c97327b3a7da2 wpt-pr: 14341
This commit is contained in:
parent
523b8154a2
commit
5d8d94f299
@ -0,0 +1,84 @@
|
||||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<title>RTCRtpSender.transport</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="dictionary-helper.js"></script>
|
||||
<script src="RTCPeerConnection-helper.js"></script>
|
||||
<script>
|
||||
'use strict';
|
||||
|
||||
// Spec link: http://w3c.github.io/webrtc-pc/#dom-rtcrtpsender-transport
|
||||
promise_test(async t => {
|
||||
const caller = new RTCPeerConnection();
|
||||
t.add_cleanup(() => caller.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);
|
||||
assert_equals(sender.transport, null);
|
||||
}, 'RTCRtpSender.transport is null when unconnected');
|
||||
|
||||
// Test for the simple/happy path of connecting a single track
|
||||
promise_test(async t => {
|
||||
const caller = new RTCPeerConnection();
|
||||
t.add_cleanup(() => caller.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);
|
||||
const callee = new RTCPeerConnection();
|
||||
t.add_cleanup(() => callee.close());
|
||||
exchangeIceCandidates(caller, callee);
|
||||
await exchangeOfferAndListenToOntrack(t, caller, callee);
|
||||
assert_not_equals(sender.transport, null);
|
||||
const [transceiver] = caller.getTransceivers();
|
||||
assert_equals(transceiver.sender.transport,
|
||||
transceiver.receiver.transport);
|
||||
}, 'RTCRtpSender/receiver.transport has a value when connected');
|
||||
|
||||
// Test with multiple tracks, and checking details of when things show up
|
||||
// for different bundle policies.
|
||||
for (let bundle_policy of ['balanced', 'max-bundle', 'max-compat']) {
|
||||
promise_test(async t => {
|
||||
const caller = new RTCPeerConnection({bundlePolicy: bundle_policy});
|
||||
t.add_cleanup(() => caller.close());
|
||||
const stream = await navigator.mediaDevices.getUserMedia(
|
||||
{audio: true, video:true});
|
||||
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
|
||||
const [track1, track2] = stream.getTracks();
|
||||
const sender1 = caller.addTrack(track1);
|
||||
const sender2 = caller.addTrack(track2);
|
||||
const callee = new RTCPeerConnection();
|
||||
t.add_cleanup(() => callee.close());
|
||||
exchangeIceCandidates(caller, callee);
|
||||
const offer = await caller.createOffer();
|
||||
assert_equals(sender1.transport, null);
|
||||
assert_equals(sender2.transport, null);
|
||||
await caller.setLocalDescription(offer);
|
||||
assert_not_equals(sender1.transport, null);
|
||||
assert_not_equals(sender2.transport, null);
|
||||
const [caller_transceiver1, caller_transceiver2] = caller.getTransceivers();
|
||||
assert_equals(sender1.transport, caller_transceiver1.sender.transport);
|
||||
if (bundle_policy == 'max-bundle') {
|
||||
assert_equals(caller_transceiver1.sender.transport,
|
||||
caller_transceiver2.sender.transport);
|
||||
} else {
|
||||
assert_not_equals(caller_transceiver1.sender.transport,
|
||||
caller_transceiver2.sender.transport);
|
||||
}
|
||||
await callee.setRemoteDescription(offer);
|
||||
const [callee_transceiver1, callee_transceiver2] = callee.getTransceivers();
|
||||
assert_not_equals(callee_transceiver1.receiver.transport, null);
|
||||
assert_not_equals(callee_transceiver2.receiver.transport, null);
|
||||
const answer = await callee.createAnswer();
|
||||
await callee.setLocalDescription(answer);
|
||||
// At this point, bundle should have kicked in.
|
||||
assert_equals(callee_transceiver1.receiver.transport,
|
||||
callee_transceiver2.receiver.transport);
|
||||
await caller.setRemoteDescription(answer);
|
||||
assert_equals(caller_transceiver1.receiver.transport,
|
||||
caller_transceiver2.receiver.transport);
|
||||
}, 'RTCRtpSender/receiver.transport at the right time, with bundle policy ' + bundle_policy);
|
||||
}
|
||||
</script>
|
Loading…
Reference in New Issue
Block a user