Rabbit-R1/android (non root)/java/sources/androidx/window/layout/ExtensionWindowLayoutInfoBackend.java

153 lines
9.8 KiB
Java
Raw Normal View History

2024-05-21 21:08:36 +00:00
package androidx.window.layout;
import android.app.Activity;
import androidx.core.util.Consumer;
import androidx.window.extensions.layout.WindowLayoutComponent;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Executor;
import java.util.concurrent.locks.ReentrantLock;
import kotlin.Metadata;
import kotlin.Unit;
import kotlin.jvm.internal.Intrinsics;
/* compiled from: ExtensionWindowLayoutInfoBackend.kt */
@Metadata(d1 = {"\u0000@\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010%\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0004\b\u0000\u0018\u00002\u00020\u0001:\u0001\u0015B\r\u0012\u0006\u0010\u0002\u001a\u00020\u0003¢\u0006\u0002\u0010\u0004J&\u0010\u000e\u001a\u00020\u000f2\u0006\u0010\u0010\u001a\u00020\u00072\u0006\u0010\u0011\u001a\u00020\u00122\f\u0010\u0013\u001a\b\u0012\u0004\u0012\u00020\r0\fH\u0016J\u0016\u0010\u0014\u001a\u00020\u000f2\f\u0010\u0013\u001a\b\u0012\u0004\u0012\u00020\r0\fH\u0016R\u001c\u0010\u0005\u001a\u000e\u0012\u0004\u0012\u00020\u0007\u0012\u0004\u0012\u00020\b0\u00068\u0002X\u0083\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u0002\u001a\u00020\u0003X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\t\u001a\u00020\nX\u0082\u0004¢\u0006\u0002\n\u0000R\"\u0010\u000b\u001a\u0014\u0012\n\u0012\b\u0012\u0004\u0012\u00020\r0\f\u0012\u0004\u0012\u00020\u00070\u00068\u0002X\u0083\u0004¢\u0006\u0002\n\u0000¨\u0006\u0016"}, d2 = {"Landroidx/window/layout/ExtensionWindowLayoutInfoBackend;", "Landroidx/window/layout/WindowBackend;", "component", "Landroidx/window/extensions/layout/WindowLayoutComponent;", "(Landroidx/window/extensions/layout/WindowLayoutComponent;)V", "activityToListeners", "", "Landroid/app/Activity;", "Landroidx/window/layout/ExtensionWindowLayoutInfoBackend$MulticastConsumer;", "extensionWindowBackendLock", "Ljava/util/concurrent/locks/ReentrantLock;", "listenerToActivity", "Landroidx/core/util/Consumer;", "Landroidx/window/layout/WindowLayoutInfo;", "registerLayoutChangeCallback", "", "activity", "executor", "Ljava/util/concurrent/Executor;", "callback", "unregisterLayoutChangeCallback", "MulticastConsumer", "window_release"}, k = 1, mv = {1, 6, 0}, xi = 48)
/* loaded from: classes2.dex */
public final class ExtensionWindowLayoutInfoBackend implements WindowBackend {
private final Map<Activity, MulticastConsumer> activityToListeners;
private final WindowLayoutComponent component;
private final ReentrantLock extensionWindowBackendLock;
private final Map<Consumer<WindowLayoutInfo>, Activity> listenerToActivity;
public ExtensionWindowLayoutInfoBackend(WindowLayoutComponent component) {
Intrinsics.checkNotNullParameter(component, "component");
this.component = component;
this.extensionWindowBackendLock = new ReentrantLock();
this.activityToListeners = new LinkedHashMap();
this.listenerToActivity = new LinkedHashMap();
}
@Override // androidx.window.layout.WindowBackend
public void registerLayoutChangeCallback(Activity activity, Executor executor, Consumer<WindowLayoutInfo> callback) {
Unit unit;
Intrinsics.checkNotNullParameter(activity, "activity");
Intrinsics.checkNotNullParameter(executor, "executor");
Intrinsics.checkNotNullParameter(callback, "callback");
ReentrantLock reentrantLock = this.extensionWindowBackendLock;
reentrantLock.lock();
try {
MulticastConsumer multicastConsumer = this.activityToListeners.get(activity);
if (multicastConsumer == null) {
unit = null;
} else {
multicastConsumer.addListener(callback);
this.listenerToActivity.put(callback, activity);
unit = Unit.INSTANCE;
}
if (unit == null) {
ExtensionWindowLayoutInfoBackend extensionWindowLayoutInfoBackend = this;
MulticastConsumer multicastConsumer2 = new MulticastConsumer(activity);
this.activityToListeners.put(activity, multicastConsumer2);
this.listenerToActivity.put(callback, activity);
multicastConsumer2.addListener(callback);
this.component.addWindowLayoutInfoListener(activity, multicastConsumer2);
}
Unit unit2 = Unit.INSTANCE;
} finally {
reentrantLock.unlock();
}
}
@Override // androidx.window.layout.WindowBackend
public void unregisterLayoutChangeCallback(Consumer<WindowLayoutInfo> callback) {
Intrinsics.checkNotNullParameter(callback, "callback");
ReentrantLock reentrantLock = this.extensionWindowBackendLock;
reentrantLock.lock();
try {
Activity activity = this.listenerToActivity.get(callback);
if (activity == null) {
return;
}
MulticastConsumer multicastConsumer = this.activityToListeners.get(activity);
if (multicastConsumer == null) {
return;
}
multicastConsumer.removeListener(callback);
if (multicastConsumer.isEmpty()) {
this.component.removeWindowLayoutInfoListener(multicastConsumer);
}
Unit unit = Unit.INSTANCE;
} finally {
reentrantLock.unlock();
}
}
/* compiled from: ExtensionWindowLayoutInfoBackend.kt */
@Metadata(d1 = {"\u0000<\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\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010#\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0002\b\u0004\n\u0002\u0010\u000b\n\u0002\b\u0002\b\u0003\u0018\u00002\b\u0012\u0004\u0012\u00020\u00020\u0001B\r\u0012\u0006\u0010\u0003\u001a\u00020\u0004¢\u0006\u0002\u0010\u0005J\u0010\u0010\r\u001a\u00020\u000e2\u0006\u0010\u000f\u001a\u00020\u0002H\u0016J\u0014\u0010\u0010\u001a\u00020\u000e2\f\u0010\u0011\u001a\b\u0012\u0004\u0012\u00020\u00070\fJ\u0006\u0010\u0012\u001a\u00020\u0013J\u0014\u0010\u0014\u001a\u00020\u000e2\f\u0010\u0011\u001a\b\u0012\u0004\u0012\u00020\u00070\fR\u000e\u0010\u0003\u001a\u00020\u0004X\u0082\u0004¢\u0006\u0002\n\u0000R\u0014\u0010\u0006\u001a\u0004\u0018\u00010\u00078\u0002@\u0002X\u0083\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\b\u001a\u00020\tX\u0082\u0004¢\u0006\u0002\n\u0000R\u001c\u0010\n\u001a\u000e\u0012\n\u0012\b\u0012\u0004\u0012\u00020\u00070\f0\u000b8\u0002X\u0083\u0004¢\u0006\u0002\n\u0000¨\u0006\u0015"}, d2 = {"Landroidx/window/layout/ExtensionWindowLayoutInfoBackend$MulticastConsumer;", "Ljava/util/function/Consumer;", "Landroidx/window/extensions/layout/WindowLayoutInfo;", "activity", "Landroid/app/Activity;", "(Landroid/app/Activity;)V", "lastKnownValue", "Landroidx/window/layout/WindowLayoutInfo;", "multicastConsumerLock", "Ljava/util/concurrent/locks/ReentrantLock;", "registeredListeners", "", "Landroidx/core/util/Consumer;", "accept", "", "value", "addListener", "listener", "isEmpty", "", "removeListener", "window_release"}, k = 1, mv = {1, 6, 0}, xi = 48)
/* loaded from: classes2.dex */
private static final class MulticastConsumer implements java.util.function.Consumer<androidx.window.extensions.layout.WindowLayoutInfo> {
private final Activity activity;
private WindowLayoutInfo lastKnownValue;
private final ReentrantLock multicastConsumerLock;
private final Set<Consumer<WindowLayoutInfo>> registeredListeners;
public MulticastConsumer(Activity activity) {
Intrinsics.checkNotNullParameter(activity, "activity");
this.activity = activity;
this.multicastConsumerLock = new ReentrantLock();
this.registeredListeners = new LinkedHashSet();
}
@Override // java.util.function.Consumer
public void accept(androidx.window.extensions.layout.WindowLayoutInfo value) {
Intrinsics.checkNotNullParameter(value, "value");
ReentrantLock reentrantLock = this.multicastConsumerLock;
reentrantLock.lock();
try {
this.lastKnownValue = ExtensionsWindowLayoutInfoAdapter.INSTANCE.translate$window_release(this.activity, value);
Iterator<T> it = this.registeredListeners.iterator();
while (it.hasNext()) {
((Consumer) it.next()).accept(this.lastKnownValue);
}
Unit unit = Unit.INSTANCE;
} finally {
reentrantLock.unlock();
}
}
public final void addListener(Consumer<WindowLayoutInfo> listener) {
Intrinsics.checkNotNullParameter(listener, "listener");
ReentrantLock reentrantLock = this.multicastConsumerLock;
reentrantLock.lock();
try {
WindowLayoutInfo windowLayoutInfo = this.lastKnownValue;
if (windowLayoutInfo != null) {
listener.accept(windowLayoutInfo);
}
this.registeredListeners.add(listener);
} finally {
reentrantLock.unlock();
}
}
public final void removeListener(Consumer<WindowLayoutInfo> listener) {
Intrinsics.checkNotNullParameter(listener, "listener");
ReentrantLock reentrantLock = this.multicastConsumerLock;
reentrantLock.lock();
try {
this.registeredListeners.remove(listener);
} finally {
reentrantLock.unlock();
}
}
public final boolean isEmpty() {
return this.registeredListeners.isEmpty();
}
}
}