/* Ċ Ġ* Ġ( c ) ĠCopyright ĠIBM ĠCorp . Ġ 2 0 2 1 Ċ Ġ* Ġ( c ) ĠCopyright ĠInst ana ĠInc . Ġand Ġcontributors Ġ 2 0 2 1 Ċ Ġ*/ Ċ Ċ package Ġcom . inst ana . android . plugin . transform . asm Ċ Ċ import Ġcom . inst ana . android . plugin . transform . Instrumentation Config Ċ import Ġorg . gradle . api . logging . Logging Ċ import Ġorg . object web . asm . Class Visitor Ċ import Ġorg . object web . asm . Method Visitor Ċ import Ġorg . object web . asm . Op codes Ċ import Ġorg . object web . asm . commons . Ad vice Adapter Ċ Ċ class ĠOk Http 3 Builder Visitor ( ĊĠĠĠ Ġprivate Ġval Ġclass Visitor : ĠClass Visitor , ĊĠĠĠ Ġprivate Ġval Ġconfig : ĠInstrument ation Config Ċ ) Ġ: ĠClass Visitor ( ASM _ API _ VERSION , Ġclass Visitor ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠAS M _ API _ VERSION Ġ= ĠOp codes . ASM 7 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLogging . getLogger ( Ok Http 3 Builder Visitor :: class . java ) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit ( ĊĠĠĠĠĠĠĠ Ġversion : ĠInt , ĊĠĠĠĠĠĠĠ Ġaccess : ĠInt , ĊĠĠĠĠĠĠĠ ĠclassName : ĠString , ĊĠĠĠĠĠĠĠ Ġsignature : ĠString ?, ĊĠĠĠĠĠĠĠ Ġsuper Name : ĠString , ĊĠĠĠĠĠĠĠ Ġinterfaces : ĠArray < String >? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( config . log Vis its ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" Visit ing ĠClass Ġ$ className ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" Ġ Ġsignature : Ġ$ signature Ġsuper Name : Ġ$ super Name Ġinterfaces : Ġ${ interfaces ?. join ToString () }") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsuper . visit ( version , Ġaccess , ĠclassName , Ġsignature , Ġsuper Name , Ġinterfaces ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Method ( ĊĠĠĠĠĠĠĠ Ġaccess : ĠInt , ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġdescriptor : ĠString , ĊĠĠĠĠĠĠĠ Ġsignature : ĠString ?, ĊĠĠĠĠĠĠĠ Ġexceptions : ĠArray < String >? ĊĠĠĠ Ġ): ĠMethod Visitor Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( config . log Vis its ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" Visit Ġmethod : Ġ$ name Ġdesc : Ġ$ descriptor Ġsignature : Ġ$ signature Ġexceptions : Ġ${ exceptions ?. join ToString () }") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmv Ġ= Ġsuper . visit Method ( access , Ġname , Ġdescriptor , Ġsignature , Ġexceptions ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ== Ġ"< init >" Ġ&& Ġdescriptor Ġ== Ġ" () V " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInit Visitor ( ASM _ API _ VERSION , Ġmv , Ġaccess , Ġname , Ġdescriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġmv ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠInit Visitor ( ĊĠĠĠĠĠĠĠ Ġapi : ĠInt , ĊĠĠĠĠĠĠĠ Ġmv : ĠMethod Visitor , ĊĠĠĠĠĠĠĠ Ġaccess : ĠInt , ĊĠĠĠĠĠĠĠ ĠmethodName : ĠString , ĊĠĠĠĠĠĠĠ Ġmethod Desc : ĠString ĊĠĠĠ Ġ) Ġ: ĠAd vice Adapter ( api , Ġmv , Ġaccess , ĠmethodName , Ġmethod Desc ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Insn ( opcode : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( opcode Ġin ĠI RETURN .. RETURN ) Ġ|| Ġopcode Ġ== ĠA THROW ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Var Insn ( AL O AD , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Method Insn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIN VOKE STATIC , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" com / inst ana / android / instrumentation / okhttp 3 / Ok Http 3 Instrumentation ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" client Builder Interceptor ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"( L okhttp 3 / Ok HttpClient \$ Builder ;) V ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( config . log Instrumentation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" Instrument ed Ġopcode :$ opcode Ġfor ĠOk HttpClient . Builder Ġ< init >") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" Ġ ĠInstrument ed Ġa Ġcall Ġto Ġthe Ġokhttp 3 . Ok HttpClient . Builder () Ġinitializer ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . visit Insn ( opcode ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ