package Ġcom . elect rom . view Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . webkit . Js Result Ċ import Ġandroid . webkit . Web Chrome Client Ċ import Ġandroid . webkit . WebView Ċ import Ġandroid . webkit . WebView Client Ċ import Ġcom . elect rom . Electron Ċ import Ġcom . elect rom . extension . E LECT RON _ INTERNAL _ SCRIPT _ FOLDER Ċ Ċ @ Suppress Lint (" Set JavaScript Enabled ", Ġ" Javascript Interface ", Ġ" View Constructor ") Ċ internal Ġclass ĠElectron WebView ( ĊĠĠĠ Ġelectron : ĠElectron Ċ ) Ġ: ĠWebView ( electron . activity ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġelectron Interface : ĠElectron Interface ĊĊĠĠĠ Ġprivate Ġval Ġpre Load Script Ġ= Ġelectron ĊĠĠĠĠĠĠĠ Ġ. activity ĊĠĠĠĠĠĠĠ Ġ. assets ĊĠĠĠĠĠĠĠ Ġ. open ("${ E LECT RON _ INTERNAL _ SCRIPT _ FOLDER }/ renderer - init . js ") ĊĠĠĠĠĠĠĠ Ġ. use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( it . available ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . read ( buffer ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString ( buffer , ĠChar sets . UTF _ 8 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġsettings . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava Script Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġallow File Access Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠResolve ĠCORS Ġpolicy Ġfor Ġhttp Ġrequests ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhttps :// chromium . google source . com / chromium / src / +/ HEAD / android _ webview / docs / cors - and - webview - api . md ĊĠĠĠĠĠĠĠĠĠĠĠ Ġallow Universal Access FromFile URLs Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠwebView Client Ġ= Ġobject Ġ: ĠWebView Client () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Finished ( view : ĠWebView , Ġurl : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelectron . setTitle ( view . title Ġ?: Ġ"< electron >") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Page Finished ( view , Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweb Chrome Client Ġ= Ġobject Ġ: ĠWeb Chrome Client () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Js Alert ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview : ĠWebView ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult : ĠJs Result ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle (" Alert ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Message ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Positive Button (" Yes ") Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . confirm () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. set Cancel able ( false ). create (). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Web Contents Debugging Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelectron Interface Ġ= ĠElectron Interface ( electron , Ġpre Load Script ) ĊĠĠĠĠĠĠĠ Ġadd Javascript Interface ( electron Interface , Ġ"@ @ android ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġresolve Async Message ( channel : ĠString , Ġdata : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġevaluate Javascript ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" window [' @@ electron ']. ipc Renderer . emit ('$ channel ', Ġ'$ data '); ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }