/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠI ce Rock ĠMAG ĠInc . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense . Ċ Ġ*/ Ċ Ċ package Ġdev . icer ock . mo ko . widgets . core . factory Ċ Ċ import Ġandroid . annotation . Target Api Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . webkit . Web Resource Request Ċ import Ġandroid . webkit . WebView Ċ import Ġandroid . webkit . WebView Client Ċ import Ġdev . icer ock . mo ko . mv vm . li ved ata . Mutable LiveData Ċ import Ġdev . icer ock . mo ko . widgets . core . View Bundle Ċ import Ġdev . icer ock . mo ko . widgets . core . View Factory Ċ import Ġdev . icer ock . mo ko . widgets . core . View Factory Context Ċ import Ġdev . icer ock . mo ko . widgets . core . style . apply Background IfNeeded Ċ import Ġdev . icer ock . mo ko . widgets . core . style . background . Background Ċ import Ġdev . icer ock . mo ko . widgets . core . style . background . Fill Ċ import Ġdev . icer ock . mo ko . widgets . core . style . view . Margin Values Ċ import Ġdev . icer ock . mo ko . widgets . core . style . view . Widget Size Ċ import Ġdev . icer ock . mo ko . widgets . core . utils . WebView Redirect Url Handler Ċ import Ġdev . icer ock . mo ko . widgets . core . widget . WebView Widget Ċ Ċ actual Ġclass ĠWebView Factory Ġactual Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġmargins : ĠMargin Values ?, ĊĠĠĠ Ġprivate Ġval Ġbackground : ĠBackground < Fill . Solid >? Ċ ) Ġ: ĠView Factory < WebView Widget < out ĠWidget Size >> Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġ< WS Ġ: ĠWidget Size > Ġbuild ( ĊĠĠĠĠĠĠĠ Ġwidget : ĠWebView Widget < out ĠWidget Size >, ĊĠĠĠĠĠĠĠ Ġsize : ĠWS , ĊĠĠĠĠĠĠĠ Ġview Factory Context : ĠView Factory Context ĊĠĠĠ Ġ): ĠView Bundle < WS > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġview Factory Context . android Context ĊĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= ĠWebView ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Background IfNeeded ( this @ WebView Factory . background ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . java Script Enabled Ġ= Ġwidget . is JavaScript Enabled ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . dom Storage Enabled Ġ= Ġwidget . android Is Dom Storage Enabled ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠwebView Client Ġ= ĠCustom WebView Client ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Redirect Config Ġ= Ġwidget . success Redirect Config , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailure Redirect Config Ġ= Ġwidget . failure Redirect Config , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Page Loading Ġ= Ġwidget . is Web Page Loading ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Url ( widget . target Url ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠView Bundle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Ġ= Ġroot , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġsize , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmargins Ġ= Ġmargins ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠCustom WebView Client ( ĊĠĠĠĠĠĠĠ Ġsuccess Redirect Config : ĠWebView Widget . Redirect Config ?, ĊĠĠĠĠĠĠĠ Ġfailure Redirect Config : ĠWebView Widget . Redirect Config ?, ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġis Page Loading : ĠMutable LiveData < Boolean >? ĊĠĠĠ Ġ) Ġ: ĠWebView Client () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġredirect Url Handler Ġ= ĠWebView Redirect Url Handler ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Redirect Config Ġ= Ġsuccess Redirect Config , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfailure Redirect Config Ġ= Ġfailure Redirect Config ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Started ( view : ĠWebView ?, Ġurl : ĠString ?, Ġfav icon : ĠBitmap ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Page Loading ?. value Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Page Started ( view , Ġurl , Ġfav icon ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Finished ( view : ĠWebView ?, Ġurl : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Page Loading ?. value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Page Finished ( view , Ġurl ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ SuppressWarnings (" deprecation ") ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Override Url Loading ( view : ĠWebView , Ġurl : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġredirect Url Handler . handle Url ( url ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Target Api ( Build . VERSION _ CODES . N ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Override Url Loading ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview : ĠWebView , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest : ĠWeb Resource Request ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequested Url Ġ= ĠUri . parse ( request . url . toString ()). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġredirect Url Handler . handle Url ( requested Url ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ