@@ -60,7 +60,7 @@ export type TSetTimerHistory = {
6060 handler : number | string ;
6161 delay : number | undefined | string ;
6262 isEval : boolean | undefined ;
63- isOnline : boolean ;
63+ online : number ;
6464 canceledCounter : number ;
6565 canceledByTraceIds : string [ ] | null ;
6666 selfTime : number | null ;
@@ -106,7 +106,7 @@ export type TRequestIdleCallbackHistory = {
106106 handler : number | undefined | string ;
107107 delay : number | undefined | string ;
108108 didTimeout : undefined | boolean ;
109- isOnline : boolean ;
109+ online : number ;
110110 canceledCounter : number ;
111111 canceledByTraceIds : string [ ] | null ;
112112 selfTime : number | null ;
@@ -268,9 +268,7 @@ export class Wrapper {
268268 return ;
269269 }
270270
271- if ( setTimerRecord . handler === handler ) {
272- setTimerRecord . isOnline = false ;
273- }
271+ setTimerRecord . online -- ;
274272 setTimerRecord . selfTime = trim2microsecond ( selfTime ) ;
275273
276274 if ( canceledByTraceId === null ) {
@@ -305,14 +303,14 @@ export class Wrapper {
305303 existing . delay = handlerDelay ;
306304 existing . calls ++ ;
307305 existing . isEval = isEval ;
308- existing . isOnline = true ;
306+ existing . online ++ ;
309307 } else {
310308 history . set ( callstack . traceId , {
311309 handler,
312310 calls : 1 ,
313311 delay : handlerDelay ,
314312 isEval,
315- isOnline : true ,
313+ online : 1 ,
316314 traceId : callstack . traceId ,
317315 trace : callstack . trace ,
318316 traceDomain : this . #getTraceDomain( callstack . trace [ 0 ] ) ,
@@ -442,20 +440,21 @@ export class Wrapper {
442440
443441 ricOffline (
444442 handler : number ,
445- callstack : TCallstack ,
443+ traceId : string ,
446444 deadline : IdleDeadline ,
447445 selfTime : number
448446 ) {
449- const ricRecord = this . ricHistory . get ( callstack . traceId ) ;
447+ const ricRecord = this . ricHistory . get ( traceId ) ;
448+ if ( ! ricRecord ) {
449+ return ;
450+ }
450451
451- if ( ricRecord ) {
452- this . onlineIdleCallbackLookup . delete ( Number ( ricRecord . handler ) ) ;
452+ ricRecord . didTimeout = deadline . didTimeout ;
453+ ricRecord . selfTime = trim2microsecond ( selfTime ) ;
453454
454- ricRecord . didTimeout = deadline . didTimeout ;
455- if ( ricRecord . handler === handler ) {
456- ricRecord . isOnline = false ;
457- }
458- ricRecord . selfTime = trim2microsecond ( selfTime ) ;
455+ if ( this . onlineIdleCallbackLookup . get ( handler ) ) {
456+ this . onlineIdleCallbackLookup . delete ( Number ( handler ) ) ;
457+ ricRecord . online -- ;
459458 }
460459 }
461460
@@ -476,7 +475,7 @@ export class Wrapper {
476475 existing . handler = handler ;
477476 existing . didTimeout = undefined ;
478477 existing . delay = delay ;
479- existing . isOnline = true ;
478+ existing . online ++ ;
480479 } else {
481480 this . ricHistory . set ( callstack . traceId , {
482481 traceId : callstack . traceId ,
@@ -486,7 +485,7 @@ export class Wrapper {
486485 handler,
487486 didTimeout : undefined ,
488487 delay,
489- isOnline : true ,
488+ online : 1 ,
490489 canceledCounter : 0 ,
491490 canceledByTraceIds : null ,
492491 selfTime : null ,
@@ -522,10 +521,9 @@ export class Wrapper {
522521 if ( ricRecord ) {
523522 this . onlineIdleCallbackLookup . delete ( Number ( handler ) ) ;
524523
525- if ( ricRecord . handler === handler ) {
526- ricRecord . isOnline = false ;
527- }
524+ ricRecord . online -- ;
528525 ricRecord . didTimeout = undefined ;
526+
529527 if ( ricRecord . canceledByTraceIds === null ) {
530528 ricRecord . canceledByTraceIds = [ callstack . traceId ] ;
531529 } else if ( ! ricRecord . canceledByTraceIds . includes ( callstack . traceId ) ) {
@@ -638,7 +636,7 @@ export class Wrapper {
638636 fn ( deadline ) ;
639637 this . ricOffline (
640638 handler ,
641- callstack ,
639+ callstack . traceId ,
642640 deadline ,
643641 performance . now ( ) - start
644642 ) ;
0 commit comments