| <!doctype html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <title>Testing basic video exchange from offerer to receiver</title> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| </head> |
| <body> |
| <script src ="routines.js"></script> |
| <script> |
| function fingerprintFromSDP(sdp) |
| { |
| var fingerprint; |
| sdp.split("\r\n").forEach((line) => { |
| if (line.startsWith("a=fingerprint")) |
| fingerprint = line.substring(14); |
| }); |
| return fingerprint; |
| } |
| |
| function cnameFromSDP(sdp) |
| { |
| var expression = new RegExp("^a=ssrc:(\\d+) cname:([\\w+/\\-@\\.\\{\\}]+).*$"); |
| |
| var cname; |
| sdp.split("\r\n").forEach((line) => { |
| let match = line.match(expression); |
| if (match) |
| cname = match[2]; |
| }); |
| return cname; |
| } |
| |
| promise_test((test) => { |
| if (window.testRunner) |
| testRunner.setUserMediaPermission(true); |
| |
| var offerFingerprint, answerFingerprint; |
| var offerCName; |
| return navigator.mediaDevices.getUserMedia({ video: true, audio: true}).then((stream) => { |
| return new Promise((resolve, reject) => { |
| createConnections((firstConnection) => { |
| firstConnection.addTrack(stream.getVideoTracks()[0], stream); |
| }, (secondConnection) => { |
| }, {observeOffer : (offer) => { |
| offerFingerprint = fingerprintFromSDP(offer.sdp); |
| offerCName = cnameFromSDP(offer.sdp); |
| }, observeAnswer: (answer) => { |
| answerFingerprint = fingerprintFromSDP(answer.sdp); |
| resolve(); |
| }}); |
| setTimeout(() => reject("Test timed out 1"), 2000); |
| }); |
| }).then(() => { |
| return navigator.mediaDevices.getUserMedia({ video: true, audio: true}).then((stream) => { |
| return new Promise((resolve, reject) => { |
| createConnections((firstConnection) => { |
| firstConnection.addTrack(stream.getVideoTracks()[0], stream); |
| }, (secondConnection) => { |
| }, {observeOffer : (offer) => { |
| assert_not_equals(fingerprintFromSDP(offer.sdp), offerFingerprint); |
| assert_not_equals(cnameFromSDP(offer.sdp), offerCName); |
| }, observeAnswer: (answer) => { |
| assert_not_equals(fingerprintFromSDP(answer.sdp), answerFingerprint); |
| resolve(); |
| }}); |
| setTimeout(() => reject("Test timed out 2"), 2000); |
| }); |
| }); |
| }); |
| }, "Ensuring certificates and cnames are ephemerals"); |
| </script> |
| </body> |
| </html> |