discord-jadx/app/src/main/java/androidx/browser/trusted/ConnectionHolder.java

110 lines
3.9 KiB
Java

package androidx.browser.trusted;
import android.content.ComponentName;
import android.content.ServiceConnection;
import android.os.IBinder;
import androidx.annotation.MainThread;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.concurrent.futures.CallbackToFutureAdapter;
import c.d.b.a.a;
import java.util.ArrayList;
import java.util.List;
import x.a.a.d.b;
public class ConnectionHolder implements ServiceConnection {
private static final int STATE_AWAITING_CONNECTION = 0;
private static final int STATE_CANCELLED = 3;
private static final int STATE_CONNECTED = 1;
private static final int STATE_DISCONNECTED = 2;
@Nullable
private Exception mCancellationException;
@NonNull
private final Runnable mCloseRunnable;
@NonNull
private List<CallbackToFutureAdapter.Completer<TrustedWebActivityServiceConnection>> mCompleters;
@Nullable
private TrustedWebActivityServiceConnection mService;
private int mState;
@NonNull
private final WrapperFactory mWrapperFactory;
public static class WrapperFactory {
@NonNull
public TrustedWebActivityServiceConnection create(ComponentName componentName, IBinder iBinder) {
return new TrustedWebActivityServiceConnection(b.a.asInterface(iBinder), componentName);
}
}
@MainThread
public ConnectionHolder(@NonNull Runnable runnable) {
this(runnable, new WrapperFactory());
}
@MainThread
public ConnectionHolder(@NonNull Runnable runnable, @NonNull WrapperFactory wrapperFactory) {
this.mState = 0;
this.mCompleters = new ArrayList();
this.mCloseRunnable = runnable;
this.mWrapperFactory = wrapperFactory;
}
public /* synthetic */ Object a(CallbackToFutureAdapter.Completer completer) {
int i = this.mState;
if (i == 0) {
this.mCompleters.add(completer);
} else if (i == 1) {
TrustedWebActivityServiceConnection trustedWebActivityServiceConnection = this.mService;
if (trustedWebActivityServiceConnection != null) {
completer.set(trustedWebActivityServiceConnection);
} else {
throw new IllegalStateException("ConnectionHolder state is incorrect.");
}
} else if (i == 2) {
throw new IllegalStateException("Service has been disconnected.");
} else if (i != 3) {
throw new IllegalStateException("Connection state is invalid");
} else {
throw this.mCancellationException;
}
StringBuilder L = a.L("ConnectionHolder, state = ");
L.append(this.mState);
return L.toString();
}
@MainThread
public void cancel(@NonNull Exception exc) {
for (CallbackToFutureAdapter.Completer<TrustedWebActivityServiceConnection> completer : this.mCompleters) {
completer.setException(exc);
}
this.mCompleters.clear();
this.mCloseRunnable.run();
this.mState = 3;
this.mCancellationException = exc;
}
@NonNull
@MainThread
public c.i.b.d.a.a<TrustedWebActivityServiceConnection> getServiceWrapper() {
return CallbackToFutureAdapter.getFuture(new y.a.b.a(this));
}
@Override // android.content.ServiceConnection
@MainThread
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
this.mService = this.mWrapperFactory.create(componentName, iBinder);
for (CallbackToFutureAdapter.Completer<TrustedWebActivityServiceConnection> completer : this.mCompleters) {
completer.set(this.mService);
}
this.mCompleters.clear();
this.mState = 1;
}
@Override // android.content.ServiceConnection
@MainThread
public void onServiceDisconnected(ComponentName componentName) {
this.mService = null;
this.mCloseRunnable.run();
this.mState = 2;
}
}