/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 1 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . android . tools . idea . layout inspector . pipeline . app inspection Ċ Ċ import Ġcom . android . annotations . concurrency . Slow Ċ import Ġcom . android . dd m lib . Android Debug Bridge Ċ import Ġcom . android . tools . idea . app inspection . inspector . api . process . Process Descriptor Ċ import Ġcom . android . tools . idea . layout inspector . pipeline . adb . execute Shell Command Ċ import Ġcom . android . tools . idea . layout inspector . pipeline . transport . Transport Inspector Client Ċ import Ġcom . android . tools . idea . project . Android Notification Ċ import Ġcom . google . common . html . Html Esc apers Ċ import Ġcom . intellij . notification . Notification Type Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . diagnostic . Logger Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . ui . Dialog Wrapper Ċ import Ġcom . intellij . ui . components . dialog Ċ import Ġcom . intellij . ui . layout . panel Ċ import Ġcom . intellij . util . ui . UI Util Ċ import Ġjava . awt . Component Ċ import Ġjava . awt . event . ActionEvent Ċ import Ġjavax . swing . Abstract Action Ċ import Ġjavax . swing . JLabel Ċ Ċ /** Ċ Ġ* ĠHelper Ġclass Ġthat Ġhandles Ġsetting Ġdebug Ġsettings Ġon Ġthe Ġdevice Ġvia ĠA DB . Ċ Ġ* Ċ Ġ* ĠThese Ġdebug Ġsettings , Ġwhen Ġset , Ġtell Ġthe Ġsystem Ġto Ġexpose Ġsome Ġdebug Ġdata Ġ( e . g . ĠComp os ables ) Ċ Ġ* Ġthat Ġit Ġnormally Ġwould Ġhide . Ċ Ġ*/ Ċ class ĠDebug View Attributes ( private Ġval Ġa db : ĠAndroid Debug Bridge , Ġprivate Ġval Ġproject : ĠProject , Ġprivate Ġval Ġprocess : ĠProcess Descriptor ) Ġ{ ĊĊĠ Ġprivate Ġclass ĠOk Button Action Ġ: ĠAbstract Action (" OK ") Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠ Ġput Value ( Dialog Wrapper . DEFAULT _ ACTION , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠactionPerformed ( event : ĠAction Event ) Ġ{ ĊĠĠĠĠĠ Ġval Ġwrapper Ġ= ĠDialog Wrapper . find Instance ( event . source Ġas ? ĠComponent ) ĊĠĠĠĠĠ Ġwrapper ?. close ( Dialog Wrapper . OK _ EXIT _ CODE ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġvar Ġdebug Attributes Set Ġ= Ġfalse ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠEnable Ġdebug Ġview Ġattributes Ġfor Ġthe Ġcurrent Ġprocess . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠIgnore Ġfailures Ġsince Ġwe Ġare Ġable Ġto Ġinspect Ġthe Ġprocess Ġwithout Ġdebug Ġview Ġattributes . ĊĠĠ Ġ*/ ĊĠ Ġ@ Slow ĊĠ Ġfun Ġset () Ġ{ ĊĠĠĠ Ġif Ġ( debug Attributes Set ) Ġreturn ĊĊĠĠĠ Ġvar ĠerrorMessage : ĠString ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġif Ġ( adb . execute Shell Command ( process . device , Ġ" settings Ġget Ġglobal Ġdebug _ view _ attributes ") Ġ! in ĠlistOf (" null ", Ġ" 0 ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠA Ġreturn Ġvalue Ġof Ġ" null " Ġor Ġ" 0 " Ġmeans : Ġ" debug _ view _ attributes " Ġis Ġnot Ġcurrently Ġturned Ġon Ġfor Ġall Ġprocesses Ġon Ġthe Ġdevice . ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġval Ġapp Ġ= Ġa db . execute Shell Command ( process . device , Ġ" settings Ġget Ġglobal Ġdebug _ view _ attributes _ application _ package ") ĊĠĠĠĠĠ Ġif Ġ( app Ġ== Ġprocess . name ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠA Ġreturn Ġvalue Ġof Ġprocess . name Ġmeans : Ġthe Ġdebug _ view _ attributes Ġare Ġalready Ġturned Ġon Ġfor Ġthis Ġprocess . ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠerrorMessage Ġ= ĊĠĠĠĠĠĠĠ Ġa db . execute Shell Command ( process . device , Ġ" settings Ġput Ġglobal Ġdebug _ view _ attributes _ application _ package Ġ${ process . name }") ĊĠĠĠĠĠ Ġif Ġ( errorMessage . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠA Ġreturn Ġvalue Ġof Ġ"" Ġmeans : Ġ" debug _ view _ attributes _ application _ package " Ġwere Ġsuccessfully Ġoverridden . ĊĠĠĠĠĠĠĠ Ġdebug Attributes Set Ġ= Ġtrue ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠ ĠLogger . getInstance ( Transport Inspector Client :: class . java ). warn ( ex ) ĊĠĠĠĠĠ ĠerrorMessage Ġ= Ġex . message Ġ?: Ġex . java Class . simple Name ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( errorMessage . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠ Ġval Ġencoder Ġ= ĠHtml Esc apers . html Esc aper () ĊĠĠĠĠĠ Ġval Ġtext Ġ= Ġencoder . escape (" Unable Ġto Ġset Ġthe Ġglobal Ġsetting :") Ġ+ Ġ"< br /> " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġencoder . escape ("\" debug _ view _ attributes _ application _ package \" ") Ġ+ Ġ"< br /> " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġencoder . escape (" to : Ġ\" ${ process . name }\" ") Ġ+ Ġ"< br />< br /> " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġencoder . escape (" Error : Ġ$ errorMessage ") ĊĠĠĠĠĠ ĠAndroid Notification . getInstance ( project ). show Bal loon (" Could Ġnot Ġenable Ġresolution Ġtraces ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext , ĠNotification Type . WARNING ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠDisable Ġdebug Ġview Ġattributes Ġfor Ġthe Ġcurrent Ġprocess Ġthat Ġwere Ġset Ġwhen Ġwe Ġconnected . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠReturn Ġtrue Ġif Ġthe Ġdebug Ġview Ġattributes Ġwere Ġsuccessfully Ġdisabled . ĊĠĠ Ġ*/ ĊĠ Ġ@ Slow ĊĠ Ġfun Ġclear () Ġ{ ĊĠĠĠ Ġif Ġ(! debug Attributes Set ) Ġreturn ĊĊĠĠĠ Ġdebug Attributes Set Ġ= Ġfalse ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġa db . execute Shell Command ( process . device , Ġ" settings Ġdelete Ġglobal Ġdebug _ view _ attributes _ application _ package ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠ Ġreport Unable To Reset Global Settings () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġreport Unable To Reset Global Settings () Ġ{ ĊĠĠĠ ĠApplication Manager . getApplication (). invoke Later Ġ{ ĊĠĠĠĠĠ Ġval Ġmessage Ġ= Ġ""" Could Ġnot Ġreset Ġthe Ġstate Ġon Ġyour Ġdevice . Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTo Ġfix Ġthis , Ġmanually Ġrun Ġthis Ġcommand : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ$ Ġa db Ġshell Ġsettings Ġdelete Ġglobal Ġdebug _ view _ attributes _ application _ package ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠ Ġval Ġdialog Ġ= Ġdialog ( ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Unable Ġto Ġconnect Ġto Ġyour Ġdevice ", ĊĠĠĠĠĠĠĠ Ġpanel Ġ= Ġpanel Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġrow ( JLabel ( UI Util . getError Icon ())) Ġ{} ĊĠĠĠĠĠĠĠĠĠ Ġnote Row ( message ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġcreate Actions Ġ= Ġ{ ĠlistOf ( Ok Button Action ()) Ġ}, ĊĠĠĠĠĠĠĠ Ġproject Ġ= Ġproject ) ĊĠĠĠĠĠ Ġdialog . show () ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }