jimu-decompiled/sources/com/squareup/leakcanary/AndroidReachabilityInspectors.java
2025-05-13 19:24:51 +02:00

147 lines
7.4 KiB
Java

package com.squareup.leakcanary;
import android.app.Activity;
import android.app.Application;
import android.app.Dialog;
import android.app.Fragment;
import android.os.MessageQueue;
import android.view.View;
import com.squareup.leakcanary.Reachability;
import com.unity3d.ads.metadata.MediationMetaData;
import java.util.ArrayList;
import java.util.List;
/* loaded from: classes.dex */
public enum AndroidReachabilityInspectors {
VIEW(ViewInspector.class),
ACTIVITY(ActivityInspector.class),
DIALOG(DialogInspector.class),
APPLICATION(ApplicationInspector.class),
FRAGMENT(FragmentInspector.class),
SUPPORT_FRAGMENT(SupportFragmentInspector.class),
MESSAGE_QUEUE(MessageQueueInspector.class),
MORTAR_PRESENTER(MortarPresenterInspector.class),
VIEW_ROOT_IMPL(ViewImplInspector.class),
MAIN_THEAD(MainThreadInspector.class),
WINDOW(WindowInspector.class);
private final Class<? extends Reachability.Inspector> inspectorClass;
public static class ActivityInspector implements Reachability.Inspector {
@Override // com.squareup.leakcanary.Reachability.Inspector
public Reachability expectedReachability(LeakTraceElement leakTraceElement) {
if (!leakTraceElement.isInstanceOf(Activity.class)) {
return Reachability.UNKNOWN;
}
String fieldReferenceValue = leakTraceElement.getFieldReferenceValue("mDestroyed");
return fieldReferenceValue == null ? Reachability.UNKNOWN : fieldReferenceValue.equals("true") ? Reachability.UNREACHABLE : Reachability.REACHABLE;
}
}
public static class ApplicationInspector implements Reachability.Inspector {
@Override // com.squareup.leakcanary.Reachability.Inspector
public Reachability expectedReachability(LeakTraceElement leakTraceElement) {
return leakTraceElement.isInstanceOf(Application.class) ? Reachability.REACHABLE : Reachability.UNKNOWN;
}
}
public static class DialogInspector implements Reachability.Inspector {
@Override // com.squareup.leakcanary.Reachability.Inspector
public Reachability expectedReachability(LeakTraceElement leakTraceElement) {
if (!leakTraceElement.isInstanceOf(Dialog.class)) {
return Reachability.UNKNOWN;
}
String fieldReferenceValue = leakTraceElement.getFieldReferenceValue("mDecor");
return fieldReferenceValue == null ? Reachability.UNKNOWN : fieldReferenceValue.equals("null") ? Reachability.UNREACHABLE : Reachability.REACHABLE;
}
}
public static class FragmentInspector implements Reachability.Inspector {
@Override // com.squareup.leakcanary.Reachability.Inspector
public Reachability expectedReachability(LeakTraceElement leakTraceElement) {
if (!leakTraceElement.isInstanceOf(Fragment.class)) {
return Reachability.UNKNOWN;
}
String fieldReferenceValue = leakTraceElement.getFieldReferenceValue("mDetached");
return fieldReferenceValue == null ? Reachability.UNKNOWN : fieldReferenceValue.equals("true") ? Reachability.UNREACHABLE : Reachability.REACHABLE;
}
}
public static class MainThreadInspector implements Reachability.Inspector {
@Override // com.squareup.leakcanary.Reachability.Inspector
public Reachability expectedReachability(LeakTraceElement leakTraceElement) {
return !leakTraceElement.isInstanceOf(Thread.class) ? Reachability.UNKNOWN : "main".equals(leakTraceElement.getFieldReferenceValue(MediationMetaData.KEY_NAME)) ? Reachability.REACHABLE : Reachability.UNKNOWN;
}
}
public static class MessageQueueInspector implements Reachability.Inspector {
@Override // com.squareup.leakcanary.Reachability.Inspector
public Reachability expectedReachability(LeakTraceElement leakTraceElement) {
return !leakTraceElement.isInstanceOf(MessageQueue.class) ? Reachability.UNKNOWN : "true".equals(leakTraceElement.getFieldReferenceValue("mQuitting")) ? Reachability.UNREACHABLE : Reachability.UNKNOWN;
}
}
public static class MortarPresenterInspector implements Reachability.Inspector {
@Override // com.squareup.leakcanary.Reachability.Inspector
public Reachability expectedReachability(LeakTraceElement leakTraceElement) {
return !leakTraceElement.isInstanceOf("mortar.Presenter") ? Reachability.UNKNOWN : "null".equals(leakTraceElement.getFieldReferenceValue("view")) ? Reachability.UNREACHABLE : Reachability.UNKNOWN;
}
}
public static class SupportFragmentInspector implements Reachability.Inspector {
@Override // com.squareup.leakcanary.Reachability.Inspector
public Reachability expectedReachability(LeakTraceElement leakTraceElement) {
if (!leakTraceElement.isInstanceOf("androidx.fragment.app.Fragment")) {
return Reachability.UNKNOWN;
}
String fieldReferenceValue = leakTraceElement.getFieldReferenceValue("mDetached");
return fieldReferenceValue == null ? Reachability.UNKNOWN : fieldReferenceValue.equals("true") ? Reachability.UNREACHABLE : Reachability.REACHABLE;
}
}
public static class ViewImplInspector implements Reachability.Inspector {
@Override // com.squareup.leakcanary.Reachability.Inspector
public Reachability expectedReachability(LeakTraceElement leakTraceElement) {
if (!leakTraceElement.isInstanceOf("android.view.ViewRootImpl")) {
return Reachability.UNKNOWN;
}
String fieldReferenceValue = leakTraceElement.getFieldReferenceValue("mView");
return fieldReferenceValue == null ? Reachability.UNKNOWN : fieldReferenceValue.equals("null") ? Reachability.UNREACHABLE : Reachability.REACHABLE;
}
}
public static class ViewInspector implements Reachability.Inspector {
@Override // com.squareup.leakcanary.Reachability.Inspector
public Reachability expectedReachability(LeakTraceElement leakTraceElement) {
if (!leakTraceElement.isInstanceOf(View.class)) {
return Reachability.UNKNOWN;
}
String fieldReferenceValue = leakTraceElement.getFieldReferenceValue("mAttachInfo");
return fieldReferenceValue == null ? Reachability.UNKNOWN : fieldReferenceValue.equals("null") ? Reachability.UNREACHABLE : Reachability.REACHABLE;
}
}
public static class WindowInspector implements Reachability.Inspector {
@Override // com.squareup.leakcanary.Reachability.Inspector
public Reachability expectedReachability(LeakTraceElement leakTraceElement) {
if (!leakTraceElement.isInstanceOf("android.view.Window")) {
return Reachability.UNKNOWN;
}
String fieldReferenceValue = leakTraceElement.getFieldReferenceValue("mDestroyed");
return fieldReferenceValue == null ? Reachability.UNKNOWN : fieldReferenceValue.equals("true") ? Reachability.UNREACHABLE : Reachability.REACHABLE;
}
}
AndroidReachabilityInspectors(Class cls) {
this.inspectorClass = cls;
}
public static List<Class<? extends Reachability.Inspector>> defaultAndroidInspectors() {
ArrayList arrayList = new ArrayList();
for (AndroidReachabilityInspectors androidReachabilityInspectors : values()) {
arrayList.add(androidReachabilityInspectors.inspectorClass);
}
return arrayList;
}
}