discord-jadx/app/src/main/java/androidx/core/view/ViewCompat.java

2013 lines
76 KiB
Java

package androidx.core.view;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.ClipData;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.Log;
import android.util.SparseArray;
import android.view.Display;
import android.view.KeyEvent;
import android.view.PointerIcon;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.ViewTreeObserver;
import android.view.Window;
import android.view.WindowInsets;
import android.view.WindowInsetsController;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.AccessibilityNodeProvider;
import androidx.annotation.FloatRange;
import androidx.annotation.IdRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.Px;
import androidx.annotation.RequiresApi;
import androidx.annotation.RestrictTo;
import androidx.annotation.UiThread;
import androidx.collection.SimpleArrayMap;
import androidx.core.R;
import androidx.core.util.Preconditions;
import androidx.core.view.AccessibilityDelegateCompat;
import androidx.core.view.WindowInsetsAnimationCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import androidx.core.view.accessibility.AccessibilityNodeProviderCompat;
import androidx.core.view.accessibility.AccessibilityViewCommand;
import b.d.b.a.a;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.ref.WeakReference;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.WeakHashMap;
import java.util.concurrent.atomic.AtomicInteger;
@SuppressLint({"PrivateConstructorForUtilityClass"})
/* loaded from: classes.dex */
public class ViewCompat {
public static final int ACCESSIBILITY_LIVE_REGION_ASSERTIVE = 2;
public static final int ACCESSIBILITY_LIVE_REGION_NONE = 0;
public static final int ACCESSIBILITY_LIVE_REGION_POLITE = 1;
public static final int IMPORTANT_FOR_ACCESSIBILITY_AUTO = 0;
public static final int IMPORTANT_FOR_ACCESSIBILITY_NO = 2;
public static final int IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS = 4;
public static final int IMPORTANT_FOR_ACCESSIBILITY_YES = 1;
@Deprecated
public static final int LAYER_TYPE_HARDWARE = 2;
@Deprecated
public static final int LAYER_TYPE_NONE = 0;
@Deprecated
public static final int LAYER_TYPE_SOFTWARE = 1;
public static final int LAYOUT_DIRECTION_INHERIT = 2;
public static final int LAYOUT_DIRECTION_LOCALE = 3;
public static final int LAYOUT_DIRECTION_LTR = 0;
public static final int LAYOUT_DIRECTION_RTL = 1;
@Deprecated
public static final int MEASURED_HEIGHT_STATE_SHIFT = 16;
@Deprecated
public static final int MEASURED_SIZE_MASK = 16777215;
@Deprecated
public static final int MEASURED_STATE_MASK = -16777216;
@Deprecated
public static final int MEASURED_STATE_TOO_SMALL = 16777216;
@Deprecated
public static final int OVER_SCROLL_ALWAYS = 0;
@Deprecated
public static final int OVER_SCROLL_IF_CONTENT_SCROLLS = 1;
@Deprecated
public static final int OVER_SCROLL_NEVER = 2;
public static final int SCROLL_AXIS_HORIZONTAL = 1;
public static final int SCROLL_AXIS_NONE = 0;
public static final int SCROLL_AXIS_VERTICAL = 2;
public static final int SCROLL_INDICATOR_BOTTOM = 2;
public static final int SCROLL_INDICATOR_END = 32;
public static final int SCROLL_INDICATOR_LEFT = 4;
public static final int SCROLL_INDICATOR_RIGHT = 8;
public static final int SCROLL_INDICATOR_START = 16;
public static final int SCROLL_INDICATOR_TOP = 1;
private static final String TAG = "ViewCompat";
public static final int TYPE_NON_TOUCH = 1;
public static final int TYPE_TOUCH = 0;
private static Field sAccessibilityDelegateField;
private static Method sChildrenDrawingOrderMethod;
private static Method sDispatchFinishTemporaryDetach;
private static Method sDispatchStartTemporaryDetach;
private static Field sMinHeightField;
private static boolean sMinHeightFieldFetched;
private static Field sMinWidthField;
private static boolean sMinWidthFieldFetched;
private static boolean sTempDetachBound;
private static ThreadLocal<Rect> sThreadLocalRect;
private static WeakHashMap<View, String> sTransitionNameMap;
private static final AtomicInteger sNextGeneratedId = new AtomicInteger(1);
private static WeakHashMap<View, ViewPropertyAnimatorCompat> sViewPropertyAnimatorMap = null;
private static boolean sAccessibilityDelegateCheckFailed = false;
private static final int[] ACCESSIBILITY_ACTIONS_RESOURCE_IDS = {R.id.accessibility_custom_action_0, R.id.accessibility_custom_action_1, R.id.accessibility_custom_action_2, R.id.accessibility_custom_action_3, R.id.accessibility_custom_action_4, R.id.accessibility_custom_action_5, R.id.accessibility_custom_action_6, R.id.accessibility_custom_action_7, R.id.accessibility_custom_action_8, R.id.accessibility_custom_action_9, R.id.accessibility_custom_action_10, R.id.accessibility_custom_action_11, R.id.accessibility_custom_action_12, R.id.accessibility_custom_action_13, R.id.accessibility_custom_action_14, R.id.accessibility_custom_action_15, R.id.accessibility_custom_action_16, R.id.accessibility_custom_action_17, R.id.accessibility_custom_action_18, R.id.accessibility_custom_action_19, R.id.accessibility_custom_action_20, R.id.accessibility_custom_action_21, R.id.accessibility_custom_action_22, R.id.accessibility_custom_action_23, R.id.accessibility_custom_action_24, R.id.accessibility_custom_action_25, R.id.accessibility_custom_action_26, R.id.accessibility_custom_action_27, R.id.accessibility_custom_action_28, R.id.accessibility_custom_action_29, R.id.accessibility_custom_action_30, R.id.accessibility_custom_action_31};
private static final OnReceiveContentViewBehavior NO_OP_ON_RECEIVE_CONTENT_VIEW_BEHAVIOR = new AnonymousClass1();
private static AccessibilityPaneVisibilityManager sAccessibilityPaneVisibilityManager = new AccessibilityPaneVisibilityManager();
/* renamed from: androidx.core.view.ViewCompat$1 reason: invalid class name */
/* loaded from: classes.dex */
public class AnonymousClass1 implements OnReceiveContentViewBehavior {
@Override // androidx.core.view.OnReceiveContentViewBehavior
public ContentInfoCompat onReceiveContent(@NonNull ContentInfoCompat contentInfoCompat) {
return contentInfoCompat;
}
}
/* renamed from: androidx.core.view.ViewCompat$2 reason: invalid class name */
/* loaded from: classes.dex */
public class AnonymousClass2 extends AccessibilityViewProperty<Boolean> {
public AnonymousClass2(int i, Class cls, int i2) {
super(i, cls, i2);
}
/* JADX WARN: Can't rename method to resolve collision */
@Override // androidx.core.view.ViewCompat.AccessibilityViewProperty
@RequiresApi(28)
public Boolean frameworkGet(View view) {
return Boolean.valueOf(view.isScreenReaderFocusable());
}
@RequiresApi(28)
public void frameworkSet(View view, Boolean bool) {
view.setScreenReaderFocusable(bool.booleanValue());
}
public boolean shouldUpdate(Boolean bool, Boolean bool2) {
return !booleanNullToFalseEquals(bool, bool2);
}
}
/* renamed from: androidx.core.view.ViewCompat$3 reason: invalid class name */
/* loaded from: classes.dex */
public class AnonymousClass3 extends AccessibilityViewProperty<CharSequence> {
public AnonymousClass3(int i, Class cls, int i2, int i3) {
super(i, cls, i2, i3);
}
/* JADX WARN: Can't rename method to resolve collision */
@Override // androidx.core.view.ViewCompat.AccessibilityViewProperty
@RequiresApi(28)
public CharSequence frameworkGet(View view) {
return view.getAccessibilityPaneTitle();
}
@RequiresApi(28)
public void frameworkSet(View view, CharSequence charSequence) {
view.setAccessibilityPaneTitle(charSequence);
}
public boolean shouldUpdate(CharSequence charSequence, CharSequence charSequence2) {
return !TextUtils.equals(charSequence, charSequence2);
}
}
/* renamed from: androidx.core.view.ViewCompat$4 reason: invalid class name */
/* loaded from: classes.dex */
public class AnonymousClass4 extends AccessibilityViewProperty<CharSequence> {
public AnonymousClass4(int i, Class cls, int i2, int i3) {
super(i, cls, i2, i3);
}
/* JADX WARN: Can't rename method to resolve collision */
@Override // androidx.core.view.ViewCompat.AccessibilityViewProperty
@RequiresApi(30)
public CharSequence frameworkGet(View view) {
return view.getStateDescription();
}
@RequiresApi(30)
public void frameworkSet(View view, CharSequence charSequence) {
view.setStateDescription(charSequence);
}
public boolean shouldUpdate(CharSequence charSequence, CharSequence charSequence2) {
return !TextUtils.equals(charSequence, charSequence2);
}
}
/* renamed from: androidx.core.view.ViewCompat$5 reason: invalid class name */
/* loaded from: classes.dex */
public class AnonymousClass5 extends AccessibilityViewProperty<Boolean> {
public AnonymousClass5(int i, Class cls, int i2) {
super(i, cls, i2);
}
/* JADX WARN: Can't rename method to resolve collision */
@Override // androidx.core.view.ViewCompat.AccessibilityViewProperty
@RequiresApi(28)
public Boolean frameworkGet(View view) {
return Boolean.valueOf(view.isAccessibilityHeading());
}
@RequiresApi(28)
public void frameworkSet(View view, Boolean bool) {
view.setAccessibilityHeading(bool.booleanValue());
}
public boolean shouldUpdate(Boolean bool, Boolean bool2) {
return !booleanNullToFalseEquals(bool, bool2);
}
}
/* loaded from: classes.dex */
public static class AccessibilityPaneVisibilityManager implements ViewTreeObserver.OnGlobalLayoutListener, View.OnAttachStateChangeListener {
private WeakHashMap<View, Boolean> mPanesToVisible = new WeakHashMap<>();
@RequiresApi(19)
private void checkPaneVisibility(View view, boolean z2) {
boolean z3 = view.getVisibility() == 0;
if (z2 != z3) {
ViewCompat.notifyViewAccessibilityStateChangedIfNeeded(view, z3 ? 16 : 32);
this.mPanesToVisible.put(view, Boolean.valueOf(z3));
}
}
@RequiresApi(19)
private void registerForLayoutCallback(View view) {
view.getViewTreeObserver().addOnGlobalLayoutListener(this);
}
@RequiresApi(19)
private void unregisterForLayoutCallback(View view) {
view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
@RequiresApi(19)
public void addAccessibilityPane(View view) {
this.mPanesToVisible.put(view, Boolean.valueOf(view.getVisibility() == 0));
view.addOnAttachStateChangeListener(this);
if (view.isAttachedToWindow()) {
registerForLayoutCallback(view);
}
}
@Override // android.view.ViewTreeObserver.OnGlobalLayoutListener
@RequiresApi(19)
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT < 28) {
for (Map.Entry<View, Boolean> entry : this.mPanesToVisible.entrySet()) {
checkPaneVisibility(entry.getKey(), entry.getValue().booleanValue());
}
}
}
@Override // android.view.View.OnAttachStateChangeListener
@RequiresApi(19)
public void onViewAttachedToWindow(View view) {
registerForLayoutCallback(view);
}
@Override // android.view.View.OnAttachStateChangeListener
public void onViewDetachedFromWindow(View view) {
}
@RequiresApi(19)
public void removeAccessibilityPane(View view) {
this.mPanesToVisible.remove(view);
view.removeOnAttachStateChangeListener(this);
unregisterForLayoutCallback(view);
}
}
/* loaded from: classes.dex */
public static abstract class AccessibilityViewProperty<T> {
private final int mContentChangeType;
private final int mFrameworkMinimumSdk;
private final int mTagKey;
private final Class<T> mType;
public AccessibilityViewProperty(int i, Class<T> cls, int i2) {
this(i, cls, 0, i2);
}
public AccessibilityViewProperty(int i, Class<T> cls, int i2, int i3) {
this.mTagKey = i;
this.mType = cls;
this.mContentChangeType = i2;
this.mFrameworkMinimumSdk = i3;
}
private boolean extrasAvailable() {
return true;
}
private boolean frameworkAvailable() {
return Build.VERSION.SDK_INT >= this.mFrameworkMinimumSdk;
}
public boolean booleanNullToFalseEquals(Boolean bool, Boolean bool2) {
return (bool == null ? false : bool.booleanValue()) == (bool2 == null ? false : bool2.booleanValue());
}
public abstract T frameworkGet(View view);
public abstract void frameworkSet(View view, T t);
public T get(View view) {
if (frameworkAvailable()) {
return frameworkGet(view);
}
if (!extrasAvailable()) {
return null;
}
T t = (T) view.getTag(this.mTagKey);
if (this.mType.isInstance(t)) {
return t;
}
return null;
}
public void set(View view, T t) {
if (frameworkAvailable()) {
frameworkSet(view, t);
} else if (extrasAvailable() && shouldUpdate(get(view), t)) {
ViewCompat.getOrCreateAccessibilityDelegateCompat(view);
view.setTag(this.mTagKey, t);
ViewCompat.notifyViewAccessibilityStateChangedIfNeeded(view, this.mContentChangeType);
}
}
public boolean shouldUpdate(T t, T t2) {
return !t2.equals(t);
}
}
@RequiresApi(21)
/* loaded from: classes.dex */
public static class Api21Impl {
/* renamed from: androidx.core.view.ViewCompat$Api21Impl$1 reason: invalid class name */
/* loaded from: classes.dex */
public class AnonymousClass1 implements View.OnApplyWindowInsetsListener {
public WindowInsetsCompat mLastInsets = null;
public final /* synthetic */ OnApplyWindowInsetsListener val$listener;
public final /* synthetic */ View val$v;
public AnonymousClass1(View view, OnApplyWindowInsetsListener onApplyWindowInsetsListener) {
this.val$v = view;
this.val$listener = onApplyWindowInsetsListener;
}
@Override // android.view.View.OnApplyWindowInsetsListener
public WindowInsets onApplyWindowInsets(View view, WindowInsets windowInsets) {
WindowInsetsCompat windowInsetsCompat = WindowInsetsCompat.toWindowInsetsCompat(windowInsets, view);
int i = Build.VERSION.SDK_INT;
if (i < 30) {
Api21Impl.callCompatInsetAnimationCallback(windowInsets, this.val$v);
if (windowInsetsCompat.equals(this.mLastInsets)) {
return this.val$listener.onApplyWindowInsets(view, windowInsetsCompat).toWindowInsets();
}
}
this.mLastInsets = windowInsetsCompat;
WindowInsetsCompat onApplyWindowInsets = this.val$listener.onApplyWindowInsets(view, windowInsetsCompat);
if (i >= 30) {
return onApplyWindowInsets.toWindowInsets();
}
ViewCompat.requestApplyInsets(view);
return onApplyWindowInsets.toWindowInsets();
}
}
private Api21Impl() {
}
public static void callCompatInsetAnimationCallback(@NonNull WindowInsets windowInsets, @NonNull View view) {
View.OnApplyWindowInsetsListener onApplyWindowInsetsListener = (View.OnApplyWindowInsetsListener) view.getTag(R.id.tag_window_insets_animation_callback);
if (onApplyWindowInsetsListener != null) {
onApplyWindowInsetsListener.onApplyWindowInsets(view, windowInsets);
}
}
public static WindowInsetsCompat computeSystemWindowInsets(@NonNull View view, @NonNull WindowInsetsCompat windowInsetsCompat, @NonNull Rect rect) {
WindowInsets windowInsets = windowInsetsCompat.toWindowInsets();
if (windowInsets != null) {
return WindowInsetsCompat.toWindowInsetsCompat(view.computeSystemWindowInsets(windowInsets, rect), view);
}
rect.setEmpty();
return windowInsetsCompat;
}
@Nullable
public static WindowInsetsCompat getRootWindowInsets(@NonNull View view) {
return WindowInsetsCompat.Api21ReflectionHolder.getRootWindowInsets(view);
}
public static void setOnApplyWindowInsetsListener(@NonNull View view, @Nullable OnApplyWindowInsetsListener onApplyWindowInsetsListener) {
if (Build.VERSION.SDK_INT < 30) {
view.setTag(R.id.tag_on_apply_window_listener, onApplyWindowInsetsListener);
}
if (onApplyWindowInsetsListener == null) {
view.setOnApplyWindowInsetsListener((View.OnApplyWindowInsetsListener) view.getTag(R.id.tag_window_insets_animation_callback));
} else {
view.setOnApplyWindowInsetsListener(new AnonymousClass1(view, onApplyWindowInsetsListener));
}
}
}
@RequiresApi(23)
/* loaded from: classes.dex */
public static class Api23Impl {
private Api23Impl() {
}
@Nullable
public static WindowInsetsCompat getRootWindowInsets(@NonNull View view) {
WindowInsets rootWindowInsets = view.getRootWindowInsets();
if (rootWindowInsets == null) {
return null;
}
WindowInsetsCompat windowInsetsCompat = WindowInsetsCompat.toWindowInsetsCompat(rootWindowInsets);
windowInsetsCompat.setRootWindowInsets(windowInsetsCompat);
windowInsetsCompat.copyRootViewBounds(view.getRootView());
return windowInsetsCompat;
}
}
@RequiresApi(29)
/* loaded from: classes.dex */
public static class Api29Impl {
private Api29Impl() {
}
public static void saveAttributeDataForStyleable(@NonNull View view, @NonNull Context context, @NonNull int[] iArr, @Nullable AttributeSet attributeSet, @NonNull TypedArray typedArray, int i, int i2) {
view.saveAttributeDataForStyleable(context, iArr, attributeSet, typedArray, i, i2);
}
}
@RequiresApi(30)
/* loaded from: classes.dex */
public static class Api30Impl {
private Api30Impl() {
}
@Nullable
public static WindowInsetsControllerCompat getWindowInsetsController(@NonNull View view) {
WindowInsetsController windowInsetsController = view.getWindowInsetsController();
if (windowInsetsController != null) {
return WindowInsetsControllerCompat.toWindowInsetsControllerCompat(windowInsetsController);
}
return null;
}
}
@RequiresApi(28)
/* loaded from: classes.dex */
public static class CompatImplApi28 {
/* renamed from: androidx.core.view.ViewCompat$CompatImplApi28$1 reason: invalid class name */
/* loaded from: classes.dex */
public class AnonymousClass1 implements View.OnUnhandledKeyEventListener {
public final /* synthetic */ OnUnhandledKeyEventListenerCompat val$listener;
public AnonymousClass1(OnUnhandledKeyEventListenerCompat onUnhandledKeyEventListenerCompat) {
this.val$listener = onUnhandledKeyEventListenerCompat;
}
@Override // android.view.View.OnUnhandledKeyEventListener
public boolean onUnhandledKeyEvent(View view, KeyEvent keyEvent) {
return this.val$listener.onUnhandledKeyEvent(view, keyEvent);
}
}
private CompatImplApi28() {
}
public static void addOnUnhandledKeyEventListener(@NonNull View view, @NonNull OnUnhandledKeyEventListenerCompat onUnhandledKeyEventListenerCompat) {
int i = R.id.tag_unhandled_key_listeners;
SimpleArrayMap simpleArrayMap = (SimpleArrayMap) view.getTag(i);
if (simpleArrayMap == null) {
simpleArrayMap = new SimpleArrayMap();
view.setTag(i, simpleArrayMap);
}
AnonymousClass1 r0 = new AnonymousClass1(onUnhandledKeyEventListenerCompat);
simpleArrayMap.put(onUnhandledKeyEventListenerCompat, r0);
view.addOnUnhandledKeyEventListener(r0);
}
public static void removeOnUnhandledKeyEventListener(@NonNull View view, @NonNull OnUnhandledKeyEventListenerCompat onUnhandledKeyEventListenerCompat) {
View.OnUnhandledKeyEventListener onUnhandledKeyEventListener;
SimpleArrayMap simpleArrayMap = (SimpleArrayMap) view.getTag(R.id.tag_unhandled_key_listeners);
if (simpleArrayMap != null && (onUnhandledKeyEventListener = (View.OnUnhandledKeyEventListener) simpleArrayMap.get(onUnhandledKeyEventListenerCompat)) != null) {
view.removeOnUnhandledKeyEventListener(onUnhandledKeyEventListener);
}
}
}
@Retention(RetentionPolicy.SOURCE)
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
/* loaded from: classes.dex */
public @interface FocusDirection {
}
@Retention(RetentionPolicy.SOURCE)
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
/* loaded from: classes.dex */
public @interface FocusRealDirection {
}
@Retention(RetentionPolicy.SOURCE)
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
/* loaded from: classes.dex */
public @interface FocusRelativeDirection {
}
@Retention(RetentionPolicy.SOURCE)
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
/* loaded from: classes.dex */
public @interface NestedScrollType {
}
/* loaded from: classes.dex */
public interface OnUnhandledKeyEventListenerCompat {
boolean onUnhandledKeyEvent(View view, KeyEvent keyEvent);
}
@Retention(RetentionPolicy.SOURCE)
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
/* loaded from: classes.dex */
public @interface ScrollAxis {
}
@Retention(RetentionPolicy.SOURCE)
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
/* loaded from: classes.dex */
public @interface ScrollIndicators {
}
/* loaded from: classes.dex */
public static class UnhandledKeyEventManager {
private static final ArrayList<WeakReference<View>> sViewsWithListeners = new ArrayList<>();
@Nullable
private WeakHashMap<View, Boolean> mViewsContainingListeners = null;
private SparseArray<WeakReference<View>> mCapturedKeys = null;
private WeakReference<KeyEvent> mLastDispatchedPreViewKeyEvent = null;
public static UnhandledKeyEventManager at(View view) {
int i = R.id.tag_unhandled_key_event_manager;
UnhandledKeyEventManager unhandledKeyEventManager = (UnhandledKeyEventManager) view.getTag(i);
if (unhandledKeyEventManager != null) {
return unhandledKeyEventManager;
}
UnhandledKeyEventManager unhandledKeyEventManager2 = new UnhandledKeyEventManager();
view.setTag(i, unhandledKeyEventManager2);
return unhandledKeyEventManager2;
}
@Nullable
private View dispatchInOrder(View view, KeyEvent keyEvent) {
WeakHashMap<View, Boolean> weakHashMap = this.mViewsContainingListeners;
if (weakHashMap != null && weakHashMap.containsKey(view)) {
if (view instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) view;
for (int childCount = viewGroup.getChildCount() - 1; childCount >= 0; childCount--) {
View dispatchInOrder = dispatchInOrder(viewGroup.getChildAt(childCount), keyEvent);
if (dispatchInOrder != null) {
return dispatchInOrder;
}
}
}
if (onUnhandledKeyEvent(view, keyEvent)) {
return view;
}
}
return null;
}
private SparseArray<WeakReference<View>> getCapturedKeys() {
if (this.mCapturedKeys == null) {
this.mCapturedKeys = new SparseArray<>();
}
return this.mCapturedKeys;
}
private boolean onUnhandledKeyEvent(@NonNull View view, @NonNull KeyEvent keyEvent) {
ArrayList arrayList = (ArrayList) view.getTag(R.id.tag_unhandled_key_listeners);
if (arrayList == null) {
return false;
}
for (int size = arrayList.size() - 1; size >= 0; size--) {
if (((OnUnhandledKeyEventListenerCompat) arrayList.get(size)).onUnhandledKeyEvent(view, keyEvent)) {
return true;
}
}
return false;
}
private void recalcViewsWithUnhandled() {
WeakHashMap<View, Boolean> weakHashMap = this.mViewsContainingListeners;
if (weakHashMap != null) {
weakHashMap.clear();
}
ArrayList<WeakReference<View>> arrayList = sViewsWithListeners;
if (!arrayList.isEmpty()) {
synchronized (arrayList) {
if (this.mViewsContainingListeners == null) {
this.mViewsContainingListeners = new WeakHashMap<>();
}
for (int size = arrayList.size() - 1; size >= 0; size--) {
ArrayList<WeakReference<View>> arrayList2 = sViewsWithListeners;
View view = arrayList2.get(size).get();
if (view == null) {
arrayList2.remove(size);
} else {
this.mViewsContainingListeners.put(view, Boolean.TRUE);
for (ViewParent parent = view.getParent(); parent instanceof View; parent = parent.getParent()) {
this.mViewsContainingListeners.put((View) parent, Boolean.TRUE);
}
}
}
}
}
}
public static void registerListeningView(View view) {
ArrayList<WeakReference<View>> arrayList = sViewsWithListeners;
synchronized (arrayList) {
Iterator<WeakReference<View>> it = arrayList.iterator();
while (it.hasNext()) {
if (it.next().get() == view) {
return;
}
}
sViewsWithListeners.add(new WeakReference<>(view));
}
}
public static void unregisterListeningView(View view) {
synchronized (sViewsWithListeners) {
int i = 0;
while (true) {
ArrayList<WeakReference<View>> arrayList = sViewsWithListeners;
if (i >= arrayList.size()) {
return;
}
if (arrayList.get(i).get() == view) {
arrayList.remove(i);
return;
}
i++;
}
}
}
public boolean dispatch(View view, KeyEvent keyEvent) {
if (keyEvent.getAction() == 0) {
recalcViewsWithUnhandled();
}
View dispatchInOrder = dispatchInOrder(view, keyEvent);
if (keyEvent.getAction() == 0) {
int keyCode = keyEvent.getKeyCode();
if (dispatchInOrder != null && !KeyEvent.isModifierKey(keyCode)) {
getCapturedKeys().put(keyCode, new WeakReference<>(dispatchInOrder));
}
}
return dispatchInOrder != null;
}
public boolean preDispatch(KeyEvent keyEvent) {
int indexOfKey;
WeakReference<KeyEvent> weakReference = this.mLastDispatchedPreViewKeyEvent;
if (weakReference != null && weakReference.get() == keyEvent) {
return false;
}
this.mLastDispatchedPreViewKeyEvent = new WeakReference<>(keyEvent);
WeakReference<View> weakReference2 = null;
SparseArray<WeakReference<View>> capturedKeys = getCapturedKeys();
if (keyEvent.getAction() == 1 && (indexOfKey = capturedKeys.indexOfKey(keyEvent.getKeyCode())) >= 0) {
weakReference2 = capturedKeys.valueAt(indexOfKey);
capturedKeys.removeAt(indexOfKey);
}
if (weakReference2 == null) {
weakReference2 = capturedKeys.get(keyEvent.getKeyCode());
}
if (weakReference2 == null) {
return false;
}
View view = weakReference2.get();
if (view != null && ViewCompat.isAttachedToWindow(view)) {
onUnhandledKeyEvent(view, keyEvent);
}
return true;
}
}
private static AccessibilityViewProperty<Boolean> accessibilityHeadingProperty() {
return new AnonymousClass5(R.id.tag_accessibility_heading, Boolean.class, 28);
}
public static int addAccessibilityAction(@NonNull View view, @NonNull CharSequence charSequence, @NonNull AccessibilityViewCommand accessibilityViewCommand) {
int availableActionIdFromResources = getAvailableActionIdFromResources(view, charSequence);
if (availableActionIdFromResources != -1) {
addAccessibilityAction(view, new AccessibilityNodeInfoCompat.AccessibilityActionCompat(availableActionIdFromResources, charSequence, accessibilityViewCommand));
}
return availableActionIdFromResources;
}
private static void addAccessibilityAction(@NonNull View view, @NonNull AccessibilityNodeInfoCompat.AccessibilityActionCompat accessibilityActionCompat) {
getOrCreateAccessibilityDelegateCompat(view);
removeActionWithId(accessibilityActionCompat.getId(), view);
getActionList(view).add(accessibilityActionCompat);
notifyViewAccessibilityStateChangedIfNeeded(view, 0);
}
public static void addKeyboardNavigationClusters(@NonNull View view, @NonNull Collection<View> collection, int i) {
if (Build.VERSION.SDK_INT >= 26) {
view.addKeyboardNavigationClusters(collection, i);
}
}
public static void addOnUnhandledKeyEventListener(@NonNull View view, @NonNull OnUnhandledKeyEventListenerCompat onUnhandledKeyEventListenerCompat) {
if (Build.VERSION.SDK_INT >= 28) {
CompatImplApi28.addOnUnhandledKeyEventListener(view, onUnhandledKeyEventListenerCompat);
return;
}
int i = R.id.tag_unhandled_key_listeners;
ArrayList arrayList = (ArrayList) view.getTag(i);
if (arrayList == null) {
arrayList = new ArrayList();
view.setTag(i, arrayList);
}
arrayList.add(onUnhandledKeyEventListenerCompat);
if (arrayList.size() == 1) {
UnhandledKeyEventManager.registerListeningView(view);
}
}
@NonNull
public static ViewPropertyAnimatorCompat animate(@NonNull View view) {
if (sViewPropertyAnimatorMap == null) {
sViewPropertyAnimatorMap = new WeakHashMap<>();
}
ViewPropertyAnimatorCompat viewPropertyAnimatorCompat = sViewPropertyAnimatorMap.get(view);
if (viewPropertyAnimatorCompat != null) {
return viewPropertyAnimatorCompat;
}
ViewPropertyAnimatorCompat viewPropertyAnimatorCompat2 = new ViewPropertyAnimatorCompat(view);
sViewPropertyAnimatorMap.put(view, viewPropertyAnimatorCompat2);
return viewPropertyAnimatorCompat2;
}
private static void bindTempDetach() {
try {
sDispatchStartTemporaryDetach = View.class.getDeclaredMethod("dispatchStartTemporaryDetach", new Class[0]);
sDispatchFinishTemporaryDetach = View.class.getDeclaredMethod("dispatchFinishTemporaryDetach", new Class[0]);
} catch (NoSuchMethodException e) {
Log.e(TAG, "Couldn't find method", e);
}
sTempDetachBound = true;
}
@Deprecated
public static boolean canScrollHorizontally(View view, int i) {
return view.canScrollHorizontally(i);
}
@Deprecated
public static boolean canScrollVertically(View view, int i) {
return view.canScrollVertically(i);
}
public static void cancelDragAndDrop(@NonNull View view) {
if (Build.VERSION.SDK_INT >= 24) {
view.cancelDragAndDrop();
}
}
@Deprecated
public static int combineMeasuredStates(int i, int i2) {
return View.combineMeasuredStates(i, i2);
}
private static void compatOffsetLeftAndRight(View view, int i) {
view.offsetLeftAndRight(i);
if (view.getVisibility() == 0) {
tickleInvalidationFlag(view);
ViewParent parent = view.getParent();
if (parent instanceof View) {
tickleInvalidationFlag((View) parent);
}
}
}
private static void compatOffsetTopAndBottom(View view, int i) {
view.offsetTopAndBottom(i);
if (view.getVisibility() == 0) {
tickleInvalidationFlag(view);
ViewParent parent = view.getParent();
if (parent instanceof View) {
tickleInvalidationFlag((View) parent);
}
}
}
@NonNull
public static WindowInsetsCompat computeSystemWindowInsets(@NonNull View view, @NonNull WindowInsetsCompat windowInsetsCompat, @NonNull Rect rect) {
return Api21Impl.computeSystemWindowInsets(view, windowInsetsCompat, rect);
}
@NonNull
public static WindowInsetsCompat dispatchApplyWindowInsets(@NonNull View view, @NonNull WindowInsetsCompat windowInsetsCompat) {
WindowInsets windowInsets = windowInsetsCompat.toWindowInsets();
if (windowInsets != null) {
WindowInsets dispatchApplyWindowInsets = view.dispatchApplyWindowInsets(windowInsets);
if (!dispatchApplyWindowInsets.equals(windowInsets)) {
return WindowInsetsCompat.toWindowInsetsCompat(dispatchApplyWindowInsets, view);
}
}
return windowInsetsCompat;
}
public static void dispatchFinishTemporaryDetach(@NonNull View view) {
if (Build.VERSION.SDK_INT >= 24) {
view.dispatchFinishTemporaryDetach();
return;
}
if (!sTempDetachBound) {
bindTempDetach();
}
Method method = sDispatchFinishTemporaryDetach;
if (method != null) {
try {
method.invoke(view, new Object[0]);
} catch (Exception e) {
Log.d(TAG, "Error calling dispatchFinishTemporaryDetach", e);
}
} else {
view.onFinishTemporaryDetach();
}
}
public static boolean dispatchNestedFling(@NonNull View view, float f, float f2, boolean z2) {
return view.dispatchNestedFling(f, f2, z2);
}
public static boolean dispatchNestedPreFling(@NonNull View view, float f, float f2) {
return view.dispatchNestedPreFling(f, f2);
}
public static boolean dispatchNestedPreScroll(@NonNull View view, int i, int i2, @Nullable int[] iArr, @Nullable int[] iArr2) {
return view.dispatchNestedPreScroll(i, i2, iArr, iArr2);
}
public static boolean dispatchNestedPreScroll(@NonNull View view, int i, int i2, @Nullable int[] iArr, @Nullable int[] iArr2, int i3) {
if (view instanceof NestedScrollingChild2) {
return ((NestedScrollingChild2) view).dispatchNestedPreScroll(i, i2, iArr, iArr2, i3);
}
if (i3 == 0) {
return dispatchNestedPreScroll(view, i, i2, iArr, iArr2);
}
return false;
}
public static void dispatchNestedScroll(@NonNull View view, int i, int i2, int i3, int i4, @Nullable int[] iArr, int i5, @NonNull int[] iArr2) {
if (view instanceof NestedScrollingChild3) {
((NestedScrollingChild3) view).dispatchNestedScroll(i, i2, i3, i4, iArr, i5, iArr2);
} else {
dispatchNestedScroll(view, i, i2, i3, i4, iArr, i5);
}
}
public static boolean dispatchNestedScroll(@NonNull View view, int i, int i2, int i3, int i4, @Nullable int[] iArr) {
return view.dispatchNestedScroll(i, i2, i3, i4, iArr);
}
public static boolean dispatchNestedScroll(@NonNull View view, int i, int i2, int i3, int i4, @Nullable int[] iArr, int i5) {
if (view instanceof NestedScrollingChild2) {
return ((NestedScrollingChild2) view).dispatchNestedScroll(i, i2, i3, i4, iArr, i5);
}
if (i5 == 0) {
return dispatchNestedScroll(view, i, i2, i3, i4, iArr);
}
return false;
}
public static void dispatchStartTemporaryDetach(@NonNull View view) {
if (Build.VERSION.SDK_INT >= 24) {
view.dispatchStartTemporaryDetach();
return;
}
if (!sTempDetachBound) {
bindTempDetach();
}
Method method = sDispatchStartTemporaryDetach;
if (method != null) {
try {
method.invoke(view, new Object[0]);
} catch (Exception e) {
Log.d(TAG, "Error calling dispatchStartTemporaryDetach", e);
}
} else {
view.onStartTemporaryDetach();
}
}
@UiThread
public static boolean dispatchUnhandledKeyEventBeforeCallback(View view, KeyEvent keyEvent) {
if (Build.VERSION.SDK_INT >= 28) {
return false;
}
return UnhandledKeyEventManager.at(view).dispatch(view, keyEvent);
}
@UiThread
public static boolean dispatchUnhandledKeyEventBeforeHierarchy(View view, KeyEvent keyEvent) {
if (Build.VERSION.SDK_INT >= 28) {
return false;
}
return UnhandledKeyEventManager.at(view).preDispatch(keyEvent);
}
public static void enableAccessibleClickableSpanSupport(View view) {
getOrCreateAccessibilityDelegateCompat(view);
}
public static int generateViewId() {
return View.generateViewId();
}
@Nullable
public static AccessibilityDelegateCompat getAccessibilityDelegate(@NonNull View view) {
View.AccessibilityDelegate accessibilityDelegateInternal = getAccessibilityDelegateInternal(view);
if (accessibilityDelegateInternal == null) {
return null;
}
return accessibilityDelegateInternal instanceof AccessibilityDelegateCompat.AccessibilityDelegateAdapter ? ((AccessibilityDelegateCompat.AccessibilityDelegateAdapter) accessibilityDelegateInternal).mCompat : new AccessibilityDelegateCompat(accessibilityDelegateInternal);
}
@Nullable
private static View.AccessibilityDelegate getAccessibilityDelegateInternal(@NonNull View view) {
return Build.VERSION.SDK_INT >= 29 ? view.getAccessibilityDelegate() : getAccessibilityDelegateThroughReflection(view);
}
@Nullable
private static View.AccessibilityDelegate getAccessibilityDelegateThroughReflection(@NonNull View view) {
if (sAccessibilityDelegateCheckFailed) {
return null;
}
if (sAccessibilityDelegateField == null) {
try {
Field declaredField = View.class.getDeclaredField("mAccessibilityDelegate");
sAccessibilityDelegateField = declaredField;
declaredField.setAccessible(true);
} catch (Throwable unused) {
sAccessibilityDelegateCheckFailed = true;
return null;
}
}
try {
Object obj = sAccessibilityDelegateField.get(view);
if (obj instanceof View.AccessibilityDelegate) {
return (View.AccessibilityDelegate) obj;
}
return null;
} catch (Throwable unused2) {
sAccessibilityDelegateCheckFailed = true;
return null;
}
}
public static int getAccessibilityLiveRegion(@NonNull View view) {
return view.getAccessibilityLiveRegion();
}
public static AccessibilityNodeProviderCompat getAccessibilityNodeProvider(@NonNull View view) {
AccessibilityNodeProvider accessibilityNodeProvider = view.getAccessibilityNodeProvider();
if (accessibilityNodeProvider != null) {
return new AccessibilityNodeProviderCompat(accessibilityNodeProvider);
}
return null;
}
@UiThread
public static CharSequence getAccessibilityPaneTitle(View view) {
return paneTitleProperty().get(view);
}
private static List<AccessibilityNodeInfoCompat.AccessibilityActionCompat> getActionList(View view) {
int i = R.id.tag_accessibility_actions;
ArrayList arrayList = (ArrayList) view.getTag(i);
if (arrayList != null) {
return arrayList;
}
ArrayList arrayList2 = new ArrayList();
view.setTag(i, arrayList2);
return arrayList2;
}
@Deprecated
public static float getAlpha(View view) {
return view.getAlpha();
}
private static int getAvailableActionIdFromResources(View view, @NonNull CharSequence charSequence) {
List<AccessibilityNodeInfoCompat.AccessibilityActionCompat> actionList = getActionList(view);
for (int i = 0; i < actionList.size(); i++) {
if (TextUtils.equals(charSequence, actionList.get(i).getLabel())) {
return actionList.get(i).getId();
}
}
int i2 = 0;
int i3 = -1;
while (true) {
int[] iArr = ACCESSIBILITY_ACTIONS_RESOURCE_IDS;
if (i2 >= iArr.length || i3 != -1) {
break;
}
int i4 = iArr[i2];
boolean z2 = true;
for (int i5 = 0; i5 < actionList.size(); i5++) {
z2 &= actionList.get(i5).getId() != i4;
}
if (z2) {
i3 = i4;
}
i2++;
}
return i3;
}
public static ColorStateList getBackgroundTintList(@NonNull View view) {
return view.getBackgroundTintList();
}
public static PorterDuff.Mode getBackgroundTintMode(@NonNull View view) {
return view.getBackgroundTintMode();
}
@Nullable
public static Rect getClipBounds(@NonNull View view) {
return view.getClipBounds();
}
@Nullable
public static Display getDisplay(@NonNull View view) {
return view.getDisplay();
}
public static float getElevation(@NonNull View view) {
return view.getElevation();
}
private static Rect getEmptyTempRect() {
if (sThreadLocalRect == null) {
sThreadLocalRect = new ThreadLocal<>();
}
Rect rect = sThreadLocalRect.get();
if (rect == null) {
rect = new Rect();
sThreadLocalRect.set(rect);
}
rect.setEmpty();
return rect;
}
private static OnReceiveContentViewBehavior getFallback(@NonNull View view) {
return view instanceof OnReceiveContentViewBehavior ? (OnReceiveContentViewBehavior) view : NO_OP_ON_RECEIVE_CONTENT_VIEW_BEHAVIOR;
}
public static boolean getFitsSystemWindows(@NonNull View view) {
return view.getFitsSystemWindows();
}
public static int getImportantForAccessibility(@NonNull View view) {
return view.getImportantForAccessibility();
}
@SuppressLint({"InlinedApi"})
public static int getImportantForAutofill(@NonNull View view) {
if (Build.VERSION.SDK_INT >= 26) {
return view.getImportantForAutofill();
}
return 0;
}
public static int getLabelFor(@NonNull View view) {
return view.getLabelFor();
}
@Deprecated
public static int getLayerType(View view) {
return view.getLayerType();
}
public static int getLayoutDirection(@NonNull View view) {
return view.getLayoutDirection();
}
@Nullable
@Deprecated
public static Matrix getMatrix(View view) {
return view.getMatrix();
}
@Deprecated
public static int getMeasuredHeightAndState(View view) {
return view.getMeasuredHeightAndState();
}
@Deprecated
public static int getMeasuredState(View view) {
return view.getMeasuredState();
}
@Deprecated
public static int getMeasuredWidthAndState(View view) {
return view.getMeasuredWidthAndState();
}
public static int getMinimumHeight(@NonNull View view) {
return view.getMinimumHeight();
}
public static int getMinimumWidth(@NonNull View view) {
return view.getMinimumWidth();
}
public static int getNextClusterForwardId(@NonNull View view) {
if (Build.VERSION.SDK_INT >= 26) {
return view.getNextClusterForwardId();
}
return -1;
}
@Nullable
public static String[] getOnReceiveContentMimeTypes(@NonNull View view) {
return (String[]) view.getTag(R.id.tag_on_receive_content_mime_types);
}
public static AccessibilityDelegateCompat getOrCreateAccessibilityDelegateCompat(@NonNull View view) {
AccessibilityDelegateCompat accessibilityDelegate = getAccessibilityDelegate(view);
if (accessibilityDelegate == null) {
accessibilityDelegate = new AccessibilityDelegateCompat();
}
setAccessibilityDelegate(view, accessibilityDelegate);
return accessibilityDelegate;
}
@Deprecated
public static int getOverScrollMode(View view) {
return view.getOverScrollMode();
}
@Px
public static int getPaddingEnd(@NonNull View view) {
return view.getPaddingEnd();
}
@Px
public static int getPaddingStart(@NonNull View view) {
return view.getPaddingStart();
}
public static ViewParent getParentForAccessibility(@NonNull View view) {
return view.getParentForAccessibility();
}
@Deprecated
public static float getPivotX(View view) {
return view.getPivotX();
}
@Deprecated
public static float getPivotY(View view) {
return view.getPivotY();
}
@Nullable
public static WindowInsetsCompat getRootWindowInsets(@NonNull View view) {
return Build.VERSION.SDK_INT >= 23 ? Api23Impl.getRootWindowInsets(view) : Api21Impl.getRootWindowInsets(view);
}
@Deprecated
public static float getRotation(View view) {
return view.getRotation();
}
@Deprecated
public static float getRotationX(View view) {
return view.getRotationX();
}
@Deprecated
public static float getRotationY(View view) {
return view.getRotationY();
}
@Deprecated
public static float getScaleX(View view) {
return view.getScaleX();
}
@Deprecated
public static float getScaleY(View view) {
return view.getScaleY();
}
public static int getScrollIndicators(@NonNull View view) {
if (Build.VERSION.SDK_INT >= 23) {
return view.getScrollIndicators();
}
return 0;
}
@Nullable
@UiThread
public static final CharSequence getStateDescription(@NonNull View view) {
return stateDescriptionProperty().get(view);
}
@NonNull
public static List<Rect> getSystemGestureExclusionRects(@NonNull View view) {
return Build.VERSION.SDK_INT >= 29 ? view.getSystemGestureExclusionRects() : Collections.emptyList();
}
@Nullable
public static String getTransitionName(@NonNull View view) {
return view.getTransitionName();
}
@Deprecated
public static float getTranslationX(View view) {
return view.getTranslationX();
}
@Deprecated
public static float getTranslationY(View view) {
return view.getTranslationY();
}
public static float getTranslationZ(@NonNull View view) {
return view.getTranslationZ();
}
@Nullable
public static WindowInsetsControllerCompat getWindowInsetsController(@NonNull View view) {
if (Build.VERSION.SDK_INT >= 30) {
return Api30Impl.getWindowInsetsController(view);
}
for (Context context = view.getContext(); context instanceof ContextWrapper; context = ((ContextWrapper) context).getBaseContext()) {
if (context instanceof Activity) {
Window window = ((Activity) context).getWindow();
if (window != null) {
return WindowCompat.getInsetsController(window, view);
}
return null;
}
}
return null;
}
public static int getWindowSystemUiVisibility(@NonNull View view) {
return view.getWindowSystemUiVisibility();
}
@Deprecated
public static float getX(View view) {
return view.getX();
}
@Deprecated
public static float getY(View view) {
return view.getY();
}
public static float getZ(@NonNull View view) {
return view.getZ();
}
public static boolean hasAccessibilityDelegate(@NonNull View view) {
return getAccessibilityDelegateInternal(view) != null;
}
public static boolean hasExplicitFocusable(@NonNull View view) {
return Build.VERSION.SDK_INT >= 26 ? view.hasExplicitFocusable() : view.hasFocusable();
}
public static boolean hasNestedScrollingParent(@NonNull View view) {
return view.hasNestedScrollingParent();
}
public static boolean hasNestedScrollingParent(@NonNull View view, int i) {
if (view instanceof NestedScrollingChild2) {
((NestedScrollingChild2) view).hasNestedScrollingParent(i);
return false;
} else if (i == 0) {
return hasNestedScrollingParent(view);
} else {
return false;
}
}
public static boolean hasOnClickListeners(@NonNull View view) {
return view.hasOnClickListeners();
}
public static boolean hasOverlappingRendering(@NonNull View view) {
return view.hasOverlappingRendering();
}
public static boolean hasTransientState(@NonNull View view) {
return view.hasTransientState();
}
@UiThread
public static boolean isAccessibilityHeading(View view) {
Boolean bool = accessibilityHeadingProperty().get(view);
if (bool == null) {
return false;
}
return bool.booleanValue();
}
public static boolean isAttachedToWindow(@NonNull View view) {
return view.isAttachedToWindow();
}
public static boolean isFocusedByDefault(@NonNull View view) {
if (Build.VERSION.SDK_INT >= 26) {
return view.isFocusedByDefault();
}
return false;
}
public static boolean isImportantForAccessibility(@NonNull View view) {
return view.isImportantForAccessibility();
}
public static boolean isImportantForAutofill(@NonNull View view) {
if (Build.VERSION.SDK_INT >= 26) {
return view.isImportantForAutofill();
}
return true;
}
public static boolean isInLayout(@NonNull View view) {
return view.isInLayout();
}
public static boolean isKeyboardNavigationCluster(@NonNull View view) {
if (Build.VERSION.SDK_INT >= 26) {
return view.isKeyboardNavigationCluster();
}
return false;
}
public static boolean isLaidOut(@NonNull View view) {
return view.isLaidOut();
}
public static boolean isLayoutDirectionResolved(@NonNull View view) {
return view.isLayoutDirectionResolved();
}
public static boolean isNestedScrollingEnabled(@NonNull View view) {
return view.isNestedScrollingEnabled();
}
@Deprecated
public static boolean isOpaque(View view) {
return view.isOpaque();
}
public static boolean isPaddingRelative(@NonNull View view) {
return view.isPaddingRelative();
}
@UiThread
public static boolean isScreenReaderFocusable(View view) {
Boolean bool = screenReaderFocusableProperty().get(view);
if (bool == null) {
return false;
}
return bool.booleanValue();
}
@Deprecated
public static void jumpDrawablesToCurrentState(View view) {
view.jumpDrawablesToCurrentState();
}
public static View keyboardNavigationClusterSearch(@NonNull View view, View view2, int i) {
if (Build.VERSION.SDK_INT >= 26) {
return view.keyboardNavigationClusterSearch(view2, i);
}
return null;
}
@RequiresApi(19)
public static void notifyViewAccessibilityStateChangedIfNeeded(View view, int i) {
AccessibilityManager accessibilityManager = (AccessibilityManager) view.getContext().getSystemService("accessibility");
if (accessibilityManager.isEnabled()) {
boolean z2 = getAccessibilityPaneTitle(view) != null && view.getVisibility() == 0;
int i2 = 32;
if (getAccessibilityLiveRegion(view) != 0 || z2) {
AccessibilityEvent obtain = AccessibilityEvent.obtain();
if (!z2) {
i2 = 2048;
}
obtain.setEventType(i2);
obtain.setContentChangeTypes(i);
if (z2) {
obtain.getText().add(getAccessibilityPaneTitle(view));
setViewImportanceForAccessibilityIfNeeded(view);
}
view.sendAccessibilityEventUnchecked(obtain);
} else if (i == 32) {
AccessibilityEvent obtain2 = AccessibilityEvent.obtain();
view.onInitializeAccessibilityEvent(obtain2);
obtain2.setEventType(32);
obtain2.setContentChangeTypes(i);
obtain2.setSource(view);
view.onPopulateAccessibilityEvent(obtain2);
obtain2.getText().add(getAccessibilityPaneTitle(view));
accessibilityManager.sendAccessibilityEvent(obtain2);
} else if (view.getParent() != null) {
try {
view.getParent().notifySubtreeAccessibilityStateChanged(view, view, i);
} catch (AbstractMethodError e) {
Log.e(TAG, view.getParent().getClass().getSimpleName() + " does not fully implement ViewParent", e);
}
}
}
}
public static void offsetLeftAndRight(@NonNull View view, int i) {
if (Build.VERSION.SDK_INT >= 23) {
view.offsetLeftAndRight(i);
return;
}
Rect emptyTempRect = getEmptyTempRect();
boolean z2 = false;
ViewParent parent = view.getParent();
if (parent instanceof View) {
View view2 = (View) parent;
emptyTempRect.set(view2.getLeft(), view2.getTop(), view2.getRight(), view2.getBottom());
z2 = !emptyTempRect.intersects(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
}
compatOffsetLeftAndRight(view, i);
if (z2 && emptyTempRect.intersect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom())) {
((View) parent).invalidate(emptyTempRect);
}
}
public static void offsetTopAndBottom(@NonNull View view, int i) {
if (Build.VERSION.SDK_INT >= 23) {
view.offsetTopAndBottom(i);
return;
}
Rect emptyTempRect = getEmptyTempRect();
boolean z2 = false;
ViewParent parent = view.getParent();
if (parent instanceof View) {
View view2 = (View) parent;
emptyTempRect.set(view2.getLeft(), view2.getTop(), view2.getRight(), view2.getBottom());
z2 = !emptyTempRect.intersects(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
}
compatOffsetTopAndBottom(view, i);
if (z2 && emptyTempRect.intersect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom())) {
((View) parent).invalidate(emptyTempRect);
}
}
@NonNull
public static WindowInsetsCompat onApplyWindowInsets(@NonNull View view, @NonNull WindowInsetsCompat windowInsetsCompat) {
WindowInsets windowInsets = windowInsetsCompat.toWindowInsets();
if (windowInsets != null) {
WindowInsets onApplyWindowInsets = view.onApplyWindowInsets(windowInsets);
if (!onApplyWindowInsets.equals(windowInsets)) {
return WindowInsetsCompat.toWindowInsetsCompat(onApplyWindowInsets, view);
}
}
return windowInsetsCompat;
}
@Deprecated
public static void onInitializeAccessibilityEvent(View view, AccessibilityEvent accessibilityEvent) {
view.onInitializeAccessibilityEvent(accessibilityEvent);
}
public static void onInitializeAccessibilityNodeInfo(@NonNull View view, AccessibilityNodeInfoCompat accessibilityNodeInfoCompat) {
view.onInitializeAccessibilityNodeInfo(accessibilityNodeInfoCompat.unwrap());
}
@Deprecated
public static void onPopulateAccessibilityEvent(View view, AccessibilityEvent accessibilityEvent) {
view.onPopulateAccessibilityEvent(accessibilityEvent);
}
private static AccessibilityViewProperty<CharSequence> paneTitleProperty() {
return new AnonymousClass3(R.id.tag_accessibility_pane_title, CharSequence.class, 8, 28);
}
public static boolean performAccessibilityAction(@NonNull View view, int i, Bundle bundle) {
return view.performAccessibilityAction(i, bundle);
}
@Nullable
public static ContentInfoCompat performReceiveContent(@NonNull View view, @NonNull ContentInfoCompat contentInfoCompat) {
if (Log.isLoggable(TAG, 3)) {
Log.d(TAG, "performReceiveContent: " + contentInfoCompat + ", view=" + view.getClass().getSimpleName() + "[" + view.getId() + "]");
}
OnReceiveContentListener onReceiveContentListener = (OnReceiveContentListener) view.getTag(R.id.tag_on_receive_content_listener);
if (onReceiveContentListener == null) {
return getFallback(view).onReceiveContent(contentInfoCompat);
}
ContentInfoCompat onReceiveContent = onReceiveContentListener.onReceiveContent(view, contentInfoCompat);
if (onReceiveContent == null) {
return null;
}
return getFallback(view).onReceiveContent(onReceiveContent);
}
public static void postInvalidateOnAnimation(@NonNull View view) {
view.postInvalidateOnAnimation();
}
public static void postInvalidateOnAnimation(@NonNull View view, int i, int i2, int i3, int i4) {
view.postInvalidateOnAnimation(i, i2, i3, i4);
}
public static void postOnAnimation(@NonNull View view, Runnable runnable) {
view.postOnAnimation(runnable);
}
public static void postOnAnimationDelayed(@NonNull View view, Runnable runnable, long j) {
view.postOnAnimationDelayed(runnable, j);
}
public static void removeAccessibilityAction(@NonNull View view, int i) {
removeActionWithId(i, view);
notifyViewAccessibilityStateChangedIfNeeded(view, 0);
}
private static void removeActionWithId(int i, View view) {
List<AccessibilityNodeInfoCompat.AccessibilityActionCompat> actionList = getActionList(view);
for (int i2 = 0; i2 < actionList.size(); i2++) {
if (actionList.get(i2).getId() == i) {
actionList.remove(i2);
return;
}
}
}
public static void removeOnUnhandledKeyEventListener(@NonNull View view, @NonNull OnUnhandledKeyEventListenerCompat onUnhandledKeyEventListenerCompat) {
if (Build.VERSION.SDK_INT >= 28) {
CompatImplApi28.removeOnUnhandledKeyEventListener(view, onUnhandledKeyEventListenerCompat);
return;
}
ArrayList arrayList = (ArrayList) view.getTag(R.id.tag_unhandled_key_listeners);
if (arrayList != null) {
arrayList.remove(onUnhandledKeyEventListenerCompat);
if (arrayList.size() == 0) {
UnhandledKeyEventManager.unregisterListeningView(view);
}
}
}
public static void replaceAccessibilityAction(@NonNull View view, @NonNull AccessibilityNodeInfoCompat.AccessibilityActionCompat accessibilityActionCompat, @Nullable CharSequence charSequence, @Nullable AccessibilityViewCommand accessibilityViewCommand) {
if (accessibilityViewCommand == null && charSequence == null) {
removeAccessibilityAction(view, accessibilityActionCompat.getId());
} else {
addAccessibilityAction(view, accessibilityActionCompat.createReplacementAction(charSequence, accessibilityViewCommand));
}
}
public static void requestApplyInsets(@NonNull View view) {
view.requestApplyInsets();
}
@NonNull
public static <T extends View> T requireViewById(@NonNull View view, @IdRes int i) {
if (Build.VERSION.SDK_INT >= 28) {
return (T) view.requireViewById(i);
}
T t = (T) view.findViewById(i);
if (t != null) {
return t;
}
throw new IllegalArgumentException("ID does not reference a View inside this View");
}
@Deprecated
public static int resolveSizeAndState(int i, int i2, int i3) {
return View.resolveSizeAndState(i, i2, i3);
}
public static boolean restoreDefaultFocus(@NonNull View view) {
return Build.VERSION.SDK_INT >= 26 ? view.restoreDefaultFocus() : view.requestFocus();
}
public static void saveAttributeDataForStyleable(@NonNull View view, @NonNull @SuppressLint({"ContextFirst"}) Context context, @NonNull int[] iArr, @Nullable AttributeSet attributeSet, @NonNull TypedArray typedArray, int i, int i2) {
if (Build.VERSION.SDK_INT >= 29) {
Api29Impl.saveAttributeDataForStyleable(view, context, iArr, attributeSet, typedArray, i, i2);
}
}
private static AccessibilityViewProperty<Boolean> screenReaderFocusableProperty() {
return new AnonymousClass2(R.id.tag_screen_reader_focusable, Boolean.class, 28);
}
public static void setAccessibilityDelegate(@NonNull View view, AccessibilityDelegateCompat accessibilityDelegateCompat) {
if (accessibilityDelegateCompat == null && (getAccessibilityDelegateInternal(view) instanceof AccessibilityDelegateCompat.AccessibilityDelegateAdapter)) {
accessibilityDelegateCompat = new AccessibilityDelegateCompat();
}
view.setAccessibilityDelegate(accessibilityDelegateCompat == null ? null : accessibilityDelegateCompat.getBridge());
}
@UiThread
public static void setAccessibilityHeading(View view, boolean z2) {
accessibilityHeadingProperty().set(view, Boolean.valueOf(z2));
}
public static void setAccessibilityLiveRegion(@NonNull View view, int i) {
view.setAccessibilityLiveRegion(i);
}
@UiThread
public static void setAccessibilityPaneTitle(View view, CharSequence charSequence) {
paneTitleProperty().set(view, charSequence);
if (charSequence != null) {
sAccessibilityPaneVisibilityManager.addAccessibilityPane(view);
} else {
sAccessibilityPaneVisibilityManager.removeAccessibilityPane(view);
}
}
@Deprecated
public static void setActivated(View view, boolean z2) {
view.setActivated(z2);
}
@Deprecated
public static void setAlpha(View view, @FloatRange(from = 0.0d, to = 1.0d) float f) {
view.setAlpha(f);
}
public static void setAutofillHints(@NonNull View view, @Nullable String... strArr) {
if (Build.VERSION.SDK_INT >= 26) {
view.setAutofillHints(strArr);
}
}
public static void setBackground(@NonNull View view, @Nullable Drawable drawable) {
view.setBackground(drawable);
}
public static void setBackgroundTintList(@NonNull View view, ColorStateList colorStateList) {
int i = Build.VERSION.SDK_INT;
view.setBackgroundTintList(colorStateList);
if (i == 21) {
Drawable background = view.getBackground();
boolean z2 = (view.getBackgroundTintList() == null && view.getBackgroundTintMode() == null) ? false : true;
if (background != null && z2) {
if (background.isStateful()) {
background.setState(view.getDrawableState());
}
view.setBackground(background);
}
}
}
public static void setBackgroundTintMode(@NonNull View view, PorterDuff.Mode mode) {
int i = Build.VERSION.SDK_INT;
view.setBackgroundTintMode(mode);
if (i == 21) {
Drawable background = view.getBackground();
boolean z2 = (view.getBackgroundTintList() == null && view.getBackgroundTintMode() == null) ? false : true;
if (background != null && z2) {
if (background.isStateful()) {
background.setState(view.getDrawableState());
}
view.setBackground(background);
}
}
}
@Deprecated
public static void setChildrenDrawingOrderEnabled(ViewGroup viewGroup, boolean z2) {
if (sChildrenDrawingOrderMethod == null) {
try {
sChildrenDrawingOrderMethod = ViewGroup.class.getDeclaredMethod("setChildrenDrawingOrderEnabled", Boolean.TYPE);
} catch (NoSuchMethodException e) {
Log.e(TAG, "Unable to find childrenDrawingOrderEnabled", e);
}
sChildrenDrawingOrderMethod.setAccessible(true);
}
try {
sChildrenDrawingOrderMethod.invoke(viewGroup, Boolean.valueOf(z2));
} catch (IllegalAccessException e2) {
Log.e(TAG, "Unable to invoke childrenDrawingOrderEnabled", e2);
} catch (IllegalArgumentException e3) {
Log.e(TAG, "Unable to invoke childrenDrawingOrderEnabled", e3);
} catch (InvocationTargetException e4) {
Log.e(TAG, "Unable to invoke childrenDrawingOrderEnabled", e4);
}
}
public static void setClipBounds(@NonNull View view, Rect rect) {
view.setClipBounds(rect);
}
public static void setElevation(@NonNull View view, float f) {
view.setElevation(f);
}
@Deprecated
public static void setFitsSystemWindows(View view, boolean z2) {
view.setFitsSystemWindows(z2);
}
public static void setFocusedByDefault(@NonNull View view, boolean z2) {
if (Build.VERSION.SDK_INT >= 26) {
view.setFocusedByDefault(z2);
}
}
public static void setHasTransientState(@NonNull View view, boolean z2) {
view.setHasTransientState(z2);
}
public static void setImportantForAccessibility(@NonNull View view, int i) {
view.setImportantForAccessibility(i);
}
public static void setImportantForAutofill(@NonNull View view, int i) {
if (Build.VERSION.SDK_INT >= 26) {
view.setImportantForAutofill(i);
}
}
public static void setKeyboardNavigationCluster(@NonNull View view, boolean z2) {
if (Build.VERSION.SDK_INT >= 26) {
view.setKeyboardNavigationCluster(z2);
}
}
public static void setLabelFor(@NonNull View view, @IdRes int i) {
view.setLabelFor(i);
}
public static void setLayerPaint(@NonNull View view, Paint paint) {
view.setLayerPaint(paint);
}
@Deprecated
public static void setLayerType(View view, int i, Paint paint) {
view.setLayerType(i, paint);
}
public static void setLayoutDirection(@NonNull View view, int i) {
view.setLayoutDirection(i);
}
public static void setNestedScrollingEnabled(@NonNull View view, boolean z2) {
view.setNestedScrollingEnabled(z2);
}
public static void setNextClusterForwardId(@NonNull View view, int i) {
if (Build.VERSION.SDK_INT >= 26) {
view.setNextClusterForwardId(i);
}
}
public static void setOnApplyWindowInsetsListener(@NonNull View view, @Nullable OnApplyWindowInsetsListener onApplyWindowInsetsListener) {
Api21Impl.setOnApplyWindowInsetsListener(view, onApplyWindowInsetsListener);
}
public static void setOnReceiveContentListener(@NonNull View view, @Nullable String[] strArr, @Nullable OnReceiveContentListener onReceiveContentListener) {
if (strArr == null || strArr.length == 0) {
strArr = null;
}
boolean z2 = false;
if (onReceiveContentListener != null) {
Preconditions.checkArgument(strArr != null, "When the listener is set, MIME types must also be set");
}
if (strArr != null) {
int length = strArr.length;
int i = 0;
while (true) {
if (i >= length) {
break;
} else if (strArr[i].startsWith("*")) {
z2 = true;
break;
} else {
i++;
}
}
StringBuilder S = a.S("A MIME type set here must not start with *: ");
S.append(Arrays.toString(strArr));
Preconditions.checkArgument(!z2, S.toString());
}
view.setTag(R.id.tag_on_receive_content_mime_types, strArr);
view.setTag(R.id.tag_on_receive_content_listener, onReceiveContentListener);
}
@Deprecated
public static void setOverScrollMode(View view, int i) {
view.setOverScrollMode(i);
}
public static void setPaddingRelative(@NonNull View view, @Px int i, @Px int i2, @Px int i3, @Px int i4) {
view.setPaddingRelative(i, i2, i3, i4);
}
@Deprecated
public static void setPivotX(View view, float f) {
view.setPivotX(f);
}
@Deprecated
public static void setPivotY(View view, float f) {
view.setPivotY(f);
}
public static void setPointerIcon(@NonNull View view, PointerIconCompat pointerIconCompat) {
if (Build.VERSION.SDK_INT >= 24) {
view.setPointerIcon((PointerIcon) (pointerIconCompat != null ? pointerIconCompat.getPointerIcon() : null));
}
}
@Deprecated
public static void setRotation(View view, float f) {
view.setRotation(f);
}
@Deprecated
public static void setRotationX(View view, float f) {
view.setRotationX(f);
}
@Deprecated
public static void setRotationY(View view, float f) {
view.setRotationY(f);
}
@Deprecated
public static void setSaveFromParentEnabled(View view, boolean z2) {
view.setSaveFromParentEnabled(z2);
}
@Deprecated
public static void setScaleX(View view, float f) {
view.setScaleX(f);
}
@Deprecated
public static void setScaleY(View view, float f) {
view.setScaleY(f);
}
@UiThread
public static void setScreenReaderFocusable(View view, boolean z2) {
screenReaderFocusableProperty().set(view, Boolean.valueOf(z2));
}
public static void setScrollIndicators(@NonNull View view, int i) {
if (Build.VERSION.SDK_INT >= 23) {
view.setScrollIndicators(i);
}
}
public static void setScrollIndicators(@NonNull View view, int i, int i2) {
if (Build.VERSION.SDK_INT >= 23) {
view.setScrollIndicators(i, i2);
}
}
@UiThread
public static void setStateDescription(@NonNull View view, @Nullable CharSequence charSequence) {
stateDescriptionProperty().set(view, charSequence);
}
public static void setSystemGestureExclusionRects(@NonNull View view, @NonNull List<Rect> list) {
if (Build.VERSION.SDK_INT >= 29) {
view.setSystemGestureExclusionRects(list);
}
}
public static void setTooltipText(@NonNull View view, @Nullable CharSequence charSequence) {
if (Build.VERSION.SDK_INT >= 26) {
view.setTooltipText(charSequence);
}
}
public static void setTransitionName(@NonNull View view, String str) {
view.setTransitionName(str);
}
@Deprecated
public static void setTranslationX(View view, float f) {
view.setTranslationX(f);
}
@Deprecated
public static void setTranslationY(View view, float f) {
view.setTranslationY(f);
}
public static void setTranslationZ(@NonNull View view, float f) {
view.setTranslationZ(f);
}
private static void setViewImportanceForAccessibilityIfNeeded(View view) {
if (getImportantForAccessibility(view) == 0) {
setImportantForAccessibility(view, 1);
}
for (ViewParent parent = view.getParent(); parent instanceof View; parent = parent.getParent()) {
if (getImportantForAccessibility((View) parent) == 4) {
setImportantForAccessibility(view, 2);
return;
}
}
}
public static void setWindowInsetsAnimationCallback(@NonNull View view, @Nullable WindowInsetsAnimationCompat.Callback callback) {
WindowInsetsAnimationCompat.setCallback(view, callback);
}
@Deprecated
public static void setX(View view, float f) {
view.setX(f);
}
@Deprecated
public static void setY(View view, float f) {
view.setY(f);
}
public static void setZ(@NonNull View view, float f) {
view.setZ(f);
}
public static boolean startDragAndDrop(@NonNull View view, ClipData clipData, View.DragShadowBuilder dragShadowBuilder, Object obj, int i) {
return Build.VERSION.SDK_INT >= 24 ? view.startDragAndDrop(clipData, dragShadowBuilder, obj, i) : view.startDrag(clipData, dragShadowBuilder, obj, i);
}
public static boolean startNestedScroll(@NonNull View view, int i) {
return view.startNestedScroll(i);
}
public static boolean startNestedScroll(@NonNull View view, int i, int i2) {
if (view instanceof NestedScrollingChild2) {
return ((NestedScrollingChild2) view).startNestedScroll(i, i2);
}
if (i2 == 0) {
return startNestedScroll(view, i);
}
return false;
}
private static AccessibilityViewProperty<CharSequence> stateDescriptionProperty() {
return new AnonymousClass4(R.id.tag_state_description, CharSequence.class, 64, 30);
}
public static void stopNestedScroll(@NonNull View view) {
view.stopNestedScroll();
}
public static void stopNestedScroll(@NonNull View view, int i) {
if (view instanceof NestedScrollingChild2) {
((NestedScrollingChild2) view).stopNestedScroll(i);
} else if (i == 0) {
stopNestedScroll(view);
}
}
private static void tickleInvalidationFlag(View view) {
float translationY = view.getTranslationY();
view.setTranslationY(1.0f + translationY);
view.setTranslationY(translationY);
}
public static void updateDragShadow(@NonNull View view, View.DragShadowBuilder dragShadowBuilder) {
if (Build.VERSION.SDK_INT >= 24) {
view.updateDragShadow(dragShadowBuilder);
}
}
}