package Ġcom . code bor ne . se len ide . impl Ċ Ċ import Ġorg . l ighthouse games . logging . logging Ċ import Ġcom . code bor ne . se len ide . Downloads Folder Ċ import Ġorg . openqa . selenium . WebDriver Ċ import Ġorg . slf 4 j . LoggerFactory Ċ Ċ @ ok io . Experimental FileSystem Ċ internal Ġclass ĠUn used Web drivers Cleanup Thread ( ĊĠĠĠ Ġprivate Ġval Ġall WebDriver Threads : ĠMutable Collection < Thread >, ĊĠĠĠ Ġprivate Ġval Ġthread WebDriver : ĠMutable Map < Long , ĠWebDriver >, ĊĠĠĠ Ġprivate Ġval Ġthread Proxy Server : ĠMutable Map < Long , ĠAny >, ĊĠĠĠ Ġprivate Ġval Ġthread Downloads Folder : ĠMutable Map < Long , ĠDown loads Folder > Ċ ) Ġ: ĠThread () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose Unused Web drivers () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInterruptedException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Thread (). interrupt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclose Unused Web drivers () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( thread Ġin Ġall WebDriver Threads ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! thread . is Alive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info Ġ{" Thread Ġ${ thread . id } Ġis Ġdead . ĠLet 's Ġclose Ġwebdriver Ġ${ thread WebDriver [ thread . id ]}" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose WebDriver ( thread ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclose WebDriver ( thread : ĠThread ) Ġ{ ĊĠĠĠĠĠĠĠ Ġall WebDriver Threads . remove ( thread ) ĊĠĠĠĠĠĠĠ Ġval Ġdriver Ġ= Ġthread WebDriver . remove ( thread . id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( driver Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info Ġ{ Ġ" No Ġwebdriver Ġfound Ġfor Ġthread : Ġ${ thread . id } Ġ- Ġnothing Ġto Ġclose " Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdriver . quit () ĊĠĠĠĠĠĠĠ Ġ} Ċ /* Ċ TODO : ĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= Ġthread Proxy Server . remove ( thread . id ) ĊĠĠĠĠĠĠĠ Ġproxy ?. shutdown () Ċ */ ĊĠĠĠĠĠĠĠ Ġthread Downloads Folder . remove ( thread . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlog Ġ= Ġlogging ( Unused Web drivers Cleanup Thread :: class . simple Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġis Daemon Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Web drivers Ġkill er Ġthread " ĊĠĠĠ Ġ} Ċ } Ċ