Squashed 'third_party/rawrtc/rawrtc/' content from commit aa3ae4b24
Change-Id: I38a655a4259b62f591334e90a1315bd4e7e4d8ec
git-subtree-dir: third_party/rawrtc/rawrtc
git-subtree-split: aa3ae4b247275cc6e69c30613b3a4ba7fdc82d1b
diff --git a/htdocs/ortc/index.html b/htdocs/ortc/index.html
new file mode 100644
index 0000000..f5e46c6
--- /dev/null
+++ b/htdocs/ortc/index.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>ORTC/WebRTC Interop Data Channel Example</title>
+</head>
+<style>
+textarea {
+}
+</style>
+<body>
+ <textarea cols="120" rows="20" id="local-parameters" onclick="this.select();" readonly></textarea>
+ <textarea cols="120" rows="20" id="remote-parameters"></textarea><br />
+ <button type="button" onclick="start(peer);" id="start" disabled>Start</button>
+
+ <script type="text/javascript" src="sdp.js"></script>
+ <script type="text/javascript" src="https://webrtc.github.io/adapter/adapter-latest.js"></script>
+ <script type="text/javascript" src="webrtc-rawrtc.js"></script>
+ <script type="text/javascript">
+ 'use strict';
+
+ let localParameters = document.getElementById('local-parameters');
+ let remoteParameters = document.getElementById('remote-parameters');
+ let startButton = document.getElementById('start');
+
+ function getURLParameter(name) {
+ return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search) || [null, ''])[1].replace(/\+/g, '%20')) || null;
+ }
+
+ function setRemoteParameters(peer) {
+ // Parse and apply the remote parameters
+ let parameters = JSON.parse(remoteParameters.value);
+ console.log('Remote parameters:', parameters);
+ peer.setRemoteParameters(parameters)
+ .then((parameters) => {
+ // Generate local parameters if controlled
+ if (peer instanceof ControlledPeer) {
+ getLocalParameters(peer);
+ }
+ })
+ .catch((error) => {
+ console.error(error);
+ });
+ };
+
+ function getLocalParameters(peer) {
+ // Generate and show the local parameters
+ peer.getLocalParameters()
+ .then((parameters) => {
+ console.log('Local parameters:', parameters);
+ localParameters.value = JSON.stringify(parameters);
+ });
+ }
+
+ function createPeer(controllingParameter) {
+ let controlling = controllingParameter == 'true' || controllingParameter == '1';
+ console.log('Role: ICE-Controll' + (controlling ? 'ing' : 'ed'));
+
+ // Create peer depending on the role
+ let peer = controlling ? new ControllingPeer() : new ControlledPeer();
+ peer.createPeerConnection();
+ let cat = peer.createDataChannel(peer.pc.createDataChannel('cat-noises', {
+ ordered: true,
+ negotiated: true,
+ id: 0
+ }));
+ peer.createDataChannel();
+
+ // Create local parameters if we are the controlling peer.
+ // Keep in mind this still uses offer/answer in the background, thus this
+ // limitation which does not exist for ORTC but does for WebRTC.
+ if (controlling) {
+ getLocalParameters(peer);
+ }
+
+ return peer;
+ }
+
+ function start(peer) {
+ // Apply remote parameters
+ // For the controlled peer, this will automatically generate local parameters
+ setRemoteParameters(peer);
+ startButton.disabled = true;
+ }
+
+ // Create peer
+ // Determine role from GET parameter (?controlling=true|false)
+ let peer = createPeer(getURLParameter('controlling'));
+ startButton.disabled = false;
+ </script>
+</body>
+</html>