package Ġcom . bern af err ari . change detection . ui Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Clip Data Ċ import Ġandroid . content . Clipboard Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . net . Uri Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . webkit . Web Chrome Client Ċ import Ġandroid . webkit . Web Settings Ċ import Ġandroid . webkit . WebView Ċ import Ġcom . bern af err ari . change detection . Application Ċ import Ġcom . bern af err ari . change detection . R Ċ import Ġes . dm oral . toast y . Toast y Ċ Ċ // ĠIn sp ired Ġfrom ĠFast Hub Ġand Ġconverted Ġto ĠKotlin Ċ class ĠP rett ify WebView Ġ: ĠNested WebView Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġon Content Changed Listener : ĠOn Content Changed Listener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġintercept Touch : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġenable Nested Scrolling : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġinterface ĠOn Content Changed Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Content Changed ( progress : ĠInt ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Scroll Changed ( re ached Top : ĠBoolean , Ġscroll : ĠInt ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isIn Edit Mode ) Ġreturn ĊĠĠĠĠĠĠĠ Ġinit View ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit View ( attrs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet , Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( ĊĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠ Ġdef Style Attr ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit View ( attrs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Intercept Touch Event ( p : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Click ableView Accessibility ") ĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( event : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( parent Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . request Dis allow Intercept Touch Event ( intercept Touch ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Touch Event ( event ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Set JavaScript Enabled ") ĊĠĠĠ Ġprivate Ġfun Ġinit View ( attrs : ĠAttributeSet ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġweb Chrome Client Ġ= ĠChrome Client () ĊĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= Ġsettings ĊĠĠĠĠĠĠĠ Ġsettings . java Script Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġsettings . set App Cache Path ( context . cacheDir . path ) ĊĠĠĠĠĠĠĠ Ġsettings . set App Cache Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġsettings . cache Mode Ġ= ĠWeb Settings . LOAD _ NO _ CACHE ĊĠĠĠĠĠĠĠ Ġsettings . default Text Encoding Name Ġ= Ġ" utf - 8 " ĊĠĠĠĠĠĠĠ Ġsettings . loads Images Autom atically Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġsettings . block Network Image Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġsettings . built In Zoom Controls Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġsettings . display Zoom Controls Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġset On Long ClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġhit TestResult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hit Link Result ( result ) Ġ&& Ġresult . extra . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcopy To Clipboard ( context , Ġresult . extra ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOn Long ClickListener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcopy To Clipboard ( context : ĠContext , Ġuri : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclipboard Ġ= Ġcontext . getSystem Service ( Context . CLIP BOARD _ SERVICE ) Ġas ĠClip board Manager ĊĠĠĠĠĠĠĠ Ġval Ġclip Ġ= ĠClip Data . new Plain Text ( context . getString ( R . string . app _ name ), Ġuri ) ĊĊĠĠĠĠĠĠĠ Ġclipboard . primary Clip Ġ= Ġclip ĊĠĠĠĠĠĠĠ ĠToast y . success ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApplication . instance !!. application Context , Ġcontext . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . success _ copied ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Scroll Changed ( l : ĠInt , Ġt : ĠInt , Ġold l : ĠInt , Ġold t : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Scroll Changed ( l , Ġt , Ġold l , Ġold t ) ĊĠĠĠĠĠĠĠ Ġif Ġ( on Content Changed Listener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Content Changed Listener !!. on Scroll Changed ( t Ġ== Ġ 0 , Ġt ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġon Content Changed Listener Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġsuper . on Detached From Window () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhit Link Result ( result : ĠWebView . Hit TestResult ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġresult . type Ġ== ĠWebView . Hit TestResult . SRC _ AN CH OR _ TYPE Ġ|| Ġresult . type Ġ== ĠWebView . Hit TestResult . IMAGE _ TYPE Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . type Ġ== ĠWebView . Hit TestResult . SRC _ IMAGE _ AN CH OR _ TYPE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On Content Changed Listener ( on Content Changed Listener : ĠOn Content Changed Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on Content Changed Listener Ġ= Ġon Content Changed Listener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Source ( source : ĠString , Ġwrap : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= Ġsettings ĊĠĠĠĠĠĠĠ Ġsettings . layout Algorithm Ġ= ĠWeb Settings . Layout Algorithm . TEXT _ AUTO SIZ ING ĊĠĠĠĠĠĠĠ Ġscroll Bar Style Ġ= ĠView . SCROLL BAR S _ INS IDE _ OVER LAY ĊĠĠĠĠĠĠĠ Ġsettings . set Support Zoom (! wrap ) ĊĠĠĠĠĠĠĠ Ġsettings . built In Zoom Controls Ġ= Ġ! wrap ĊĠĠĠĠĠĠĠ Ġif Ġ(! wrap ) Ġsettings . display Zoom Controls Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġload Code ( source ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Code ( page : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpost Ġ{ Ġload Data With Base URL ("", Ġpage , Ġ" text / html ", Ġ" utf - 8 ", Ġnull ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġscroll To Line ( url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġline No Ġ= Ġget Line No ( url ) ĊĠĠĠĠĠĠĠ Ġif Ġ( line No Ġ!= Ġnull Ġ&& Ġline No . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Url (" javascript : scrollTo LineNumber ('" Ġ+ Ġline No [ 0 ] Ġ+ Ġ"', Ġ'" Ġ+ Ġline No [ 1 ] Ġ+ Ġ" ') ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( line No Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Url (" javascript : scrollTo LineNumber ('" Ġ+ Ġline No [ 0 ] Ġ+ Ġ"', Ġ' 0 ') ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Image ( url : ĠString , Ġis Svg : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= Ġsettings ĊĠĠĠĠĠĠĠ Ġsettings . layout Algorithm Ġ= ĠWeb Settings . Layout Algorithm . SINGLE _ COLUMN ĊĠĠĠĠĠĠĠ Ġscroll Bar Style Ġ= ĠView . SCROLL BAR S _ INS IDE _ OVER LAY ĊĠĠĠĠĠĠĠ Ġsettings . set Support Zoom ( true ) ĊĠĠĠĠĠĠĠ Ġsettings . built In Zoom Controls Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġsettings . display Zoom Controls Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġhtml : ĠString ĊĠĠĠĠĠĠĠ Ġif Ġ( is Svg ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhtml Ġ= Ġurl ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhtml Ġ= Ġ"< html >< head >< style > img { display : Ġinline ; Ġheight : Ġauto ; Ġmax - width : Ġ 1 0 0 %; }</ style ></ head >< body >" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< img Ġsrc =\"" Ġ+ Ġurl Ġ+ Ġ"\" /></ body ></ html >" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġload Data ( html , Ġ" text / html ", Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Intercept Touch ( intercept Touch : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . intercept Touch Ġ= Ġintercept Touch ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Enable Nested Scrolling ( enable Nested Scrolling : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . enable Nested Scrolling Ġ!= Ġenable Nested Scrolling ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Nested Scrolling Enabled Ġ= Ġenable Nested Scrolling ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . enable Nested Scrolling Ġ= Ġenable Nested Scrolling ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠChrome Client Ġ: ĠWeb Chrome Client () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( view : ĠWebView , Ġprogress : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Progress Changed ( view , Ġprogress ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Content Changed Listener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Content Changed Listener !!. on Content Changed ( progress ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġget Line No ( url : ĠString ?): ĠArray < String >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġline No : ĠArray < String >? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠUri . parse ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠlineNumber Ġ= Ġuri . encoded Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( line Number Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline No Ġ= ĠlineNumber . replace (" L ". to Regex (), Ġ""). split ("- ". to Regex ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. drop Last While Ġ{ Ġit . isEmpty () Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġline No ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }