Skip to content

Commit b363e3c

Browse files
authored
Merge pull request #24 from fippo/improved-sdp
handle legacy and new json formats
2 parents 20e4ebd + 3cc4102 commit b363e3c

File tree

1 file changed

+50
-8
lines changed

1 file changed

+50
-8
lines changed

import.js

Lines changed: 50 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -237,11 +237,26 @@ export class WebRTCInternalsDumpImporter extends EventTarget {
237237
el.innerText = traceEvent.type;
238238
details.appendChild(el);
239239

240-
if (['іcecandidate', 'addIceCandidate'].includes(traceEvent.type)) {
241-
if (traceEvent.value) {
240+
if (['іcecandidate', 'addIceCandidate'].includes(traceEvent.type) && traceEvent.value) {
241+
const toShow = [];
242+
if (traceEvent.value.startsWith('{')) {
243+
const parts = JSON.parse(traceEvent.value);
244+
['sdpMid', 'sdpMLineIndex'].forEach(property => {
245+
toShow.push(property + ': ' + parts[property]);
246+
});
247+
if (parts.candidate) {
248+
const candidate = SDPUtils.parseCandidate(parts.candidate.trim());
249+
if (candidate) {
250+
toShow.push('port:' + candidate.port);
251+
toShow.push('type: ' + candidate.type);
252+
}
253+
}
254+
if (parts.relayProtocol) {
255+
toShow.push('relayProtocol: ' + parts.relayProtocol);
256+
}
257+
} else {
242258
const parts = traceEvent.value.split(', ')
243259
.map(part => part.split(': '));
244-
const toShow = [];
245260
parts.forEach(part => {
246261
if (['sdpMid', 'sdpMLineIndex'].includes(part[0])) {
247262
toShow.push(part.join(': '));
@@ -255,18 +270,39 @@ export class WebRTCInternalsDumpImporter extends EventTarget {
255270
toShow.push('relayProtocol: ' + part[1]);
256271
}
257272
});
258-
el.innerText += ' (' + toShow.join(', ') + ')';
259273
}
274+
el.innerText += ' (' + toShow.join(', ') + ')';
260275
}
261-
if (traceEvent.value.indexOf(', sdp: ') != -1) {
262-
const [type, sdp] = traceEvent.value.substr(6).split(', sdp: ');
276+
277+
if (traceEvent.value.startsWith('{"type":') || traceEvent.value.indexOf(', sdp: ') != -1) {
278+
let type;
279+
let sdp;
280+
if (traceEvent.value.startsWith('{"type":')) {
281+
const result = JSON.parse(traceEvent.value);
282+
type = result.type;
283+
sdp = result.sdp;
284+
} else { // legacy format.
285+
const result = traceEvent.value.substr(6).split(', sdp: ');
286+
type = result[0];
287+
sdp = result[1];
288+
}
263289
let last_sections;
264290
let remote_sections;
265291
if (traceEvent.type === 'setLocalDescription') {
266292
const lastCreated = type === 'offer' ? state.lastCreatedOffer : state.lastCreatedAnswer;
267293
if ((type === 'offer' && state.lastCreatedOffer) || (type === 'answer' && state.lastCreatedAnswer)) {
268-
const [last_type, last_sdp] = (type === 'offer' ? state.lastCreatedOffer : state.lastCreatedAnswer)
269-
.substr(6).split(', sdp: ');
294+
let last_type;
295+
let last_sdp;
296+
const lastDescription = (type === 'offer' ? state.lastCreatedOffer : state.lastCreatedAnswer);
297+
if (lastDescription.startsWith('{"type":')) {
298+
const result = JSON.parse(lastDescription);
299+
last_type = result.type;
300+
last_sdp = result.sdp;
301+
} else {
302+
const result = lastDescription.substr(6).split(', sdp: ');
303+
last_type = result[0];
304+
last_sdp = result[1];
305+
}
270306
if (sdp != last_sdp) {
271307
last_sections = SDPUtils.splitSections(last_sdp);
272308
details.open = true;
@@ -278,6 +314,9 @@ export class WebRTCInternalsDumpImporter extends EventTarget {
278314
}
279315
}
280316
processDescriptionEvent(details, traceEvent.type, {type, sdp}, last_sections, remote_sections);
317+
} else if (traceEvent.value && traceEvent.value.startsWith('{')) {
318+
el = document.createElement('pre');
319+
el.innerText = JSON.stringify(JSON.parse(traceEvent.value), null, ' ');
281320
} else {
282321
el = document.createElement('pre');
283322
el.innerText = traceEvent.value;
@@ -300,9 +339,12 @@ export class WebRTCInternalsDumpImporter extends EventTarget {
300339
switch(traceEvent.value) {
301340
case 'connected':
302341
case 'completed':
342+
case '"connected"':
343+
case '"completed"':
303344
row.style.backgroundColor = 'green';
304345
break;
305346
case 'failed':
347+
case '"failed"':
306348
row.style.backgroundColor = 'red';
307349
break;
308350
}

0 commit comments

Comments
 (0)