|  | <!doctype html> | 
|  | <html> | 
|  | <head> | 
|  | <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> | 
|  | <title>RTCPeerConnection setRemoteDescription tests</title> | 
|  | </head> | 
|  | <body> | 
|  | <!-- 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"> | 
|  | // tests that ontrack is called and parses the msid information from the SDP and creates | 
|  | // the streams and tracks with matching identifiers. | 
|  | async_test(function(test) { | 
|  | const sdp = 'v=0\r\n' + | 
|  | 'o=- 166855176514521964 2 IN IP4 127.0.0.1\r\n' + | 
|  | 's=-\r\n' + | 
|  | 't=0 0\r\n' + | 
|  | 'a=msid-semantic:WMS *\r\n' + | 
|  | 'm=audio 9 UDP/TLS/RTP/SAVPF 111\r\n' + | 
|  | 'c=IN IP4 0.0.0.0\r\n' + | 
|  | 'a=rtcp:9 IN IP4 0.0.0.0\r\n' + | 
|  | 'a=ice-ufrag:someufrag\r\n' + | 
|  | 'a=ice-pwd:somelongpwdwithenoughrandomness\r\n' + | 
|  | 'a=fingerprint:sha-256 8C:71:B3:8D:A5:38:FD:8F:A4:2E:A2:65:6C:86:52:BC:E0:6E:94:F2:9F:7C:4D:B5:DF:AF:AA:6F:44:90:8D:F4\r\n' + | 
|  | 'a=setup:actpass\r\n' + | 
|  | 'a=rtcp-mux\r\n' + | 
|  | 'a=mid:mid1\r\n' + | 
|  | 'a=sendonly\r\n' + | 
|  | 'a=rtpmap:111 opus/48000/2\r\n' + | 
|  | 'a=msid:stream1 track1\r\n' + | 
|  | 'a=ssrc:1001 cname:some\r\n'; | 
|  |  | 
|  | var pc = new RTCPeerConnection(null); | 
|  |  | 
|  | pc.ontrack = test.step_func(function(event) { | 
|  | assert_equals(event.track.kind, 'audio', 'ontrack fires with an audio track'); | 
|  | assert_equals(event.track.id, 'track1', 'the track name is parsed from the MSID line'); | 
|  |  | 
|  | assert_equals(event.streams.length, 1, 'the track belongs to one MediaStream'); | 
|  | assert_equals(event.streams[0].id, 'stream1', 'the stream name is parsed from the MSID line'); | 
|  | test.done(); | 
|  | }); | 
|  |  | 
|  | pc.setRemoteDescription(new RTCSessionDescription({type: 'offer', sdp: sdp})) | 
|  | .catch(test.step_func(function(e) { | 
|  | assert_unreached('Error ' + e.name + ': ' + e.message); | 
|  | })); | 
|  | }, 'Triggers ontrack when called with a remote description and the MSID is parsed.'); | 
|  | </script> | 
|  |  | 
|  | </body> | 
|  | </html> |