| | | | |
| Offset 1, 43 lines modified | Offset 1, 95 lines modified |
| | |
| 1 | package·com.android.car.ui.core; | 1 | package·com.android.car.ui.core; |
| | |
| 2 | import·com.android.car.ui.utils.CarUiUtils; | 2 | import·com.android.car.ui.utils.CarUiUtils; |
| 3 | import·android.os.Bundle; | 3 | import·android.os.Bundle; |
| 4 | import·android.app.Activity; | |
| 5 | import·android.widget.Toast; | |
| 6 | import·android.view.ViewGroup; | 4 | import·android.view.ViewGroup; |
| | 5 | import·android.widget.Toast; |
| | 6 | import·android.app.Activity; |
| 7 | import·androidx.recyclerview.widget.RecyclerView; | 7 | import·androidx.recyclerview.widget.RecyclerView; |
| | 8 | import·android.util.Log; |
| | 9 | import·com.android.car.ui.R$bool; |
| 8 | import·android.content.IntentFilter; | 10 | import·android.content.IntentFilter; |
| 9 | import·android.content.Context; | 11 | import·android.content.Context; |
| 10 | import·android.view.View; | 12 | import·android.view.View; |
| 11 | import·android.content.BroadcastReceiver; | 13 | import·android.content.BroadcastReceiver; |
| | 14 | import·android.os.Handler; |
| 12 | import·android.app.Application$ActivityLifecycleCallbacks; | 15 | import·android.app.Application$ActivityLifecycleCallbacks; |
| | |
| 13 | class·CheckCarUiComponents·implements·Application$ActivityLifecycleCallbacks | 16 | class·CheckCarUiComponents·implements·Application$ActivityLifecycleCallbacks |
| 14 | { | 17 | { |
| 15 | ····private·static·final·String·INTENT_FILTER·=·"com.android.car.ui.intent.CHECK_CAR_UI_COMPONENTS"; | 18 | ····private·static·final·String·INTENT_FILTER·=·"com.android.car.ui.intent.CHECK_CAR_UI_COMPONENTS"; |
| | 19 | ····private·static·final·String·NO_CAR_UI_PREFERENCE·=·"CarUiPreference·is·not·used:·"; |
| | 20 | ····private·static·final·String·NO_CAR_UI_RV·=·"CarUiRecyclerView·not·used:"; |
| | 21 | ····private·static·final·String·NO_CAR_UI_TOOLBAR·=·"CarUiToolbar·is·not·used:·"; |
| | 22 | ····private·static·final·String·NO_CAR_UI_TOOLBAR_BL·=·"CarUiBaseLayoutToolbar·is·not·used:·"; |
| | 23 | ····private·static·final·String·NO_LIST_ITEM·=·"CarUiListItem·are·not·used·within·CarUiRecyclerView:·"; |
| 16 | ····private·static·final·String·TAG; | 24 | ····private·static·final·String·TAG; |
| | 25 | ····private·Handler·mHandler; |
| 17 | ····private·boolean·mIsScreenVisible; | 26 | ····private·boolean·mIsScreenVisible; |
| 18 | ····private·final·BroadcastReceiver·mReceiver; | 27 | ····private·final·BroadcastReceiver·mReceiver; |
| 19 | ····private·View·mRootView; | 28 | ····private·View·mRootView; |
| 20 | ···· | 29 | ···· |
| 21 | ····static·{ | 30 | ····static·{ |
| 22 | ········TAG·=·CheckCarUiComponents.class.getSimpleName(); | 31 | ········TAG·=·CheckCarUiComponents.class.getSimpleName(); |
| 23 | ····} | 32 | ····} |
| 24 | ···· | 33 | ···· |
| 25 | ····CheckCarUiComponents(final·Context·context)·{ | 34 | ····CheckCarUiComponents(final·Context·context)·{ |
| | 35 | ········this.mHandler·=·new·Handler(); |
| 26 | ········this.mReceiver·=·(BroadcastReceiver)new·CheckCarUiComponents$1(this); | 36 | ········this.mReceiver·=·(BroadcastReceiver)new·CheckCarUiComponents$1(this); |
| 27 | ········final·IntentFilter·intentFilter·=·new·IntentFilter(); | 37 | ········final·IntentFilter·intentFilter·=·new·IntentFilter(); |
| 28 | ········intentFilter.addAction("com.android.car.ui.intent.CHECK_CAR_UI_COMPONENTS"); | 38 | ········intentFilter.addAction("com.android.car.ui.intent.CHECK_CAR_UI_COMPONENTS"); |
| 29 | ········context.registerReceiver(this.mReceiver,·intentFilter); | 39 | ········context.registerReceiver(this.mReceiver,·intentFilter); |
| 30 | ····} | 40 | ····} |
| 31 | ···· | 41 | ···· |
| | 42 | ····private·boolean·checkComponentsForAllActivities(final·Context·context)·{ |
| | 43 | ········return·context.getResources().getBoolean(R$bool.car_ui_escrow_check_components_automatically); |
| | 44 | ····} |
| | 45 | ···· |
| 32 | ····private·void·checkForCarUiComponents(final·View·view,·final·CheckCarUiComponents$CarUiComponents·checkCarUiComponents$CarUiComponents)·{ | 46 | ····private·void·checkForCarUiComponents(final·View·view,·final·CheckCarUiComponents$CarUiComponents·checkCarUiComponents$CarUiComponents)·{ |
| 33 | ········viewHasChildMatching(view,·(CheckCarUiComponents$Predicate)new·-$$Lambda$CheckCarUiComponents$u3xGutb3VgNGu17dA7lErOZHnt8(checkCarUiComponents$CarUiComponents)); | 47 | ········viewHasChildMatching(view,·(CheckCarUiComponents$Predicate)new·-$$Lambda$CheckCarUiComponents$sMvfGKJ7xE4isapA83m1KGgs5T4(checkCarUiComponents$CarUiComponents)); |
| | 48 | ····} |
| | 49 | ···· |
| | 50 | ····private·void·checkForComponents(final·Context·context,·final·boolean·b)·{ |
| | 51 | ········if·(!this.mIsScreenVisible)·{ |
| | 52 | ············return; |
| | 53 | ········} |
| | 54 | ········final·CheckCarUiComponents$CarUiComponents·checkCarUiComponents$CarUiComponents·=·new·CheckCarUiComponents$CarUiComponents((CheckCarUiComponents$1)null); |
| | 55 | ········this.checkForCarUiComponents(this.mRootView,·checkCarUiComponents$CarUiComponents); |
| | 56 | ········if·(checkCarUiComponents$CarUiComponents.mIsUsingCarUiRecyclerView·&&·!checkCarUiComponents$CarUiComponents.mIsCarUiRecyclerViewUsingListItem)·{ |
| | 57 | ············final·String·tag·=·CheckCarUiComponents.TAG; |
| | 58 | ············final·String·s·=·"CarUiListItem·are·not·used·within·CarUiRecyclerView:·"; |
| | 59 | ············Log.d(tag,·s); |
| | 60 | ············mayShowToast(context,·s,·b); |
| | 61 | ········} |
| | 62 | ········if·(checkCarUiComponents$CarUiComponents.mIsUsingAndroidXRecyclerView)·{ |
| | 63 | ············final·String·tag2·=·CheckCarUiComponents.TAG; |
| | 64 | ············final·String·s2·=·"CarUiRecyclerView·not·used:"; |
| | 65 | ············Log.d(tag2,·s2); |
| | 66 | ············mayShowToast(context,·s2,·b); |
| | 67 | ········} |
| | 68 | ········if·(!checkCarUiComponents$CarUiComponents.mIsUsingCarUiToolbar)·{ |
| | 69 | ············final·String·tag3·=·CheckCarUiComponents.TAG; |
| | 70 | ············final·String·s3·=·"CarUiToolbar·is·not·used:·"; |
| | 71 | ············Log.d(tag3,·s3); |
| | 72 | ············mayShowToast(context,·s3,·b); |
| | 73 | ········} |
| | 74 | ········if·(!checkCarUiComponents$CarUiComponents.mIsUsingCarUiBaseLayoutToolbar·&&·checkCarUiComponents$CarUiComponents.mIsUsingCarUiToolbar)·{ |
| | 75 | ············final·String·tag4·=·CheckCarUiComponents.TAG; |
| | 76 | ············final·String·s4·=·"CarUiBaseLayoutToolbar·is·not·used:·"; |
| | 77 | ············Log.d(tag4,·s4); |
| | 78 | ············mayShowToast(context,·s4,·b); |
| | 79 | ········} |
| | 80 | ········if·(checkCarUiComponents$CarUiComponents.mIsUsingCarUiRecyclerViewForPreference·&&·!checkCarUiComponents$CarUiComponents.mIsUsingCarUiPreference)·{ |
| | 81 | ············final·String·tag5·=·CheckCarUiComponents.TAG; |
| | 82 | ············final·String·s5·=·"CarUiPreference·is·not·used:·"; |
| | 83 | ············Log.d(tag5,·s5); |
| | 84 | ············mayShowToast(context,·s5,·b); |
| | 85 | ········} |
| 34 | ····} | 86 | ····} |
| 35 | ···· | 87 | ···· |
| 36 | ····private·static·boolean·isAndroidXRecyclerView(final·View·view)·{ | 88 | ····private·static·boolean·isAndroidXRecyclerView(final·View·view)·{ |
| 37 | ········return·view.getClass()·==·RecyclerView.class; | 89 | ········return·view.getClass()·==·RecyclerView.class; |
| 38 | ····} | 90 | ····} |
| 39 | ···· | 91 | ···· |
| 40 | ····private·static·boolean·isCarUiBaseLayoutToolbar(final·View·view)·{ | 92 | ····private·static·boolean·isCarUiBaseLayoutToolbar(final·View·view)·{ |
| Offset 56, 14 lines modified | Offset 108, 21 lines modified |
| 56 | ········return·view.getTag()·!=·null·&&·view.getTag().toString().equals("carUiRecyclerView"); | 108 | ········return·view.getTag()·!=·null·&&·view.getTag().toString().equals("carUiRecyclerView"); |
| 57 | ····} | 109 | ····} |
| 58 | ···· | 110 | ···· |
| 59 | ····private·static·boolean·isCarUiToolbar(final·View·view)·{ | 111 | ····private·static·boolean·isCarUiToolbar(final·View·view)·{ |
| 60 | ········return·view.getTag()·!=·null·&&·(view.getTag().toString().equals("carUiToolbar")·||·view.getTag().toString().equals("CarUiBaseLayoutToolbar")); | 112 | ········return·view.getTag()·!=·null·&&·(view.getTag().toString().equals("carUiToolbar")·||·view.getTag().toString().equals("CarUiBaseLayoutToolbar")); |
| 61 | ····} | 113 | ····} |
| 62 | ···· | 114 | ···· |
| | 115 | ····private·static·void·mayShowToast(final·Context·context,·final·String·s,·final·boolean·b)·{ |
| | 116 | ········if·(!b)·{ |
| | 117 | ············return; |
| | 118 | ········} |
| | 119 | ········Toast.makeText(context,·(CharSequence)s,·1).show(); |
| | 120 | ····} |
| | 121 | ···· |
| 63 | ····private·static·void·printViewHierarchy(String·string,·final·View·view)·{ | 122 | ····private·static·void·printViewHierarchy(String·string,·final·View·view)·{ |
| 64 | ········final·StringBuilder·sb·=·new·StringBuilder(); | 123 | ········final·StringBuilder·sb·=·new·StringBuilder(); |
| 65 | ········sb.append("\n·"); | 124 | ········sb.append("\n·"); |
| 66 | ········sb.append(string); | 125 | ········sb.append(string); |
| 67 | ········sb.append('{'); | 126 | ········sb.append('{'); |
| 68 | ········final·char·c·=·'}'; | 127 | ········final·char·c·=·'}'; |
| 69 | ········if·(view·==·null)·{ | 128 | ········if·(view·==·null)·{ |
| Offset 97, 18 lines modified | Offset 156, 14 lines modified |
| 97 | ················break; | 156 | ················break; |
| 98 | ············} | 157 | ············} |
| 99 | ············printViewHierarchy(string,·viewGroup.getChildAt(n)); | 158 | ············printViewHierarchy(string,·viewGroup.getChildAt(n)); |
| 100 | ············++n; | 159 | ············++n; |
| 101 | ········} | 160 | ········} |
| 102 | ····} | 161 | ····} |
| 103 | ···· | 162 | ···· |
| 104 | ····private·static·void·showToast(final·Context·context,·final·String·s)·{ | |
| 105 | ········Toast.makeText(context,·(CharSequence)s,·1).show(); | |
| 106 | ····} | |
| 107 | ···· | |
| 108 | ····private·static·boolean·viewHasChildMatching(final·View·view,·final·CheckCarUiComponents$Predicate·checkCarUiComponents$Predicate)·{ | 163 | ····private·static·boolean·viewHasChildMatching(final·View·view,·final·CheckCarUiComponents$Predicate·checkCarUiComponents$Predicate)·{ |
| 109 | ········if·(view·==·null)·{ | 164 | ········if·(view·==·null)·{ |
| 110 | ············return·false; | 165 | ············return·false; |
| 111 | ········} | 166 | ········} |
| 112 | ········final·boolean·test·=·checkCarUiComponents$Predicate.test((Object)view); | 167 | ········final·boolean·test·=·checkCarUiComponents$Predicate.test((Object)view); |
| 113 | ········final·boolean·b·=·true; | 168 | ········final·boolean·b·=·true; |
| 114 | ········if·(test)·{ | 169 | ········if·(test)·{ |
| Offset 140, 21 lines modified | Offset 195, 28 lines modified |
| 140 | ········} | 195 | ········} |
| 141 | ····} | 196 | ····} |
| 142 | ···· | 197 | ···· |
| 143 | ····public·void·onActivityPaused(final·Activity·activity)·{ | 198 | ····public·void·onActivityPaused(final·Activity·activity)·{ |
| 144 | ········this.mIsScreenVisible·=·false; | 199 | ········this.mIsScreenVisible·=·false; |
| 145 | ····} | 200 | ····} |
| 146 | ···· | 201 | ···· |
| 147 | ····public·void·onActivityResumed(final·Activity·activity)·{ | 202 | ····public·void·onActivityPostResumed(final·Activity·activity)·{ |
| 148 | ········this.mRootView·=·activity.getWindow().getDecorView().getRootView(); | 203 | ········this.mRootView·=·activity.getWindow().getDecorView().getRootView(); |
| 149 | ········this.mIsScreenVisible·=·true; | 204 | ········this.mIsScreenVisible·=·true; |
| | 205 | ········if·(this.checkComponentsForAllActivities((Context)activity))·{ |
| | 206 | ············this.mHandler.postDelayed((Runnable)new·-$$Lambda$CheckCarUiComponents$y7RxpUiLsA8rZaNatst8VPAWq5U(this,·activity),·2000L); |
| | 207 | ········} |
| | 208 | ····} |
| | 209 | ···· |
| | 210 | ····public·void·onActivityResumed(final·Activity·activity)·{ |
| 150 | ····} | 211 | ····} |
| 151 | ···· | 212 | ···· |
| 152 | ····public·void·onActivitySaveInstanceState(final·Activity·activity,·final·Bundle·bundle)·{ | 213 | ····public·void·onActivitySaveInstanceState(final·Activity·activity,·final·Bundle·bundle)·{ |
| 153 | ····} | 214 | ····} |
| 154 | ···· | 215 | ···· |
| 155 | ····public·void·onActivityStarted(final·Activity·activity)·{ | 216 | ····public·void·onActivityStarted(final·Activity·activity)·{ |
| 156 | ····} | 217 | ····} |
| 157 | ···· | 218 | ···· |
| 158 | ····public·void·onActivityStopped(final·Activity·activity)·{ | 219 | ····public·void·onActivityStopped(final·Activity·activity)·{ |
| | 220 | ········this.mHandler.removeCallbacksAndMessages((Object)null); |
| 159 | ····} | 221 | ····} |
| 160 | } | 222 | } |