-
Notifications
You must be signed in to change notification settings - Fork 3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
webrtc wpt: add legacy callback based variant of simplecall
copied from webrtc/simplecall.https.html without cleaning up the style. See #18236 BUG=None Change-Id: Icbfb02768f455203f22b6bb357f448d31e323037 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5217871 Reviewed-by: Harald Alvestrand <hta@chromium.org> Commit-Queue: Philipp Hancke <phancke@microsoft.com> Cr-Commit-Position: refs/heads/main@{#1249892}
- Loading branch information
1 parent
a10b8c0
commit 5d54018
Showing
1 changed file
with
108 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
<!doctype html> | ||
<html> | ||
<head> | ||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> | ||
<title>RTCPeerConnection Connection Test</title> | ||
<script src="../RTCPeerConnection-helper.js"></script> | ||
</head> | ||
<body> | ||
<div id="log"></div> | ||
<div> | ||
<video id="local-view" muted autoplay="autoplay"></video> | ||
<video id="remote-view" muted autoplay="autoplay"></video> | ||
</div> | ||
|
||
<!-- These files are in place when executing on W3C. --> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<script type="text/javascript"> | ||
var test = async_test('Can set up a basic WebRTC call.'); | ||
|
||
var gFirstConnection = null; | ||
var gSecondConnection = null; | ||
|
||
// if the remote video gets video data that implies the negotiation | ||
// as well as the ICE and DTLS connection are up. | ||
document.getElementById('remote-view') | ||
.addEventListener('loadedmetadata', function() { | ||
// Call negotiated: done. | ||
test.done(); | ||
}); | ||
|
||
function getNoiseStreamOkCallback(localStream) { | ||
gFirstConnection = new RTCPeerConnection(null); | ||
test.add_cleanup(() => gFirstConnection.close()); | ||
gFirstConnection.onicecandidate = onIceCandidateToFirst; | ||
localStream.getTracks().forEach(function(track) { | ||
gFirstConnection.addTrack(track, localStream); | ||
}); | ||
gFirstConnection.createOffer(onOfferCreated, failed('createOffer')); | ||
|
||
var videoTag = document.getElementById('local-view'); | ||
videoTag.srcObject = localStream; | ||
}; | ||
|
||
var onOfferCreated = test.step_func(function(offer) { | ||
gFirstConnection.setLocalDescription(offer); | ||
|
||
// This would normally go across the application's signaling solution. | ||
// In our case, the "signaling" is to call this function. | ||
receiveCall(offer.sdp); | ||
}); | ||
|
||
function receiveCall(offerSdp) { | ||
gSecondConnection = new RTCPeerConnection(null); | ||
test.add_cleanup(() => gSecondConnection.close()); | ||
gSecondConnection.onicecandidate = onIceCandidateToSecond; | ||
gSecondConnection.ontrack = onRemoteTrack; | ||
|
||
var parsedOffer = new RTCSessionDescription({ type: 'offer', | ||
sdp: offerSdp }); | ||
gSecondConnection.setRemoteDescription(parsedOffer); | ||
|
||
gSecondConnection.createAnswer(onAnswerCreated, | ||
failed('createAnswer')); | ||
}; | ||
|
||
var onAnswerCreated = test.step_func(function(answer) { | ||
gSecondConnection.setLocalDescription(answer); | ||
|
||
// Similarly, this would go over the application's signaling solution. | ||
handleAnswer(answer.sdp); | ||
}); | ||
|
||
function handleAnswer(answerSdp) { | ||
var parsedAnswer = new RTCSessionDescription({ type: 'answer', | ||
sdp: answerSdp }); | ||
gFirstConnection.setRemoteDescription(parsedAnswer); | ||
}; | ||
|
||
var onIceCandidateToFirst = test.step_func(function(event) { | ||
gSecondConnection.addIceCandidate(event.candidate); | ||
}); | ||
|
||
var onIceCandidateToSecond = test.step_func(function(event) { | ||
gFirstConnection.addIceCandidate(event.candidate); | ||
}); | ||
|
||
var onRemoteTrack = test.step_func(function(event) { | ||
var videoTag = document.getElementById('remote-view'); | ||
if (!videoTag.srcObject) { | ||
videoTag.srcObject = event.streams[0]; | ||
} | ||
}); | ||
|
||
// Returns a suitable error callback. | ||
function failed(function_name) { | ||
return test.unreached_func('WebRTC called error callback for ' + function_name); | ||
} | ||
|
||
// This function starts the test. | ||
test.step(function() { | ||
getNoiseStream({ video: true, audio: true }) | ||
.then(test.step_func(getNoiseStreamOkCallback), failed('getNoiseStream')); | ||
}); | ||
</script> | ||
|
||
</body> | ||
</html> |