package Ġde . tum .` in `. cm . vod measurement tool . util Ċ Ċ import Ġandroid . os . Count Down Timer Ċ import Ġandroid . webkit . WebView Ċ import Ġandroid . webkit . WebView Client Ċ import Ġde . tum .` in `. cm . vod measurement tool . MediaPlayer Service Ċ import Ġde . tum .` in `. cm . vod measurement tool . model . Platform Ċ Ċ /** Ċ Ġ* ĠHelper Ġclass Ġto Ġload Ġa Ġvideo 's Ġweb Ġpage , Ġin Ġorder Ġto Ġcollect Ġthe Ġpage 's Ġloading Ġtime . Ċ Ġ* Ċ Ġ* Ġ@ param ĠĠ Ġweb Url ĠĠĠĠĠĠĠĠĠ Ġthe Ġvideo 's Ġweb Ġurl , Ġfor Ġwhich Ġthis Ġclass Ġwill Ġload Ġits Ġcontent Ġvia Ġa ĠwebView Ċ Ġ* Ġ@ param ĠĠ Ġplatform ĠĠĠĠĠĠĠ Ġthe Ġplatform Ġfrom Ġwhich Ġthe Ġvideo Ġis Ġfrom Ċ Ġ* Ġ@ param ĠĠ Ġplayer Service ĠĠ Ġreference Ġto Ġthe Ġforeground Ġservice Ġthat Ġruns Ġall Ġmeasurements Ċ Ġ* Ġ@ param ĠĠ Ġcompletion ĠĠĠĠĠ Ġadditional Ġaction Ġto Ġbe Ġperformed Ġonce Ġthe ĠwebView Ġfinishes Ġloading Ġthe Ġweb Url 's Ġcontent , Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Ġthe Ġloading Ġtime Ġpassed Ġin Ġfor Ġfurther Ġprocessing Ċ Ġ*/ Ċ class ĠWeb Loader ( private Ġval Ġweb Url : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġplatform : ĠPlatform , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġplayer Service : ĠMedia Player Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġcompletion : Ġ( Long ) Ġ-> ĠUnit ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġstart Loading TimeStamp : ĠLong Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠ Ġprivate Ġvar Ġtime To Load Web Url Page : ĠLong Ġ= Ġ 0 L ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAs Ġthere Ġare Ġno Ġcallbacks Ġfrom ĠwebView Ġcalls , Ġwe Ġare Ġunable Ġto Ġreact Ġprecise ly Ġat Ġthe Ġpoint Ġit Ġfinishes Ġloading ĊĠĠĠĠ Ġ* Ġthe Ġpassed - in Ġweb Url . ĠWe Ġuse Ġthis Ġclass Ġto Ġset Ġa Ġtime Ġlimit Ġto Ġthe Ġloading , Ġand Ġonce Ġthe Ġlimit Ġis Ġreach , Ġwe ĊĠĠĠĠ Ġ* Ġretrieve Ġthe Ġmeasured Ġloading Ġtime . ĠThe Ġtime Ġlimits Ġare Ġchosen Ġso Ġthat Ġin Ġmost Ġcases , Ġthey Ġshould Ġbe Ġenough Ġfor ĊĠĠĠĠ Ġ* Ġthe ĠwebView Ġto Ġfinish Ġloading Ġthe Ġweb Ġpage , Ġin Ġthe Ġopposite Ġcase Ġthere Ġwere Ġprobably Ġsome Ġconnection Ġissues , ĊĠĠĠĠ Ġ* Ġfor Ġwhich Ġwe Ġsimply Ġreturn Ġan Ġinvalid Ġloading Ġtime Ġ(- 1 ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġinner Ġclass ĠWeb Loader Count Down Timer ( default : ĠLong ? Ġ= Ġnull ) ĊĠĠĠĠĠĠĠ Ġ: ĠCount Down Timer ( default Ġ?: Ġif Ġ( platform Ġ== ĠPlatform . Y OUT UBE ) Ġ 7 0 0 0 L Ġelse Ġ 1 0 0 0 0 L , Ġ 1 0 0 0 ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Loading TimeStamp Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Finish () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( time To Load Web Url Page Ġ<= Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime To Load Web Url Page Ġ= Ġ- 1 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL . d Ġ{ Ġ" Web Loader : Ġtime To Load Web Url Page Ġ= Ġ$ time To Load Web Url Page " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion . invoke ( time To Load Web Url Page ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tick ( millis Until Finished : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Web Url Page () Ġ{ ĊĠĠĠĠĠĠĠ Ġplayer Service . run On Service Thread ( Runnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġget Ġinstance Ġof Ġthe ĠwebView Ġwhich Ġwill Ġload Ġthe Ġweb Url 's Ġcontent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠwebView Ġ= Ġplayer Service . provide Hidden WebView () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Preferences Util ( player Service ). skip Loading Web Pages ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġthe Ġloading Ġweb Urls Ġsetting Ġis Ġset Ġto Ġbe Ġskipped Ġby Ġuser , Ġjust Ġload Ġa Ġdummy Ġblank Ġpage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠwebView ?. web View Client Ġ= Ġobject Ġ: ĠWebView Client () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Finished ( view : ĠWebView ?, Ġurl : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL . d Ġ{ Ġ" Web Loader : Ġmock Ġpage Ġfinished " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Page Finished ( view , Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWeb Loader Count Down Timer ( 3 0 0 0 ). start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠwebView ?. load Url (" about : blank ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠwebView ?. web View Client Ġ= Ġobject Ġ: ĠWebView Client () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġintercept Ġthe Ġevent Ġwhen Ġthe ĠwebView Ġfinishes Ġloading Ġthe Ġweb Ġpage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Finished ( view : ĠWebView ?, Ġurl : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL . d Ġ{ Ġ" Web Loader : Ġon Page Finished (), Ġtime Ġ= Ġ${ System . currentTimeMillis () Ġ- Ġstart Loading TimeStamp }" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime To Load Web Url Page Ġ= ĠSystem . currentTimeMillis () Ġ- Ġstart Loading TimeStamp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Page Finished ( view , Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġstart Ġthe Ġtimer Ġright Ġbefore Ġstarting Ġloading Ġthe Ġweb Url ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWeb Loader Count Down Timer (). start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠwebView ?. load Url ( web Url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }