Files
rr3-apk/decompiled-community/sources/androidx/appcompat/app/LayoutIncludeDetector.java
Daniel Elliott c080f0d97f Add Discord community version (64-bit only)
- Added realracing3-community.apk (71.57 MB)
- Removed 32-bit support (armeabi-v7a)
- Only includes arm64-v8a libraries
- Decompiled source code included
- Added README-community.md with analysis
2026-02-18 15:48:36 -08:00

71 lines
2.3 KiB
Java

package androidx.appcompat.app;
import android.util.AttributeSet;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.lang.ref.WeakReference;
import java.util.ArrayDeque;
import java.util.Deque;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
/* loaded from: classes.dex */
class LayoutIncludeDetector {
@NonNull
private final Deque<WeakReference<XmlPullParser>> mXmlParserStack = new ArrayDeque();
public boolean detect(@NonNull AttributeSet attributeSet) {
if (!(attributeSet instanceof XmlPullParser)) {
return false;
}
XmlPullParser xmlPullParser = (XmlPullParser) attributeSet;
if (xmlPullParser.getDepth() != 1) {
return false;
}
XmlPullParser popOutdatedAttrHolders = popOutdatedAttrHolders(this.mXmlParserStack);
this.mXmlParserStack.push(new WeakReference<>(xmlPullParser));
return shouldInheritContext(xmlPullParser, popOutdatedAttrHolders);
}
private static boolean shouldInheritContext(@NonNull XmlPullParser xmlPullParser, @Nullable XmlPullParser xmlPullParser2) {
if (xmlPullParser2 == null || xmlPullParser == xmlPullParser2) {
return false;
}
try {
if (xmlPullParser2.getEventType() == 2) {
return "include".equals(xmlPullParser2.getName());
}
return false;
} catch (XmlPullParserException unused) {
return false;
}
}
@Nullable
private static XmlPullParser popOutdatedAttrHolders(@NonNull Deque<WeakReference<XmlPullParser>> deque) {
while (!deque.isEmpty()) {
XmlPullParser xmlPullParser = deque.peek().get();
if (!isParserOutdated(xmlPullParser)) {
return xmlPullParser;
}
deque.pop();
}
return null;
}
private static boolean isParserOutdated(@Nullable XmlPullParser xmlPullParser) {
if (xmlPullParser == null) {
return true;
}
try {
if (xmlPullParser.getEventType() != 3) {
return xmlPullParser.getEventType() == 1;
}
return true;
} catch (XmlPullParserException unused) {
return true;
}
}
}