@@ -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