| Index: LayoutTests/imported/web-platform-tests/webrtc/datachannel-emptystring.html
|
| diff --git a/LayoutTests/imported/web-platform-tests/webrtc/datachannel-emptystring.html b/LayoutTests/imported/web-platform-tests/webrtc/datachannel-emptystring.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8bded3ef77b78149d168d8d6ed99852dfab20a09
|
| --- /dev/null
|
| +++ b/LayoutTests/imported/web-platform-tests/webrtc/datachannel-emptystring.html
|
| @@ -0,0 +1,113 @@
|
| +<!doctype html>
|
| +<!--
|
| +This test creates a data channel between two local PeerConnection instances
|
| +and ensures that an empty string sent by one is received by the second.
|
| + -->
|
| +
|
| +<html>
|
| +<head>
|
| + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
| + <title>RTCPeerConnection Data Channel Empty String Test</title>
|
| +</head>
|
| +<body>
|
| + <div id="log"></div>
|
| + <h2>Messages exchanged</h2>
|
| + <div id="msg"></div>
|
| +
|
| + <!-- These files are in place when executing on W3C. -->
|
| + <script src="../../../resources/testharness.js"></script>
|
| + <script src="../../../resources/testharnessreport.js"></script>
|
| + <script src="../../../resources/vendor-prefix.js"
|
| + data-prefixed-objects=
|
| + '[{"ancestors":["window"], "name":"RTCPeerConnection"}]'
|
| + >
|
| + </script>
|
| + <script type="text/javascript">
|
| + var test = async_test('Can send empty strings across a WebRTC data channel.');
|
| +
|
| + var gFirstConnection = null;
|
| + var gSecondConnection = null;
|
| + var sendChannel = null;
|
| + var receiveChannel = null;
|
| +
|
| + var onReceiveChannel = function (event) {
|
| + receiveChannel = event.channel;
|
| + receiveChannel.onmessage = onReceiveMessage;
|
| + };
|
| +
|
| +
|
| + // When the data channel is open, send an empty string message
|
| + // followed by a message that contains the string "done".
|
| + var onSendChannelOpen = function (event) {
|
| + var msgEl = document.getElementById('msg');
|
| + sendChannel.send('');
|
| + msgEl.innerHTML += 'Sent: [empty string]<br>';
|
| + sendChannel.send('done');
|
| + msgEl.innerHTML += 'Sent: "done"<br>';
|
| + };
|
| +
|
| + // Check the messages received on the other side.
|
| + // There should be an empty string message followed by a message that
|
| + // contains the string "done".
|
| + // Pass/Fail the test according to the messages received
|
| + var emptyMessageReceived = false;
|
| + var onReceiveMessage = test.step_func(function (event) {
|
| + var msgEl = document.getElementById('msg');
|
| + msgEl.innerHTML += 'Received: ' +
|
| + (event.data ? '"' + event.data + '"' : '[empty string]') + '<br>';
|
| + if (emptyMessageReceived) {
|
| + assert_equals(event.data, 'done', 'The "done" message was not received');
|
| + test.done();
|
| + }
|
| + else {
|
| + assert_equals(event.data, '', 'Empty message not received');
|
| + emptyMessageReceived = true;
|
| + }
|
| + });
|
| +
|
| + function exchangeIce(pc) {
|
| + return function(e) {
|
| + if (e.candidate) {
|
| + pc.addIceCandidate(e.candidate);
|
| + }
|
| + };
|
| + }
|
| +
|
| + function exchangeDescription(pc1, pc2) {
|
| + return function() {
|
| + return pc1.setRemoteDescription(pc2.localDescription);
|
| + };
|
| + }
|
| +
|
| + test.step(function() {
|
| + gFirstConnection = new RTCPeerConnection(null);
|
| +
|
| + gSecondConnection = new RTCPeerConnection(null);
|
| +
|
| + gFirstConnection.onicecandidate = exchangeIce(gSecondConnection);
|
| + gSecondConnection.onicecandidate = exchangeIce(gFirstConnection);
|
| +
|
| + gSecondConnection.ondatachannel = onReceiveChannel;
|
| +
|
| + // Note the data channel will preserve the order of messages
|
| + // exchanged over it by default.
|
| + sendChannel = gFirstConnection.createDataChannel('sendDataChannel');
|
| + sendChannel.onopen = onSendChannelOpen;
|
| +
|
| + gFirstConnection.createOffer()
|
| + .then(gFirstConnection.setLocalDescription.bind(gFirstConnection))
|
| + .then(exchangeDescription(gSecondConnection, gFirstConnection))
|
| + .then(function() {
|
| + return gSecondConnection.createAnswer();
|
| + })
|
| + .then(gSecondConnection.setLocalDescription.bind(gSecondConnection))
|
| + .then(exchangeDescription(gFirstConnection, gSecondConnection))
|
| + .catch(test.step_func(function(e) {
|
| + assert_unreached('Error ' + e.name + ': ' + e.message);
|
| + }));
|
| + });
|
| +</script>
|
| +
|
| +</body>
|
| +</html>
|
| +
|
|
|