package Ġcloud . pace . sdk . app kit . app Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . browser . custom tabs . Custom Tabs Intent Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġcloud . pace . sdk . R Ċ import Ġcloud . pace . sdk . api . utils . Interceptor Utils Ċ import Ġcloud . pace . sdk . app kit . app . App Fragment ViewModel Impl . Companion . CH ROME _ PACKAGE _ NAME Ċ import Ġcloud . pace . sdk . app kit . app . custom tab . Custom Tab Management Activity Ċ import Ġcloud . pace . sdk . app kit . app . custom tab . Custom Tab Management Activity . Companion . CUSTOM _ TAB S _ INT ENT Ċ import Ġcloud . pace . sdk . utils . Canceled Ċ import Ġcloud . pace . sdk . utils . Cloud SDK K oin Component Ċ import Ġcloud . pace . sdk . utils . Ok Ċ import Ġcloud . pace . sdk . utils . getResult For Ċ import Ġkotlinx . android . synt hetic . main . fragment _ app .* Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġorg . k oin . android . view model . ext . android . viewModel Ċ Ċ class ĠApp Fragment Ġ: ĠFragment (), ĠCloud SDK K oin Component Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠApp Fragment ViewModel Ġby ĠviewModel () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ app , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġactivity ?. intent ?. extras ?. getString ( App Activity . APP _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġactivity ?. intent ?. data ?. getQuery Parameter ( Custom Tab Management Activity . TO ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠRuntimeException (" Missing Ġapp ĠURL ") ĊĊĠĠĠĠĠĠĠ Ġapp WebView . init ( this , ĠInter ceptor Utils . getUrl With QueryParams ( url )) ĊĊĠĠĠĠĠĠĠ ĠviewModel . close Event . observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . getContent IfNot Handled ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. finish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . open Url In New Tab . observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . getContent IfNot Handled ()?. let Ġ{ Ġopen URL In New Tab Request Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ Ġcontext Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcustom Tabs Intent Ġ= ĠCustom Tabs Intent . Builder (). build () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( viewModel . is Chrome Custom Tabs Supported ( context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Tabs Intent . intent . set Package ( CH ROME _ PACKAGE _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Tabs Intent . intent . data Ġ= ĠUri . parse ( open URL In New Tab Request . url ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Scope . launch ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠCustom Tab Management Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( CUSTOM _ TAB S _ INT ENT , Ġcustom Tabs Intent . intent ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġresult Ġ= Ġget Result For ( intent )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠOk Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġredirect Uri Ġ= Ġresult . data ?. data ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( redirect Uri Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp WebView . load Url ( redirect Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp WebView . load Url ( open URL In New Tab Request . cancel Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠC anceled Ġ-> Ġapp WebView . load Url ( open URL In New Tab Request . cancel Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ