CrackMe.apk
Download file
package com.th3rdwave.safeareacontext;
import android.content.Context;
import android.util.Log;
import android.view.View;
import android.view.ViewParent;
import android.view.ViewTreeObserver;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.uimanager.FabricViewStateManager;
import com.facebook.react.uimanager.UIManagerModule;
import com.facebook.react.views.view.ReactViewGroup;
import java.util.EnumSet;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import kotlin.Metadata;
import kotlin.Unit;
import kotlin.jvm.internal.Intrinsics;
import kotlin.jvm.internal.Ref;
@Metadata(d1 = {"\u0000L\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010\u000b\n\u0000\n\u0002\u0010\u0002\n\u0002\b\t\u0018\u00002\u00020\u00012\u00020\u00022\u00020\u0003B\u000f\u0012\b\u0010\u0004\u001a\u0004\u0018\u00010\u0005¢\u0006\u0002\u0010\u0006J\b\u0010\u0012\u001a\u00020\u0011H\u0002J\b\u0010\u0013\u001a\u00020\u000bH\u0016J\b\u0010\u0014\u001a\u00020\u0015H\u0002J\b\u0010\u0016\u001a\u00020\u0017H\u0014J\b\u0010\u0018\u001a\u00020\u0017H\u0014J\b\u0010\u0019\u001a\u00020\u0015H\u0016J\u0016\u0010\u001a\u001a\u00020\u00172\u000e\u0010\u001b\u001a\n\u0012\u0004\u0012\u00020\t\u0018\u00010\bJ\u000e\u0010\u001c\u001a\u00020\u00172\u0006\u0010\u001d\u001a\u00020\u000fJ\b\u0010\u001e\u001a\u00020\u0017H\u0002J\b\u0010\u001f\u001a\u00020\u0017H\u0002R\u0016\u0010\u0007\u001a\n\u0012\u0004\u0012\u00020\t\u0018\u00010\bX\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\n\u001a\u00020\u000bX\u0004¢\u0006\u0002\n\u0000R\u0010\u0010\f\u001a\u0004\u0018\u00010\rX\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u000e\u001a\u00020\u000fX\u000e¢\u0006\u0002\n\u0000R\u0010\u0010\u0010\u001a\u0004\u0018\u00010\u0011X\u000e¢\u0006\u0002\n\u0000¨\u0006 "}, d2 = {"Lcom/th3rdwave/safeareacontext/SafeAreaView;", "Lcom/facebook/react/views/view/ReactViewGroup;", "Landroid/view/ViewTreeObserver$OnPreDrawListener;", "Lcom/facebook/react/uimanager/FabricViewStateManager$HasFabricViewStateManager;", "context", "Landroid/content/Context;", "(Landroid/content/Context;)V", "mEdges", "Ljava/util/EnumSet;", "Lcom/th3rdwave/safeareacontext/SafeAreaViewEdges;", "mFabricViewStateManager", "Lcom/facebook/react/uimanager/FabricViewStateManager;", "mInsets", "Lcom/th3rdwave/safeareacontext/EdgeInsets;", "mMode", "Lcom/th3rdwave/safeareacontext/SafeAreaViewMode;", "mProviderView", "Landroid/view/View;", "findProvider", "getFabricViewStateManager", "maybeUpdateInsets", "", "onAttachedToWindow", "", "onDetachedFromWindow", "onPreDraw", "setEdges", "edges", "setMode", "mode", "updateInsets", "waitForReactLayout", "react-native-safe-area-context_release"}, k = 1, mv = {1, 6, 0}, xi = 48)
/* compiled from: SafeAreaView.kt */
public final class SafeAreaView extends ReactViewGroup implements ViewTreeObserver.OnPreDrawListener, FabricViewStateManager.HasFabricViewStateManager {
private EnumSet<SafeAreaViewEdges> mEdges;
private final FabricViewStateManager mFabricViewStateManager = new FabricViewStateManager();
private EdgeInsets mInsets;
private SafeAreaViewMode mMode = SafeAreaViewMode.PADDING;
private View mProviderView;
public SafeAreaView(Context context) {
super(context);
}
public FabricViewStateManager getFabricViewStateManager() {
return this.mFabricViewStateManager;
}
private final void updateInsets() {
EdgeInsets edgeInsets = this.mInsets;
if (edgeInsets != null) {
EnumSet<SafeAreaViewEdges> enumSet = this.mEdges;
if (enumSet == null) {
enumSet = EnumSet.allOf(SafeAreaViewEdges.class);
}
if (this.mFabricViewStateManager.hasStateWrapper()) {
this.mFabricViewStateManager.setState(new SafeAreaView$$ExternalSyntheticLambda0(edgeInsets));
return;
}
SafeAreaViewMode safeAreaViewMode = this.mMode;
Intrinsics.checkNotNullExpressionValue(enumSet, "edges");
SafeAreaViewLocalData safeAreaViewLocalData = new SafeAreaViewLocalData(edgeInsets, safeAreaViewMode, enumSet);
ReactContext reactContext = UIManagerHelperCompatKt.getReactContext(this);
UIManagerModule uIManagerModule = (UIManagerModule) reactContext.getNativeModule(UIManagerModule.class);
if (uIManagerModule != null) {
uIManagerModule.setViewLocalData(getId(), safeAreaViewLocalData);
reactContext.runOnNativeModulesQueueThread(new SafeAreaView$$ExternalSyntheticLambda1(uIManagerModule));
waitForReactLayout();
}
}
}
/* access modifiers changed from: private */
/* renamed from: updateInsets$lambda-0 reason: not valid java name */
public static final WritableMap m194updateInsets$lambda0(EdgeInsets edgeInsets) {
WritableMap createMap = Arguments.createMap();
createMap.putMap("insets", SerializationUtilsKt.edgeInsetsToJsMap(edgeInsets));
return createMap;
}
/* access modifiers changed from: private */
/* renamed from: updateInsets$lambda-1 reason: not valid java name */
public static final void m195updateInsets$lambda1(UIManagerModule uIManagerModule) {
uIManagerModule.getUIImplementation().dispatchViewUpdates(-1);
}
private final void waitForReactLayout() {
Ref.BooleanRef booleanRef = new Ref.BooleanRef();
ReentrantLock reentrantLock = new ReentrantLock();
Condition newCondition = reentrantLock.newCondition();
long nanoTime = System.nanoTime();
UIManagerHelperCompatKt.getReactContext(this).runOnNativeModulesQueueThread(new SafeAreaView$$ExternalSyntheticLambda2(reentrantLock, booleanRef, newCondition));
Lock lock = reentrantLock;
lock.lock();
long j = 0;
while (!booleanRef.element && j < 500000000) {
try {
newCondition.awaitNanos(500000000);
} catch (InterruptedException unused) {
booleanRef.element = true;
} catch (Throwable th) {
lock.unlock();
throw th;
}
j += System.nanoTime() - nanoTime;
}
Unit unit = Unit.INSTANCE;
lock.unlock();
if (j >= 500000000) {
Log.w("SafeAreaView", "Timed out waiting for layout.");
}
}
/* access modifiers changed from: private */
/* renamed from: waitForReactLayout$lambda-3 reason: not valid java name */
public static final void m196waitForReactLayout$lambda3(ReentrantLock reentrantLock, Ref.BooleanRef booleanRef, Condition condition) {
Intrinsics.checkNotNullParameter(reentrantLock, "$lock");
Intrinsics.checkNotNullParameter(booleanRef, "$done");
Lock lock = reentrantLock;
lock.lock();
try {
if (!booleanRef.element) {
booleanRef.element = true;
condition.signal();
}
Unit unit = Unit.INSTANCE;
} finally {
lock.unlock();
}
}
public final void setMode(SafeAreaViewMode safeAreaViewMode) {
Intrinsics.checkNotNullParameter(safeAreaViewMode, "mode");
this.mMode = safeAreaViewMode;
updateInsets();
}
public final void setEdges(EnumSet<SafeAreaViewEdges> enumSet) {
this.mEdges = enumSet;
updateInsets();
}
private final boolean maybeUpdateInsets() {
EdgeInsets safeAreaInsets;
View view = this.mProviderView;
if (view == null || (safeAreaInsets = SafeAreaUtilsKt.getSafeAreaInsets(view)) == null || Intrinsics.areEqual((Object) this.mInsets, (Object) safeAreaInsets)) {
return false;
}
this.mInsets = safeAreaInsets;
updateInsets();
return true;
}
private final View findProvider() {
for (ViewParent parent = getParent(); parent != null; parent = parent.getParent()) {
if (parent instanceof SafeAreaProvider) {
return (View) parent;
}
}
return this;
}
/* access modifiers changed from: protected */
public void onAttachedToWindow() {
ViewTreeObserver viewTreeObserver;
super.onAttachedToWindow();
View findProvider = findProvider();
this.mProviderView = findProvider;
if (!(findProvider == null || (viewTreeObserver = findProvider.getViewTreeObserver()) == null)) {
viewTreeObserver.addOnPreDrawListener(this);
}
maybeUpdateInsets();
}
/* access modifiers changed from: protected */
public void onDetachedFromWindow() {
ViewTreeObserver viewTreeObserver;
super.onDetachedFromWindow();
View view = this.mProviderView;
if (!(view == null || (viewTreeObserver = view.getViewTreeObserver()) == null)) {
viewTreeObserver.removeOnPreDrawListener(this);
}
this.mProviderView = null;
}
public boolean onPreDraw() {
boolean maybeUpdateInsets = maybeUpdateInsets();
if (maybeUpdateInsets) {
requestLayout();
}
return !maybeUpdateInsets;
}
}
Download file