File tree 2 files changed +19
-0
lines changed
2 files changed +19
-0
lines changed Original file line number Diff line number Diff line change @@ -63,6 +63,8 @@ class BandwidthMeasurementEngine {
63
63
this . #uploadApi = uploadApiUrl ;
64
64
this . #throttleMs = throttleMs ;
65
65
this . #estimatedServerTime = Math . max ( 0 , estimatedServerTime ) ;
66
+
67
+ document . addEventListener ( 'visibilitychange' , this . #handleVisibilityChange) ;
66
68
}
67
69
68
70
// Public attributes
@@ -87,6 +89,14 @@ class BandwidthMeasurementEngine {
87
89
this . #fetchOptions = v ;
88
90
}
89
91
92
+ #handleVisibilityChange = ( ) => {
93
+ if ( document . visibilityState === 'hidden' ) {
94
+ this . pause ( ) ;
95
+ } else if ( document . visibilityState === 'visible' ) {
96
+ this . play ( ) ;
97
+ }
98
+ } ;
99
+
90
100
finishRequestDuration = 1000 ; // download/upload duration (ms) to reach for stopping further measurements
91
101
getServerTime = cfGetServerTime ; // method to extract server time from response
92
102
@@ -371,6 +381,13 @@ class BandwidthMeasurementEngine {
371
381
const curPromise = this . #currentFetchPromise;
372
382
curPromise && ( curPromise . _cancel = true ) ;
373
383
}
384
+
385
+ deleteEventListener ( ) {
386
+ document . removeEventListener (
387
+ 'visibilitychange' ,
388
+ this . #handleVisibilityChange
389
+ ) ;
390
+ }
374
391
}
375
392
376
393
export default BandwidthMeasurementEngine ;
Original file line number Diff line number Diff line change @@ -330,6 +330,7 @@ class MeasurementEngine {
330
330
msmResults . finished = true ;
331
331
this . onResultsChange ( { type } ) ;
332
332
this . #running && this . #next( ) ;
333
+ engine . deleteEventListener ( ) ;
333
334
} ;
334
335
335
336
engine . onConnectionError = e => {
@@ -443,6 +444,7 @@ class MeasurementEngine {
443
444
}
444
445
445
446
this . #running && this . #next( ) ;
447
+ engine . deleteEventListener ( ) ;
446
448
} ;
447
449
448
450
engine . onConnectionError = e => {
You can’t perform that action at this time.
0 commit comments