Initial import of ADIF API reverse-engineering toolkit
This commit is contained in:
@@ -0,0 +1,340 @@
|
||||
package com.google.firebase.components;
|
||||
|
||||
import android.util.Log;
|
||||
import com.google.firebase.dynamicloading.ComponentLoader;
|
||||
import com.google.firebase.events.Publisher;
|
||||
import com.google.firebase.events.Subscriber;
|
||||
import com.google.firebase.inject.Deferred;
|
||||
import com.google.firebase.inject.Provider;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
/* loaded from: classes3.dex */
|
||||
public class ComponentRuntime implements ComponentContainer, ComponentLoader {
|
||||
private static final Provider<Set<Object>> EMPTY_PROVIDER = new g(1);
|
||||
private final ComponentRegistrarProcessor componentRegistrarProcessor;
|
||||
private final Map<Component<?>, Provider<?>> components;
|
||||
private final AtomicReference<Boolean> eagerComponentsInitializedWith;
|
||||
private final EventBus eventBus;
|
||||
private final Map<Qualified<?>, Provider<?>> lazyInstanceMap;
|
||||
private final Map<Qualified<?>, LazySet<?>> lazySetMap;
|
||||
private Set<String> processedCoroutineDispatcherInterfaces;
|
||||
private final List<Provider<ComponentRegistrar>> unprocessedRegistrarProviders;
|
||||
|
||||
/* loaded from: classes3.dex */
|
||||
public static final class Builder {
|
||||
private final Executor defaultExecutor;
|
||||
private final List<Provider<ComponentRegistrar>> lazyRegistrars = new ArrayList();
|
||||
private final List<Component<?>> additionalComponents = new ArrayList();
|
||||
private ComponentRegistrarProcessor componentRegistrarProcessor = ComponentRegistrarProcessor.NOOP;
|
||||
|
||||
public Builder(Executor executor) {
|
||||
this.defaultExecutor = executor;
|
||||
}
|
||||
|
||||
public static /* synthetic */ ComponentRegistrar lambda$addComponentRegistrar$0(ComponentRegistrar componentRegistrar) {
|
||||
return componentRegistrar;
|
||||
}
|
||||
|
||||
public Builder addComponent(Component<?> component) {
|
||||
this.additionalComponents.add(component);
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder addComponentRegistrar(ComponentRegistrar componentRegistrar) {
|
||||
this.lazyRegistrars.add(new c(componentRegistrar, 1));
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder addLazyComponentRegistrars(Collection<Provider<ComponentRegistrar>> collection) {
|
||||
this.lazyRegistrars.addAll(collection);
|
||||
return this;
|
||||
}
|
||||
|
||||
public ComponentRuntime build() {
|
||||
return new ComponentRuntime(this.defaultExecutor, this.lazyRegistrars, this.additionalComponents, this.componentRegistrarProcessor);
|
||||
}
|
||||
|
||||
public Builder setProcessor(ComponentRegistrarProcessor componentRegistrarProcessor) {
|
||||
this.componentRegistrarProcessor = componentRegistrarProcessor;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
public /* synthetic */ ComponentRuntime(Executor executor, Iterable iterable, Collection collection, ComponentRegistrarProcessor componentRegistrarProcessor, AnonymousClass1 anonymousClass1) {
|
||||
this(executor, iterable, collection, componentRegistrarProcessor);
|
||||
}
|
||||
|
||||
public static Builder builder(Executor executor) {
|
||||
return new Builder(executor);
|
||||
}
|
||||
|
||||
private void discoverComponents(List<Component<?>> list) {
|
||||
ArrayList arrayList = new ArrayList();
|
||||
synchronized (this) {
|
||||
Iterator<Provider<ComponentRegistrar>> it = this.unprocessedRegistrarProviders.iterator();
|
||||
while (it.hasNext()) {
|
||||
try {
|
||||
ComponentRegistrar componentRegistrar = it.next().get();
|
||||
if (componentRegistrar != null) {
|
||||
list.addAll(this.componentRegistrarProcessor.processRegistrar(componentRegistrar));
|
||||
it.remove();
|
||||
}
|
||||
} catch (InvalidRegistrarException e4) {
|
||||
it.remove();
|
||||
Log.w("ComponentDiscovery", "Invalid component registrar.", e4);
|
||||
}
|
||||
}
|
||||
Iterator<Component<?>> it2 = list.iterator();
|
||||
while (it2.hasNext()) {
|
||||
Object[] array = it2.next().getProvidedInterfaces().toArray();
|
||||
int length = array.length;
|
||||
int i = 0;
|
||||
while (true) {
|
||||
if (i < length) {
|
||||
Object obj = array[i];
|
||||
if (obj.toString().contains("kotlinx.coroutines.CoroutineDispatcher")) {
|
||||
if (this.processedCoroutineDispatcherInterfaces.contains(obj.toString())) {
|
||||
it2.remove();
|
||||
break;
|
||||
}
|
||||
this.processedCoroutineDispatcherInterfaces.add(obj.toString());
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.components.isEmpty()) {
|
||||
CycleDetector.detect(list);
|
||||
} else {
|
||||
ArrayList arrayList2 = new ArrayList(this.components.keySet());
|
||||
arrayList2.addAll(list);
|
||||
CycleDetector.detect(arrayList2);
|
||||
}
|
||||
for (final Component<?> component : list) {
|
||||
this.components.put(component, new Lazy(new Provider() { // from class: com.google.firebase.components.d
|
||||
@Override // com.google.firebase.inject.Provider
|
||||
public final Object get() {
|
||||
Object lambda$discoverComponents$0;
|
||||
lambda$discoverComponents$0 = ComponentRuntime.this.lambda$discoverComponents$0(component);
|
||||
return lambda$discoverComponents$0;
|
||||
}
|
||||
}));
|
||||
}
|
||||
arrayList.addAll(processInstanceComponents(list));
|
||||
arrayList.addAll(processSetComponents());
|
||||
processDependencies();
|
||||
}
|
||||
Iterator it3 = arrayList.iterator();
|
||||
while (it3.hasNext()) {
|
||||
((Runnable) it3.next()).run();
|
||||
}
|
||||
maybeInitializeEagerComponents();
|
||||
}
|
||||
|
||||
private void doInitializeEagerComponents(Map<Component<?>, Provider<?>> map, boolean z3) {
|
||||
for (Map.Entry<Component<?>, Provider<?>> entry : map.entrySet()) {
|
||||
Component<?> key = entry.getKey();
|
||||
Provider<?> value = entry.getValue();
|
||||
if (key.isAlwaysEager() || (key.isEagerInDefaultApp() && z3)) {
|
||||
value.get();
|
||||
}
|
||||
}
|
||||
this.eventBus.enablePublishingAndFlushPending();
|
||||
}
|
||||
|
||||
private static <T> List<T> iterableToList(Iterable<T> iterable) {
|
||||
ArrayList arrayList = new ArrayList();
|
||||
Iterator<T> it = iterable.iterator();
|
||||
while (it.hasNext()) {
|
||||
arrayList.add(it.next());
|
||||
}
|
||||
return arrayList;
|
||||
}
|
||||
|
||||
public /* synthetic */ Object lambda$discoverComponents$0(Component component) {
|
||||
return component.getFactory().create(new RestrictedComponentContainer(component, this));
|
||||
}
|
||||
|
||||
public static /* synthetic */ ComponentRegistrar lambda$toProviders$1(ComponentRegistrar componentRegistrar) {
|
||||
return componentRegistrar;
|
||||
}
|
||||
|
||||
private void maybeInitializeEagerComponents() {
|
||||
Boolean bool = this.eagerComponentsInitializedWith.get();
|
||||
if (bool != null) {
|
||||
doInitializeEagerComponents(this.components, bool.booleanValue());
|
||||
}
|
||||
}
|
||||
|
||||
private void processDependencies() {
|
||||
for (Component<?> component : this.components.keySet()) {
|
||||
for (Dependency dependency : component.getDependencies()) {
|
||||
if (dependency.isSet() && !this.lazySetMap.containsKey(dependency.getInterface())) {
|
||||
this.lazySetMap.put(dependency.getInterface(), LazySet.fromCollection(Collections.EMPTY_SET));
|
||||
} else if (this.lazyInstanceMap.containsKey(dependency.getInterface())) {
|
||||
continue;
|
||||
} else {
|
||||
if (dependency.isRequired()) {
|
||||
throw new MissingDependencyException("Unsatisfied dependency for component " + component + ": " + dependency.getInterface());
|
||||
}
|
||||
if (!dependency.isSet()) {
|
||||
this.lazyInstanceMap.put(dependency.getInterface(), OptionalProvider.empty());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List<Runnable> processInstanceComponents(List<Component<?>> list) {
|
||||
ArrayList arrayList = new ArrayList();
|
||||
for (Component<?> component : list) {
|
||||
if (component.isValue()) {
|
||||
Provider<?> provider = this.components.get(component);
|
||||
for (Qualified<? super Object> qualified : component.getProvidedInterfaces()) {
|
||||
if (this.lazyInstanceMap.containsKey(qualified)) {
|
||||
arrayList.add(new e(0, (OptionalProvider) this.lazyInstanceMap.get(qualified), provider));
|
||||
} else {
|
||||
this.lazyInstanceMap.put(qualified, provider);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return arrayList;
|
||||
}
|
||||
|
||||
private List<Runnable> processSetComponents() {
|
||||
ArrayList arrayList = new ArrayList();
|
||||
HashMap hashMap = new HashMap();
|
||||
for (Map.Entry<Component<?>, Provider<?>> entry : this.components.entrySet()) {
|
||||
Component<?> key = entry.getKey();
|
||||
if (!key.isValue()) {
|
||||
Provider<?> value = entry.getValue();
|
||||
for (Qualified<? super Object> qualified : key.getProvidedInterfaces()) {
|
||||
if (!hashMap.containsKey(qualified)) {
|
||||
hashMap.put(qualified, new HashSet());
|
||||
}
|
||||
((Set) hashMap.get(qualified)).add(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (Map.Entry entry2 : hashMap.entrySet()) {
|
||||
if (this.lazySetMap.containsKey(entry2.getKey())) {
|
||||
LazySet<?> lazySet = this.lazySetMap.get(entry2.getKey());
|
||||
Iterator it = ((Set) entry2.getValue()).iterator();
|
||||
while (it.hasNext()) {
|
||||
arrayList.add(new e(1, lazySet, (Provider) it.next()));
|
||||
}
|
||||
} else {
|
||||
this.lazySetMap.put((Qualified) entry2.getKey(), LazySet.fromCollection((Collection) entry2.getValue()));
|
||||
}
|
||||
}
|
||||
return arrayList;
|
||||
}
|
||||
|
||||
private static Iterable<Provider<ComponentRegistrar>> toProviders(Iterable<ComponentRegistrar> iterable) {
|
||||
ArrayList arrayList = new ArrayList();
|
||||
Iterator<ComponentRegistrar> it = iterable.iterator();
|
||||
while (it.hasNext()) {
|
||||
arrayList.add(new c(it.next(), 0));
|
||||
}
|
||||
return arrayList;
|
||||
}
|
||||
|
||||
public Collection<Component<?>> getAllComponentsForTest() {
|
||||
return this.components.keySet();
|
||||
}
|
||||
|
||||
@Override // com.google.firebase.components.ComponentContainer
|
||||
public <T> Deferred<T> getDeferred(Qualified<T> qualified) {
|
||||
Provider<T> provider = getProvider(qualified);
|
||||
return provider == null ? OptionalProvider.empty() : provider instanceof OptionalProvider ? (OptionalProvider) provider : OptionalProvider.of(provider);
|
||||
}
|
||||
|
||||
@Override // com.google.firebase.components.ComponentContainer
|
||||
public synchronized <T> Provider<T> getProvider(Qualified<T> qualified) {
|
||||
Preconditions.checkNotNull(qualified, "Null interface requested.");
|
||||
return (Provider) this.lazyInstanceMap.get(qualified);
|
||||
}
|
||||
|
||||
public void initializeAllComponentsForTests() {
|
||||
Iterator<Provider<?>> it = this.components.values().iterator();
|
||||
while (it.hasNext()) {
|
||||
it.next().get();
|
||||
}
|
||||
}
|
||||
|
||||
public void initializeEagerComponents(boolean z3) {
|
||||
HashMap hashMap;
|
||||
AtomicReference<Boolean> atomicReference = this.eagerComponentsInitializedWith;
|
||||
Boolean valueOf = Boolean.valueOf(z3);
|
||||
while (!atomicReference.compareAndSet(null, valueOf)) {
|
||||
if (atomicReference.get() != null) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
synchronized (this) {
|
||||
hashMap = new HashMap(this.components);
|
||||
}
|
||||
doInitializeEagerComponents(hashMap, z3);
|
||||
}
|
||||
|
||||
@Override // com.google.firebase.components.ComponentContainer
|
||||
public synchronized <T> Provider<Set<T>> setOfProvider(Qualified<T> qualified) {
|
||||
LazySet<?> lazySet = this.lazySetMap.get(qualified);
|
||||
if (lazySet != null) {
|
||||
return lazySet;
|
||||
}
|
||||
return (Provider<Set<T>>) EMPTY_PROVIDER;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public ComponentRuntime(Executor executor, Iterable<ComponentRegistrar> iterable, Component<?>... componentArr) {
|
||||
this(executor, toProviders(iterable), Arrays.asList(componentArr), ComponentRegistrarProcessor.NOOP);
|
||||
}
|
||||
|
||||
private ComponentRuntime(Executor executor, Iterable<Provider<ComponentRegistrar>> iterable, Collection<Component<?>> collection, ComponentRegistrarProcessor componentRegistrarProcessor) {
|
||||
this.components = new HashMap();
|
||||
this.lazyInstanceMap = new HashMap();
|
||||
this.lazySetMap = new HashMap();
|
||||
this.processedCoroutineDispatcherInterfaces = new HashSet();
|
||||
this.eagerComponentsInitializedWith = new AtomicReference<>();
|
||||
EventBus eventBus = new EventBus(executor);
|
||||
this.eventBus = eventBus;
|
||||
this.componentRegistrarProcessor = componentRegistrarProcessor;
|
||||
ArrayList arrayList = new ArrayList();
|
||||
arrayList.add(Component.of(eventBus, (Class<EventBus>) EventBus.class, (Class<? super EventBus>[]) new Class[]{Subscriber.class, Publisher.class}));
|
||||
arrayList.add(Component.of(this, (Class<ComponentRuntime>) ComponentLoader.class, (Class<? super ComponentRuntime>[]) new Class[0]));
|
||||
for (Component<?> component : collection) {
|
||||
if (component != null) {
|
||||
arrayList.add(component);
|
||||
}
|
||||
}
|
||||
this.unprocessedRegistrarProviders = iterableToList(iterable);
|
||||
discoverComponents(arrayList);
|
||||
}
|
||||
|
||||
@Override // com.google.firebase.dynamicloading.ComponentLoader
|
||||
public void discoverComponents() {
|
||||
synchronized (this) {
|
||||
try {
|
||||
if (this.unprocessedRegistrarProviders.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
discoverComponents(new ArrayList());
|
||||
} catch (Throwable th) {
|
||||
throw th;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user