package androidx.appcompat.app; import android.content.Context; import android.content.ContextWrapper; import android.content.res.TypedArray; import android.util.AttributeSet; import android.util.Log; import android.view.InflateException; import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.R; import androidx.appcompat.view.ContextThemeWrapper; import androidx.appcompat.widget.AppCompatAutoCompleteTextView; import androidx.appcompat.widget.AppCompatButton; import androidx.appcompat.widget.AppCompatCheckBox; import androidx.appcompat.widget.AppCompatCheckedTextView; import androidx.appcompat.widget.AppCompatEditText; import androidx.appcompat.widget.AppCompatImageButton; import androidx.appcompat.widget.AppCompatImageView; import androidx.appcompat.widget.AppCompatMultiAutoCompleteTextView; import androidx.appcompat.widget.AppCompatRadioButton; import androidx.appcompat.widget.AppCompatRatingBar; import androidx.appcompat.widget.AppCompatSeekBar; import androidx.appcompat.widget.AppCompatSpinner; import androidx.appcompat.widget.AppCompatTextView; import androidx.appcompat.widget.AppCompatToggleButton; import androidx.appcompat.widget.TintContextWrapper; import androidx.collection.SimpleArrayMap; import androidx.core.view.ViewCompat; import c.d.b.a.a; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class AppCompatViewInflater { private static final String LOG_TAG = "AppCompatViewInflater"; private static final String[] sClassPrefixList = {"android.widget.", "android.view.", "android.webkit."}; private static final SimpleArrayMap> sConstructorMap = new SimpleArrayMap<>(); private static final Class[] sConstructorSignature = {Context.class, AttributeSet.class}; private static final int[] sOnClickAttrs = {16843375}; private final Object[] mConstructorArgs = new Object[2]; public static class DeclaredOnClickListener implements View.OnClickListener { private final View mHostView; private final String mMethodName; private Context mResolvedContext; private Method mResolvedMethod; public DeclaredOnClickListener(@NonNull View view, @NonNull String str) { this.mHostView = view; this.mMethodName = str; } private void resolveMethod(@Nullable Context context) { String str; Method method; while (context != null) { try { if (!context.isRestricted() && (method = context.getClass().getMethod(this.mMethodName, View.class)) != null) { this.mResolvedMethod = method; this.mResolvedContext = context; return; } } catch (NoSuchMethodException unused) { } context = context instanceof ContextWrapper ? ((ContextWrapper) context).getBaseContext() : null; } int id2 = this.mHostView.getId(); if (id2 == -1) { str = ""; } else { StringBuilder K = a.K(" with id '"); K.append(this.mHostView.getContext().getResources().getResourceEntryName(id2)); K.append("'"); str = K.toString(); } StringBuilder K2 = a.K("Could not find method "); K2.append(this.mMethodName); K2.append("(View) in a parent or ancestor Context for android:onClick attribute defined on view "); K2.append(this.mHostView.getClass()); K2.append(str); throw new IllegalStateException(K2.toString()); } @Override // android.view.View.OnClickListener public void onClick(@NonNull View view) { if (this.mResolvedMethod == null) { resolveMethod(this.mHostView.getContext()); } try { this.mResolvedMethod.invoke(this.mResolvedContext, view); } catch (IllegalAccessException e) { throw new IllegalStateException("Could not execute non-public method for android:onClick", e); } catch (InvocationTargetException e2) { throw new IllegalStateException("Could not execute method for android:onClick", e2); } } } private void checkOnClickListener(View view, AttributeSet attributeSet) { Context context = view.getContext(); if ((context instanceof ContextWrapper) && ViewCompat.hasOnClickListeners(view)) { TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, sOnClickAttrs); String string = obtainStyledAttributes.getString(0); if (string != null) { view.setOnClickListener(new DeclaredOnClickListener(view, string)); } obtainStyledAttributes.recycle(); } } private View createViewByPrefix(Context context, String str, String str2) throws ClassNotFoundException, InflateException { String str3; SimpleArrayMap> simpleArrayMap = sConstructorMap; Constructor constructor = simpleArrayMap.get(str); if (constructor == null) { if (str2 != null) { try { str3 = str2 + str; } catch (Exception unused) { return null; } } else { str3 = str; } constructor = Class.forName(str3, false, context.getClassLoader()).asSubclass(View.class).getConstructor(sConstructorSignature); simpleArrayMap.put(str, constructor); } constructor.setAccessible(true); return (View) constructor.newInstance(this.mConstructorArgs); } private View createViewFromTag(Context context, String str, AttributeSet attributeSet) { Object obj = null; if (str.equals("view")) { str = attributeSet.getAttributeValue(null, "class"); } char c2 = 1; char c3 = 0; try { Object[] objArr = this.mConstructorArgs; objArr[0] = context; objArr[1] = attributeSet; if (-1 == str.indexOf(46)) { int i = 0; while (true) { String[] strArr = sClassPrefixList; if (i < strArr.length) { View createViewByPrefix = createViewByPrefix(context, str, strArr[i]); if (createViewByPrefix != null) { return createViewByPrefix; } i++; } else { Object[] objArr2 = this.mConstructorArgs; objArr2[0] = null; objArr2[1] = null; return null; } } } else { View createViewByPrefix2 = createViewByPrefix(context, str, null); Object[] objArr3 = this.mConstructorArgs; objArr3[0] = null; objArr3[1] = null; return createViewByPrefix2; } } catch (Exception unused) { return null; } finally { Object[] objArr4 = this.mConstructorArgs; objArr4[c3] = obj; objArr4[c2] = obj; } } private static Context themifyContext(Context context, AttributeSet attributeSet, boolean z2, boolean z3) { TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, R.styleable.View, 0, 0); int resourceId = z2 ? obtainStyledAttributes.getResourceId(R.styleable.View_android_theme, 0) : 0; if (z3 && resourceId == 0 && (resourceId = obtainStyledAttributes.getResourceId(R.styleable.View_theme, 0)) != 0) { Log.i("AppCompatViewInflater", "app:theme is now deprecated. Please move to using android:theme instead."); } obtainStyledAttributes.recycle(); return resourceId != 0 ? (!(context instanceof ContextThemeWrapper) || ((ContextThemeWrapper) context).getThemeResId() != resourceId) ? new ContextThemeWrapper(context, resourceId) : context : context; } private void verifyNotNull(View view, String str) { if (view == null) { throw new IllegalStateException(getClass().getName() + " asked to inflate view for <" + str + ">, but returned null"); } } @NonNull public AppCompatAutoCompleteTextView createAutoCompleteTextView(Context context, AttributeSet attributeSet) { return new AppCompatAutoCompleteTextView(context, attributeSet); } @NonNull public AppCompatButton createButton(Context context, AttributeSet attributeSet) { return new AppCompatButton(context, attributeSet); } @NonNull public AppCompatCheckBox createCheckBox(Context context, AttributeSet attributeSet) { return new AppCompatCheckBox(context, attributeSet); } @NonNull public AppCompatCheckedTextView createCheckedTextView(Context context, AttributeSet attributeSet) { return new AppCompatCheckedTextView(context, attributeSet); } @NonNull public AppCompatEditText createEditText(Context context, AttributeSet attributeSet) { return new AppCompatEditText(context, attributeSet); } @NonNull public AppCompatImageButton createImageButton(Context context, AttributeSet attributeSet) { return new AppCompatImageButton(context, attributeSet); } @NonNull public AppCompatImageView createImageView(Context context, AttributeSet attributeSet) { return new AppCompatImageView(context, attributeSet); } @NonNull public AppCompatMultiAutoCompleteTextView createMultiAutoCompleteTextView(Context context, AttributeSet attributeSet) { return new AppCompatMultiAutoCompleteTextView(context, attributeSet); } @NonNull public AppCompatRadioButton createRadioButton(Context context, AttributeSet attributeSet) { return new AppCompatRadioButton(context, attributeSet); } @NonNull public AppCompatRatingBar createRatingBar(Context context, AttributeSet attributeSet) { return new AppCompatRatingBar(context, attributeSet); } @NonNull public AppCompatSeekBar createSeekBar(Context context, AttributeSet attributeSet) { return new AppCompatSeekBar(context, attributeSet); } @NonNull public AppCompatSpinner createSpinner(Context context, AttributeSet attributeSet) { return new AppCompatSpinner(context, attributeSet); } @NonNull public AppCompatTextView createTextView(Context context, AttributeSet attributeSet) { return new AppCompatTextView(context, attributeSet); } @NonNull public AppCompatToggleButton createToggleButton(Context context, AttributeSet attributeSet) { return new AppCompatToggleButton(context, attributeSet); } @Nullable public View createView(Context context, String str, AttributeSet attributeSet) { return null; } public final View createView(View view, String str, @NonNull Context context, @NonNull AttributeSet attributeSet, boolean z2, boolean z3, boolean z4, boolean z5) { View view2; Context context2 = (!z2 || view == null) ? context : view.getContext(); if (z3 || z4) { context2 = themifyContext(context2, attributeSet, z3, z4); } if (z5) { context2 = TintContextWrapper.wrap(context2); } str.hashCode(); char c2 = 65535; switch (str.hashCode()) { case -1946472170: if (str.equals("RatingBar")) { c2 = 0; break; } break; case -1455429095: if (str.equals("CheckedTextView")) { c2 = 1; break; } break; case -1346021293: if (str.equals("MultiAutoCompleteTextView")) { c2 = 2; break; } break; case -938935918: if (str.equals("TextView")) { c2 = 3; break; } break; case -937446323: if (str.equals("ImageButton")) { c2 = 4; break; } break; case -658531749: if (str.equals("SeekBar")) { c2 = 5; break; } break; case -339785223: if (str.equals("Spinner")) { c2 = 6; break; } break; case 776382189: if (str.equals("RadioButton")) { c2 = 7; break; } break; case 799298502: if (str.equals("ToggleButton")) { c2 = '\b'; break; } break; case 1125864064: if (str.equals("ImageView")) { c2 = '\t'; break; } break; case 1413872058: if (str.equals("AutoCompleteTextView")) { c2 = '\n'; break; } break; case 1601505219: if (str.equals("CheckBox")) { c2 = 11; break; } break; case 1666676343: if (str.equals("EditText")) { c2 = '\f'; break; } break; case 2001146706: if (str.equals("Button")) { c2 = '\r'; break; } break; } switch (c2) { case 0: view2 = createRatingBar(context2, attributeSet); verifyNotNull(view2, str); break; case 1: view2 = createCheckedTextView(context2, attributeSet); verifyNotNull(view2, str); break; case 2: view2 = createMultiAutoCompleteTextView(context2, attributeSet); verifyNotNull(view2, str); break; case 3: view2 = createTextView(context2, attributeSet); verifyNotNull(view2, str); break; case 4: view2 = createImageButton(context2, attributeSet); verifyNotNull(view2, str); break; case 5: view2 = createSeekBar(context2, attributeSet); verifyNotNull(view2, str); break; case 6: view2 = createSpinner(context2, attributeSet); verifyNotNull(view2, str); break; case 7: view2 = createRadioButton(context2, attributeSet); verifyNotNull(view2, str); break; case '\b': view2 = createToggleButton(context2, attributeSet); verifyNotNull(view2, str); break; case '\t': view2 = createImageView(context2, attributeSet); verifyNotNull(view2, str); break; case '\n': view2 = createAutoCompleteTextView(context2, attributeSet); verifyNotNull(view2, str); break; case 11: view2 = createCheckBox(context2, attributeSet); verifyNotNull(view2, str); break; case '\f': view2 = createEditText(context2, attributeSet); verifyNotNull(view2, str); break; case '\r': view2 = createButton(context2, attributeSet); verifyNotNull(view2, str); break; default: view2 = createView(context2, str, attributeSet); break; } if (view2 == null && context != context2) { view2 = createViewFromTag(context2, str, attributeSet); } if (view2 != null) { checkOnClickListener(view2, attributeSet); } return view2; } }