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> 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 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 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 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; } }