package Ġcloud . pace . sdk . app kit . app . webview Ċ Ċ import Ġandroid . annotation . Target Api Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent . ACTION _ VIEW Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Message Ċ import Ġandroid . util . Log Ċ import Ġandroid . webkit .* Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠApp WebView Client ( var Ġurl : ĠString , Ġval Ġcallback : ĠWeb Client Callback , Ġval Ġcontext : ĠContext ? Ġ= Ġnull ) Ġ: ĠWebView Client () Ġ{ ĊĊĠĠĠ Ġinterface ĠWeb Client Callback Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠInv oked Ġwhen Ġthe ĠWeb Client Ġcatch Ġa Ġclose ĠURI . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠonClose () ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠInv oked Ġwhen Ġthe ĠWeb Client Ġchanges Ġit 's Ġerror Ġstate Ġ( e . g . Ġa Ġwebsite Ġthat Ġcouldn 't Ġbe Ġloaded Ġpreviously Ġis Ġnow Ġready ). ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġis Error Ġtrue , Ġif Ġthe Ġcurrent Ġstate Ġis Ġan Ġerror Ġpage ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġon Switch Error State ( isError : ĠBoolean , Ġis Http Error : ĠBoolean ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠInv oked Ġwhen Ġthe Ġpage Ġhas Ġstarted Ġor Ġfinished Ġloading . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġon Loading Changed ( isLoading : ĠBoolean ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠInv oked Ġwhen Ġthe ĠURL Ġhas Ġchanged . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġon Url Changed ( new Url : ĠString ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar ĠisIn Error State Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġwas In Error State Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġwas Http Error Ġ= Ġfalse ĊĊĠĠĠ Ġval Ġchrome Client Ġ= Ġobject Ġ: ĠWeb Chrome Client () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( view : ĠWebView ?, Ġnew Progress : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Progress Ġ== Ġ 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( was In Error State Ġ&& Ġ! isIn Error State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Switch Error State ( isError Ġ= Ġfalse , Ġis Http Error Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwas In Error State Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate Window ( view : ĠWebView ?, Ġis Dialog : ĠBoolean , Ġis User Gesture : ĠBoolean , Ġresult Msg : ĠMessage ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is User Gesture ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġopen Ġblank Ġlinks Ġextern ally ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġview ?. hit TestResult ?. extra ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbrowser Intent Ġ= ĠIntent ( ACTION _ VIEW , ĠUri . parse ( data )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. context ?. startActivity ( browser Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Geo location Permissions Show Prompt ( origin : ĠString ?, Ġcallback : ĠGeo location Permissions . Callback ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ?. invoke ( origin , Ġtrue , Ġfalse ) Ġ?: Ġsuper . on Geo location Permissions Show Prompt ( origin , Ġcallback ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Console Message ( console Message : ĠConsole Message ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsole Message Ġ?: Ġreturn Ġsuper . on Console Message ( console Message ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Level Ġ= Ġwhen Ġ( console Message . message Level ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConsole Message . Message Level . LOG Ġ-> ĠLog . INFO ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConsole Message . Message Level . WARNING Ġ-> ĠLog . WARN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConsole Message . Message Level . ERROR Ġ-> ĠLog . ERROR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConsole Message . Message Level . DEBUG Ġ-> ĠLog . DEBUG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠLog . VERBOSE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . log ( logLevel , Ġconsole Message . message ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo Update Vis ited History ( view : ĠWebView ?, Ġurl : ĠString ?, Ġis Reload : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġurl ?. let Ġ{ Ġcallback . on Url Changed ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( url Ġ== ĠCLOSE _ URI ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . onClose () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Target Api ( Build . VERSION _ CODES . N ) ĊĠĠĠ Ġoverride Ġfun Ġshould Override Url Loading ( view : ĠWebView ?, Ġrequest : ĠWeb Resource Request ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Url Ġ= Ġrequest ?. url ?. toString () ĊĠĠĠĠĠĠĠ Ġreturn Ġintercept ( view , Ġnew Url ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġoverride Ġfun Ġshould Override Url Loading ( view : ĠWebView ?, Ġurl : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Url Ġ= Ġurl ?. let Ġ{ ĠUri . parse ( it ) Ġ} ?. toString () ĊĠĠĠĠĠĠĠ Ġreturn Ġintercept ( view , Ġnew Url ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinject Feature Flags ( view : ĠWebView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscript Ġ= Ġ" window . features Ġ= Ġ{ Ġmessage Ids : Ġtrue Ġ}" ĊĠĠĠĠĠĠĠ ĠTim ber . d (" Ex cec ute Ġthe Ġfollowing ĠJavascript : Ġ$ script ") ĊĠĠĠĠĠĠĠ Ġview ?. evaluate Javascript ( script ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Javascript Ġexecution Ġcompleted Ġwith Ġthe Ġfollowing Ġresult : Ġ$ it ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġintercept ( view : ĠWebView ?, Ġurl : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġinject Feature Flags ( view ) ĊĊĠĠĠĠĠĠĠ Ġthis . url Ġ= Ġurl Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( url Ġ== ĠCLOSE _ URI ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . onClose () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Page Started ( view : ĠWebView ?, Ġurl : ĠString ?, Ġfav icon : ĠBitmap ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Page Started ( view , Ġurl , Ġfav icon ) ĊĠĠĠĠĠĠĠ Ġinject Feature Flags ( view ) ĊĠĠĠĠĠĠĠ ĠisIn Error State Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġcallback . on Loading Changed ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Page Finished ( view : ĠWebView ?, Ġurl : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Page Finished ( view , Ġurl ) ĊĠĠĠĠĠĠĠ Ġcallback . on Loading Changed ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Received Error ( view : ĠWebView ?, Ġrequest : ĠWeb Resource Request ?, Ġerror : ĠWeb Resource Error ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNo Ġinternet Ġconnection ĊĠĠĠĠĠĠĠ Ġsuper . on Received Error ( view , Ġrequest , Ġerror ) ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġrequest ?. url ?. toString () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ(! request . is For Main Frame ) Ġreturn ĊĠĠĠĠĠĠĠ ĠsetError ( url , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Received Http Error ( view : ĠWebView ?, Ġrequest : ĠWeb Resource Request ?, Ġerror Response : ĠWeb Resource Response ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠHTTP Ġerror ĊĠĠĠĠĠĠĠ Ġsuper . on Received Http Error ( view , Ġrequest , Ġerror Response ) ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġrequest ?. url ?. toString () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ(! request . is For Main Frame ) Ġreturn ĊĠĠĠĠĠĠĠ ĠsetError ( url , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetError ( url : ĠString , Ġis Http Error : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( url Ġ!= Ġthis . url ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ((! was In Error State Ġ|| Ġwas Http Error Ġ!= Ġis Http Error )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Switch Error State ( true , Ġis Http Error ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠisIn Error State Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġwas In Error State Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġwas Http Error Ġ= Ġis Http Error ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCLOSE _ URI Ġ= Ġ" cloud sdk :// close " ĊĠĠĠ Ġ} Ċ } Ċ