/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 - 2 0 1 8 ĠH az uki Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġjp . h az uki . y uz ub rowser . toolbar Ċ Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . support . design . widget . AppBar Layout Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . LinearLayout Ċ import Ġjp . h az uki . y uz ub rowser . R Ċ import Ġjp . h az uki . y uz ub rowser . action . manager . Action Controller Ċ import Ġjp . h az uki . y uz ub rowser . action . manager . Action Icon Manager Ċ import Ġjp . h az uki . y uz ub rowser . settings . container . Toolbar Visibility Container Ċ import Ġjp . h az uki . y uz ub rowser . settings . data . AppData Ċ import Ġjp . h az uki . y uz ub rowser . tab . manager . Main Tab Data Ċ import Ġjp . h az uki . y uz ub rowser . theme . Theme Data Ċ import Ġjp . h az uki . y uz ub rowser . toolbar . Toolbar Manager . Companion . LOCATION _ BOTTOM Ċ import Ġjp . h az uki . y uz ub rowser . toolbar . Toolbar Manager . Companion . LOCATION _ BOTTOM _ ALWAYS Ċ import Ġjp . h az uki . y uz ub rowser . toolbar . Toolbar Manager . Companion . LOCATION _ BOTTOM _ OVER LAY _ ALWAYS Ċ import Ġjp . h az uki . y uz ub rowser . toolbar . Toolbar Manager . Companion . LOCATION _ FIXED _ WEB Ċ import Ġjp . h az uki . y uz ub rowser . toolbar . Toolbar Manager . Companion . LOCATION _ FLOAT _ BOTTOM Ċ import Ġjp . h az uki . y uz ub rowser . toolbar . Toolbar Manager . Companion . LOCATION _ LEFT Ċ import Ġjp . h az uki . y uz ub rowser . toolbar . Toolbar Manager . Companion . LOCATION _ RIGHT Ċ import Ġjp . h az uki . y uz ub rowser . toolbar . Toolbar Manager . Companion . LOCATION _ TOP Ċ import Ġjp . h az uki . y uz ub rowser . toolbar . Toolbar Manager . Companion . LOCATION _ TOP _ ALWAYS Ċ import Ġjp . h az uki . y uz ub rowser . toolbar . Toolbar Manager . Companion . LOCATION _ UNDEFINED Ċ import Ġjp . h az uki . y uz ub rowser . toolbar . Toolbar Manager . Companion . LOCATION _ WEB Ċ import Ġjp . h az uki . y uz ub rowser . toolbar . main .* Ċ import Ġjp . h az uki . y uz ub rowser . utils . extensions . get Res Color Ċ import Ġjp . h az uki . y uz ub rowser . utils . view . tab . Tab Layout Ċ import Ġjp . h az uki . y uz ub rowser . webkit . Custom WebView Ċ import Ġkotlinx . android . extensions . Layout Container Ċ import Ġkotlinx . android . synt hetic . main . browser _ activity .* Ċ Ċ open Ġclass ĠBrowser Toolbar Manager ( context : ĠContext , Ġoverride Ġval Ġcontainer View : ĠView , Ġcontroller : ĠAction Controller , Ġicon Manager : ĠAction Icon Manager , Ġrequest Callback : ĠRequest Callback ) Ġ: ĠToolbar Manager , ĠLayout Container , ĠOn WebView Scroll ChangeListener Ġ{ ĊĠĠĠ Ġoverride Ġval Ġtab Bar Ġ= ĠTab Bar ( context , Ġcontroller , Ġicon Manager , Ġrequest Callback ) ĊĠĠĠ Ġoverride Ġval Ġurl Bar Ġ= Ġif Ġ( AppData . toolbar _ url _ box . get ()) ĠWhite Url Bar ( context , Ġcontroller , Ġicon Manager , Ġrequest Callback ) Ġelse ĠUrl Bar ( context , Ġcontroller , Ġicon Manager , Ġrequest Callback ) ĊĠĠĠ Ġoverride Ġval ĠprogressBar Ġ= ĠProgress ToolBar ( context , Ġrequest Callback ) ĊĠĠĠ Ġoverride Ġval Ġcustom Bar Ġ= ĠCustom Toolbar ( context , Ġcontroller , Ġicon Manager , Ġrequest Callback ) ĊĠĠĠ Ġprivate Ġvar Ġm Is Web Toolbar Combined Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġval Ġfind On Page : ĠView ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġfind ĊĠĠĠ Ġoverride Ġval Ġbottom Toolbar Always Layout : ĠLinearLayout ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġbottom Always Toolbar Layout ĊĊĊĠĠĠ Ġprivate Ġval Ġweb Toolbar Layout Ġ= ĠLinearLayout ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġorientation Ġ= ĠLinearLayout . VERTICAL ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġfixed Web Toolbar Layout Ġ= ĠLinearLayout ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġorientation Ġ= ĠLinearLayout . VERTICAL ĊĠĠĠĠĠĠĠ Ġset BackgroundColor ( 0 xff 0 0 0 0 0 0 . toInt ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTO OL BAR _ LAYOUT _ PARAMS Ġ= ĠLinearLayout . LayoutParams ( LinearLayout . LayoutParams . MATCH _ PARENT , ĠLinearLayout . LayoutParams . MATCH _ PARENT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġbottom Always Toolbar Layout . background Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor Drawable ( context . get Res Color ( R . color . deep _ gray )) ĊĊĠĠĠĠĠĠĠ Ġoverlay Toolbar Scroll Padding . add On Layout ChangeListener Ġ{ Ġ_, Ġ_, Ġtop , Ġ_, Ġbottom , Ġ_, Ġ_, Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverlay Toolbar Scroll Padding . height Ġ= Ġbottom Ġ- Ġtop ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Toolbar View ( is Por trait : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Single Toolbar View ( i , Ġtab Bar , Ġis Por trait ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Single Toolbar View ( i , Ġurl Bar , Ġis Por trait ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Single Toolbar View ( i , ĠprogressBar , Ġis Por trait ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Single Toolbar View ( i , Ġcustom Bar , Ġis Por trait ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Single Toolbar View ( priority : ĠInt , Ġtoolbar : ĠToolbar Base , Ġis Por trait : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoolbar Preference Ġ= Ġtoolbar . toolbar Preferences ĊĠĠĠĠĠĠĠ Ġvar Ġtoolbar Priority : ĠInt ĊĠĠĠĠĠĠĠ Ġif Ġ( is Por trait ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar Priority Ġ= Ġtoolbar Preference . location _ priority . get () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar Priority Ġ= Ġtoolbar Preference . location _ land scape _ priority . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( toolbar Priority Ġ< Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar Priority Ġ= Ġtoolbar Preference . location _ priority . get () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( toolbar Priority Ġ!= Ġpriority ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġvar Ġlocation : ĠInt ĊĠĠĠĠĠĠĠ Ġif Ġ( is Por trait ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Ġ= Ġtoolbar Preference . location . get () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Ġ= Ġtoolbar Preference . location _ land scape . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location Ġ== ĠLOC ATION _ UNDEFINED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Ġ= Ġtoolbar Preference . location . get () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( location ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOC ATION _ TOP Ġ-> Ġtop Toolbar Layout . addView ( toolbar , ĠTO OL BAR _ LAYOUT _ PARAMS ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOC ATION _ BOTTOM , ĠLOC ATION _ FLOAT _ BOTTOM Ġ-> Ġbottom Toolbar Layout . addView ( toolbar , ĠTO OL BAR _ LAYOUT _ PARAMS ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOC ATION _ WEB Ġ-> Ġweb Toolbar Layout . addView ( toolbar , ĠTO OL BAR _ LAYOUT _ PARAMS ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOC ATION _ FIXED _ WEB Ġ-> Ġfixed Web Toolbar Layout . addView ( toolbar , ĠTO OL BAR _ LAYOUT _ PARAMS ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOC ATION _ LEFT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( toolbar . findViewById < View >( R . id . linear Layout ) Ġas ĠLinearLayout ). orientation Ġ= ĠLinearLayout . VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Toolbar Layout . addView ( toolbar , ĠTO OL BAR _ LAYOUT _ PARAMS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOC ATION _ RIGHT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( toolbar . findViewById < View >( R . id . linear Layout ) Ġas ĠLinearLayout ). orientation Ġ= ĠLinearLayout . VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Toolbar Layout . addView ( toolbar , ĠTO OL BAR _ LAYOUT _ PARAMS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOC ATION _ TOP _ ALWAYS Ġ-> Ġtop Always Toolbar Layout . addView ( toolbar , ĠTO OL BAR _ LAYOUT _ PARAMS ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOC ATION _ BOTTOM _ ALWAYS Ġ-> Ġbottom Toolbar Always Layout . addView ( toolbar , ĠTO OL BAR _ LAYOUT _ PARAMS ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOC ATION _ BOTTOM _ OVER LAY _ ALWAYS Ġ-> Ġbottom Overlay Item Layout . addView ( toolbar , ĠTO OL BAR _ LAYOUT _ PARAMS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalStateException (" Unknown Ġlocation :" Ġ+ Ġtoolbar . toolbar Preferences . location . get ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchange Current Tab ( to _ id : ĠInt , Ġfrom : ĠMain Tab Data ?, Ġto : ĠMain Tab Data ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġtab Bar . change Current Tab ( to _ id ) ĊĊĠĠĠĠĠĠĠ Ġfrom ?. m WebView ?. set Embedded Title Bar Method ( null ) ĊĠĠĠĠĠĠĠ Ġif Ġ( to Ġ== Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠ Ġset WebView Title Bar ( to . m WebView , Ġ! to . isIn Page Load ) ĊĊĠĠĠĠĠĠĠ Ġnotify Change Web State ( to ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmove Current Tab Position ( id : ĠInt ) Ġ= Ġtab Bar . change Current Tab ( id ) ĊĊĠĠĠ Ġoverride Ġfun Ġswap Tab ( a : ĠInt , Ġb : ĠInt ) Ġ= Ġtab Bar . swap Tab ( a , Ġb ) ĊĊĠĠĠ Ġoverride Ġfun Ġmove Tab ( from : ĠInt , Ġto : ĠInt , Ġnew Current : ĠInt ) Ġ= Ġtab Bar . move Tab ( from , Ġto , Ġnew Current ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Preference Reset () Ġ{ ĊĠĠĠĠĠĠĠ Ġtab Bar . on Preference Reset () ĊĠĠĠĠĠĠĠ Ġurl Bar . on Preference Reset () ĊĠĠĠĠĠĠĠ ĠprogressBar . on Preference Reset () ĊĠĠĠĠĠĠĠ Ġcustom Bar . on Preference Reset () ĊĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġtop Toolbar Layout . layout Params Ġas ĠApp Bar Layout . LayoutParams ĊĠĠĠĠĠĠĠ Ġparams . scroll Flags Ġ= Ġif Ġ( AppData . snap _ toolbar . get ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( AppBar Layout . LayoutParams . SCROLL _ FLAG _ SCROLL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠApp Bar Layout . LayoutParams . SCROLL _ FLAG _ ENTER _ ALWAYS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠApp Bar Layout . LayoutParams . SCROLL _ FLAG _ SNAP ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Bar Layout . LayoutParams . SCROLL _ FLAG _ SCROLL Ġor ĠApp Bar Layout . LayoutParams . SCROLL _ FLAG _ ENTER _ ALWAYS ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbottom Toolbar Layout . background . alpha Ġ= ĠApp Data . overlay _ bottom _ alpha . get () ĊĠĠĠĠĠĠĠ Ġbottom Overlay Item Layout . background . alpha Ġ= ĠApp Data . overlay _ bottom _ alpha . get () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Theme Changed ( theme Data : ĠTheme Data ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġtab Bar . on Theme Changed ( theme Data ) ĊĠĠĠĠĠĠĠ Ġurl Bar . on Theme Changed ( theme Data ) ĊĠĠĠĠĠĠĠ ĠprogressBar . on Theme Changed ( theme Data ) ĊĠĠĠĠĠĠĠ Ġcustom Bar . on Theme Changed ( theme Data ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( theme Data Ġ!= Ġnull Ġ&& Ġtheme Data . toolbar BackgroundColor Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop Toolbar Layout . set BackgroundColor ( theme Data . toolbar BackgroundColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Toolbar Layout . set BackgroundColor ( theme Data . toolbar BackgroundColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Overlay Item Layout . set BackgroundColor ( theme Data . toolbar BackgroundColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweb Toolbar Layout . set BackgroundColor ( theme Data . toolbar BackgroundColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixed Web Toolbar Layout . set BackgroundColor ( theme Data . toolbar BackgroundColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Toolbar Layout . set BackgroundColor ( theme Data . toolbar BackgroundColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Toolbar Layout . set BackgroundColor ( theme Data . toolbar BackgroundColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop Always Toolbar Layout . set BackgroundColor ( theme Data . toolbar BackgroundColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Toolbar Always Layout . set BackgroundColor ( theme Data . toolbar BackgroundColor ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop Toolbar Layout . setBackground Resource ( R . color . deep _ gray ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Toolbar Layout . setBackground Resource ( R . color . deep _ gray ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Overlay Item Layout . setBackground Resource ( R . color . deep _ gray ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweb Toolbar Layout . setBackground Resource ( R . color . deep _ gray ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixed Web Toolbar Layout . setBackground Resource ( R . color . deep _ gray ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Toolbar Layout . setBackground Resource ( R . color . deep _ gray ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Toolbar Layout . setBackground Resource ( R . color . deep _ gray ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop Always Toolbar Layout . setBackground Resource ( R . color . deep _ gray ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Toolbar Always Layout . setBackground Resource ( R . color . deep _ gray ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbottom Toolbar Layout . background . alpha Ġ= ĠApp Data . overlay _ bottom _ alpha . get () ĊĠĠĠĠĠĠĠ Ġbottom Overlay Item Layout . background . alpha Ġ= ĠApp Data . overlay _ bottom _ alpha . get () ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġbottom Toolbar Always Layout . child Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( bottom Toolbar Layout . getChild At ( i ) Ġas ? ĠSub Toolbar )?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Theme ( theme Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Configuration Changed ( config : ĠConfiguration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Activity Configuration Changed Single ( tab Bar , Ġconfig ) ĊĠĠĠĠĠĠĠ Ġon Activity Configuration Changed Single ( url Bar , Ġconfig ) ĊĠĠĠĠĠĠĠ Ġon Activity Configuration Changed Single ( progress Bar , Ġconfig ) ĊĠĠĠĠĠĠĠ Ġon Activity Configuration Changed Single ( custom Bar , Ġconfig ) ĊĊĠĠĠĠĠĠĠ Ġadd Toolbar View ( config . orientation Ġ== ĠConfiguration . OR IENTATION _ POR TRA IT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Activity Configuration Changed Single ( toolbar : ĠToolbar Base , Ġconfig : ĠConfiguration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġtoolbar . parent Ġas ? ĠViewGroup Ġ?: Ġthrow ĠNullPointerException () ĊĠĠĠĠĠĠĠ Ġif Ġ( parent Ġ=== Ġleft Toolbar Layout Ġ|| Ġparent Ġ=== Ġright Toolbar Layout ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( toolbar . findViewById < View >( R . id . linear Layout ) Ġas ĠLinearLayout ). orientation Ġ= ĠLinearLayout . HORIZONTAL ĊĠĠĠĠĠĠĠ Ġparent . remove View ( toolbar ) ĊĠĠĠĠĠĠĠ Ġtoolbar . on Activity Configuration Changed ( config ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Fullscreen Changed ( is Fullscreen : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtab Bar . on Fullscreen Changed ( is Fullscreen ) ĊĠĠĠĠĠĠĠ Ġurl Bar . on Fullscreen Changed ( is Fullscreen ) ĊĠĠĠĠĠĠĠ ĠprogressBar . on Fullscreen Changed ( is Fullscreen ) ĊĠĠĠĠĠĠĠ Ġcustom Bar . on Fullscreen Changed ( is Fullscreen ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon I me Changed ( is Shown : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbottom Overlay Layout . visibility Ġ= Ġif Ġ( is Shown ) ĠView . GONE Ġelse ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnotify Change Progress ( data : ĠMain Tab Data ) Ġ= ĠprogressBar . change Progress ( data ) ĊĊĠĠĠ Ġoverride Ġfun Ġnotify Change Web State ( data : ĠMain Tab Data ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset WebView Title Bar ( data . m WebView , Ġ! data . isIn Page Load ) ĊĊĠĠĠĠĠĠĠ Ġtab Bar . notify Change Web State ( data ) ĊĠĠĠĠĠĠĠ Ġurl Bar . notify Change Web State ( data ) ĊĠĠĠĠĠĠĠ ĠprogressBar . notify Change Web State ( data ) ĊĠĠĠĠĠĠĠ Ġcustom Bar . notify Change Web State ( data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreset ToolBar () Ġ{ ĊĠĠĠĠĠĠĠ Ġtab Bar . reset ToolBar () ĊĠĠĠĠĠĠĠ Ġurl Bar . reset ToolBar () ĊĠĠĠĠĠĠĠ Ġcustom Bar . reset ToolBar () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd New Tab View () Ġ= Ġtab Bar . add New Tab View () ĊĊĠĠĠ Ġoverride Ġfun Ġscroll Tab Right () Ġ= Ġtab Bar . full Scroll Right () ĊĊĠĠĠ Ġoverride Ġfun Ġscroll Tab Left () Ġ= Ġtab Bar . full Scroll Left () ĊĊĠĠĠ Ġoverride Ġfun Ġscroll Tab To ( position : ĠInt ) Ġ= Ġtab Bar . scrollTo Position ( position ) ĊĊĠĠĠ Ġoverride Ġfun Ġremove Tab ( no : ĠInt ) Ġ= Ġtab Bar . remove Tab ( no ) ĊĊĠĠĠ Ġoverride Ġfun Ġadd Tab ( id : ĠInt , Ġview : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtab Bar . add Tab ( id , Ġview ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset WebView Title Bar ( web : ĠCustom WebView , Ġcombine : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( fixed Web Toolbar Layout . parent Ġis ĠViewGroup ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( fixed Web Toolbar Layout . parent Ġas ĠViewGroup ). remove View ( fixed Web Toolbar Layout ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( combine ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! m Is Web Toolbar Combined ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Toolbar Layout . remove View ( web Toolbar Layout ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfixed Web Toolbar Layout . addView ( web Toolbar Layout , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweb . set Embedded Title Bar Method ( fixed Web Toolbar Layout ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Is Web Toolbar Combined ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfixed Web Toolbar Layout . remove View ( web Toolbar Layout ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Toolbar Layout . addView ( web Toolbar Layout ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweb . set Embedded Title Bar Method ( fixed Web Toolbar Layout ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Is Web Toolbar Combined Ġ= Ġcombine ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset On Tab ClickListener ( l : ĠTab Layout . On Tab ClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtab Bar . setOn Tab ClickListener ( l ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Geo location Permission Prompt ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbottom Overlay Item Layout . addView ( view , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhide Geo location Permission Prompt ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbottom Overlay Item Layout . remove View ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Contains Web Toolbar ( ev : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrc Ġ= ĠRect () ĊĠĠĠĠĠĠĠ Ġfixed Web Toolbar Layout . getGlobal Visible Rect ( rc ) ĊĠĠĠĠĠĠĠ Ġreturn Ġrc . contains ( ev . raw X . toInt (), Ġev . raw Y . toInt ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon WebView Scroll ( web : ĠCustom WebView , Ġe 1 : ĠMotion Event , Ġe 2 : ĠMotion Event , Ġdistance X : ĠFloat , Ġdistance Y : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( top Toolbar Layout . height Ġ== Ġ 0 Ġ&& Ġweb . is Scroll able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtranslation Y Ġ= Ġbottom Overlay Layout . translation Y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Trans : ĠFloat ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Trans Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdistance Y Ġ< Ġ 0 Ġ-> ĠMath . max ( 0 f , Ġdistance Y Ġ+ Ġtranslation Y ) Ġ// down ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdistance Y Ġ> Ġ 0 Ġ-> ĠMath . min ( bottom Toolbar Layout . height . toFloat (), Ġdistance Y Ġ+ Ġtranslation Y ) Ġ// up ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Overlay Layout . translation Y Ġ= Ġnew Trans ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Scroll Changed ( web View : ĠCustom WebView , Ġx : ĠInt , Ġy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġoverlay Toolbar Scroll Padding . real Height ĊĠĠĠĠĠĠĠ Ġif Ġ( height Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= ĠwebView . compute Vertical Scroll Range Method () Ġ- ĠwebView . compute Vertical Scroll Extent Method () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( y Ġ>= Ġtarget Ġ- Ġheight ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! overlay Toolbar Scroll Padding . visible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverlay Toolbar Scroll Padding . visible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( y Ġ>= Ġtarget Ġ- Ġheight Ġ* Ġ 2 Ġ&& Ġoverlay Toolbar Scroll Padding . visible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverlay Toolbar Scroll Padding . visible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon WebView Tap Up () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( top Toolbar Layout . height Ġ== Ġ 0 Ġ&& ĠApp Data . snap _ toolbar . get ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrans Ġ= Ġbottom Overlay Layout . translation Y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim ator : ĠObject Animator ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġduration : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Bar Height Ġ= Ġbottom Toolbar Layout . height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( trans Ġ> Ġbottom Bar Height Ġ/ Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator Ġ= ĠObject Animator . of Float ( bottom Overlay Layout , Ġ" translation Y ", Ġtrans , Ġbottom Bar Height . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ((( bottom Bar Height Ġ- Ġtrans ) Ġ/ Ġbottom Bar Height Ġ+ Ġ 1 ) Ġ* Ġ 1 5 0 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator Ġ= ĠObject Animator . of Float ( bottom Overlay Layout , Ġ" translation Y ", Ġtrans , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ(( trans Ġ/ Ġbottom Bar Height Ġ+ Ġ 1 ) Ġ* Ġ 1 5 0 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( duration Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . duration Ġ= Ġduration . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠRequest Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġshould Show Toolbar ( visibility : ĠToolbar Visibility Container , Ġtab Data : ĠMain Tab Data ?, Ġconfig : ĠConfiguration ? Ġ= Ġnull ): ĠBoolean ĊĠĠĠ Ġ} Ċ }