Initial import of ADIF API reverse-engineering toolkit
This commit is contained in:
@@ -0,0 +1,131 @@
|
||||
package com.google.firebase.components;
|
||||
|
||||
import C.w;
|
||||
import android.app.Service;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ServiceInfo;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import com.google.firebase.inject.Provider;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
/* loaded from: classes3.dex */
|
||||
public final class ComponentDiscovery<T> {
|
||||
private static final String COMPONENT_KEY_PREFIX = "com.google.firebase.components:";
|
||||
private static final String COMPONENT_SENTINEL_VALUE = "com.google.firebase.components.ComponentRegistrar";
|
||||
static final String TAG = "ComponentDiscovery";
|
||||
private final T context;
|
||||
private final RegistrarNameRetriever<T> retriever;
|
||||
|
||||
/* loaded from: classes3.dex */
|
||||
public static class MetadataRegistrarNameRetriever implements RegistrarNameRetriever<Context> {
|
||||
private final Class<? extends Service> discoveryService;
|
||||
|
||||
private Bundle getMetadata(Context context) {
|
||||
try {
|
||||
PackageManager packageManager = context.getPackageManager();
|
||||
if (packageManager == null) {
|
||||
Log.w(ComponentDiscovery.TAG, "Context has no PackageManager.");
|
||||
return null;
|
||||
}
|
||||
ServiceInfo serviceInfo = packageManager.getServiceInfo(new ComponentName(context, this.discoveryService), 128);
|
||||
if (serviceInfo != null) {
|
||||
return serviceInfo.metaData;
|
||||
}
|
||||
Log.w(ComponentDiscovery.TAG, this.discoveryService + " has no service info.");
|
||||
return null;
|
||||
} catch (PackageManager.NameNotFoundException unused) {
|
||||
Log.w(ComponentDiscovery.TAG, "Application info not found.");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private MetadataRegistrarNameRetriever(Class<? extends Service> cls) {
|
||||
this.discoveryService = cls;
|
||||
}
|
||||
|
||||
@Override // com.google.firebase.components.ComponentDiscovery.RegistrarNameRetriever
|
||||
public List<String> retrieve(Context context) {
|
||||
Bundle metadata = getMetadata(context);
|
||||
if (metadata == null) {
|
||||
Log.w(ComponentDiscovery.TAG, "Could not retrieve metadata, returning empty list of registrars.");
|
||||
return Collections.EMPTY_LIST;
|
||||
}
|
||||
ArrayList arrayList = new ArrayList();
|
||||
for (String str : metadata.keySet()) {
|
||||
if (ComponentDiscovery.COMPONENT_SENTINEL_VALUE.equals(metadata.get(str)) && str.startsWith(ComponentDiscovery.COMPONENT_KEY_PREFIX)) {
|
||||
arrayList.add(str.substring(31));
|
||||
}
|
||||
}
|
||||
return arrayList;
|
||||
}
|
||||
}
|
||||
|
||||
/* loaded from: classes3.dex */
|
||||
public interface RegistrarNameRetriever<T> {
|
||||
List<String> retrieve(T t2);
|
||||
}
|
||||
|
||||
public ComponentDiscovery(T t2, RegistrarNameRetriever<T> registrarNameRetriever) {
|
||||
this.context = t2;
|
||||
this.retriever = registrarNameRetriever;
|
||||
}
|
||||
|
||||
public static ComponentDiscovery<Context> forContext(Context context, Class<? extends Service> cls) {
|
||||
return new ComponentDiscovery<>(context, new MetadataRegistrarNameRetriever(cls));
|
||||
}
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
public static ComponentRegistrar instantiate(String str) {
|
||||
try {
|
||||
Class<?> cls = Class.forName(str);
|
||||
if (ComponentRegistrar.class.isAssignableFrom(cls)) {
|
||||
return (ComponentRegistrar) cls.getDeclaredConstructor(new Class[0]).newInstance(new Object[0]);
|
||||
}
|
||||
throw new InvalidRegistrarException("Class " + str + " is not an instance of com.google.firebase.components.ComponentRegistrar");
|
||||
} catch (ClassNotFoundException unused) {
|
||||
Log.w(TAG, "Class " + str + " is not an found.");
|
||||
return null;
|
||||
} catch (IllegalAccessException e4) {
|
||||
throw new InvalidRegistrarException(w.o("Could not instantiate ", str, "."), e4);
|
||||
} catch (InstantiationException e5) {
|
||||
throw new InvalidRegistrarException(w.o("Could not instantiate ", str, "."), e5);
|
||||
} catch (NoSuchMethodException e6) {
|
||||
throw new InvalidRegistrarException(w.z("Could not instantiate ", str), e6);
|
||||
} catch (InvocationTargetException e7) {
|
||||
throw new InvalidRegistrarException(w.z("Could not instantiate ", str), e7);
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public List<ComponentRegistrar> discover() {
|
||||
ArrayList arrayList = new ArrayList();
|
||||
Iterator<String> it = this.retriever.retrieve(this.context).iterator();
|
||||
while (it.hasNext()) {
|
||||
try {
|
||||
ComponentRegistrar instantiate = instantiate(it.next());
|
||||
if (instantiate != null) {
|
||||
arrayList.add(instantiate);
|
||||
}
|
||||
} catch (InvalidRegistrarException e4) {
|
||||
Log.w(TAG, "Invalid component registrar.", e4);
|
||||
}
|
||||
}
|
||||
return arrayList;
|
||||
}
|
||||
|
||||
public List<Provider<ComponentRegistrar>> discoverLazy() {
|
||||
ArrayList arrayList = new ArrayList();
|
||||
Iterator<String> it = this.retriever.retrieve(this.context).iterator();
|
||||
while (it.hasNext()) {
|
||||
arrayList.add(new b(it.next(), 0));
|
||||
}
|
||||
return arrayList;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user