package com.google.android.gms.common.api.internal; import android.os.Looper; import android.os.Message; import android.os.RemoteException; import android.util.Log; import android.util.Pair; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.common.api.PendingResult; import com.google.android.gms.common.api.Releasable; import com.google.android.gms.common.api.Result; import com.google.android.gms.common.api.ResultCallback; import com.google.android.gms.common.api.ResultTransform; import com.google.android.gms.common.api.Status; import com.google.android.gms.common.api.TransformedResult; import com.google.android.gms.common.internal.ICancelToken; import com.google.android.gms.common.internal.Preconditions; import com.google.errorprone.annotations.ResultIgnorabilityUnspecified; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; /* JADX INFO: compiled from: com.google.android.gms:play-services-base@@18.4.0 */ /* JADX INFO: loaded from: classes2.dex */ public abstract class BasePendingResult extends PendingResult { static final ThreadLocal zaa = new zaq(); public static final /* synthetic */ int zad = 0; private zas resultGuardian; protected final CallbackHandler zab; protected final WeakReference zac; private final Object zae; private final CountDownLatch zaf; private final ArrayList zag; private ResultCallback zah; private final AtomicReference zai; private Result zaj; private Status zak; private volatile boolean zal; private boolean zam; private boolean zan; private ICancelToken zao; private volatile zada zap; private boolean zaq; @Deprecated BasePendingResult() { this.zae = new Object(); this.zaf = new CountDownLatch(1); this.zag = new ArrayList(); this.zai = new AtomicReference(); this.zaq = false; this.zab = new CallbackHandler(Looper.getMainLooper()); this.zac = new WeakReference(null); } private final Result zaa() { Result result; synchronized (this.zae) { Preconditions.checkState(!this.zal, "Result has already been consumed."); Preconditions.checkState(isReady(), "Result is not ready."); result = this.zaj; this.zaj = null; this.zah = null; this.zal = true; } zadb zadbVar = (zadb) this.zai.getAndSet(null); if (zadbVar != null) { zadbVar.zaa.zab.remove(this); } return (Result) Preconditions.checkNotNull(result); } private final void zab(Result result) { this.zaj = result; this.zak = result.getStatus(); zar zarVar = null; this.zao = null; this.zaf.countDown(); if (this.zam) { this.zah = null; } else { ResultCallback resultCallback = this.zah; if (resultCallback != null) { this.zab.removeMessages(2); this.zab.zaa(resultCallback, zaa()); } else if (this.zaj instanceof Releasable) { this.resultGuardian = new zas(this, zarVar); } } ArrayList arrayList = this.zag; int size = arrayList.size(); for (int i = 0; i < size; i++) { ((PendingResult.StatusListener) arrayList.get(i)).onComplete(this.zak); } this.zag.clear(); } public static void zal(Result result) { if (result instanceof Releasable) { try { ((Releasable) result).release(); } catch (RuntimeException e) { Log.w("BasePendingResult", "Unable to release ".concat(String.valueOf(String.valueOf(result))), e); } } } @Override // com.google.android.gms.common.api.PendingResult public final void addStatusListener(PendingResult.StatusListener statusListener) { Preconditions.checkArgument(statusListener != null, "Callback cannot be null."); synchronized (this.zae) { if (isReady()) { statusListener.onComplete(this.zak); } else { this.zag.add(statusListener); } } } @Override // com.google.android.gms.common.api.PendingResult @ResultIgnorabilityUnspecified public final R await() { Preconditions.checkNotMainThread("await must not be called on the UI thread"); Preconditions.checkState(!this.zal, "Result has already been consumed"); Preconditions.checkState(this.zap == null, "Cannot await if then() has been called."); try { this.zaf.await(); } catch (InterruptedException unused) { forceFailureUnlessReady(Status.RESULT_INTERRUPTED); } Preconditions.checkState(isReady(), "Result is not ready."); return (R) zaa(); } @Override // com.google.android.gms.common.api.PendingResult public void cancel() { synchronized (this.zae) { if (!this.zam && !this.zal) { ICancelToken iCancelToken = this.zao; if (iCancelToken != null) { try { iCancelToken.cancel(); } catch (RemoteException unused) { } } zal(this.zaj); this.zam = true; zab(createFailedResult(Status.RESULT_CANCELED)); } } } protected abstract R createFailedResult(Status status); @Deprecated public final void forceFailureUnlessReady(Status status) { synchronized (this.zae) { if (!isReady()) { setResult(createFailedResult(status)); this.zan = true; } } } @Override // com.google.android.gms.common.api.PendingResult public final boolean isCanceled() { boolean z; synchronized (this.zae) { z = this.zam; } return z; } public final boolean isReady() { return this.zaf.getCount() == 0; } protected final void setCancelToken(ICancelToken iCancelToken) { synchronized (this.zae) { this.zao = iCancelToken; } } @Override // com.google.android.gms.common.api.PendingResult public final void setResultCallback(ResultCallback resultCallback) { synchronized (this.zae) { if (resultCallback == null) { this.zah = null; return; } boolean z = true; Preconditions.checkState(!this.zal, "Result has already been consumed."); if (this.zap != null) { z = false; } Preconditions.checkState(z, "Cannot set callbacks if then() has been called."); if (isCanceled()) { return; } if (isReady()) { this.zab.zaa(resultCallback, zaa()); } else { this.zah = resultCallback; } } } @Override // com.google.android.gms.common.api.PendingResult public final TransformedResult then(ResultTransform resultTransform) { TransformedResult transformedResultThen; Preconditions.checkState(!this.zal, "Result has already been consumed."); synchronized (this.zae) { Preconditions.checkState(this.zap == null, "Cannot call then() twice."); Preconditions.checkState(this.zah == null, "Cannot call then() if callbacks are set."); Preconditions.checkState(!this.zam, "Cannot call then() if result was canceled."); this.zaq = true; this.zap = new zada(this.zac); transformedResultThen = this.zap.then(resultTransform); if (isReady()) { this.zab.zaa(this.zap, zaa()); } else { this.zah = this.zap; } } return transformedResultThen; } public final void zak() { boolean z = true; if (!this.zaq && !((Boolean) zaa.get()).booleanValue()) { z = false; } this.zaq = z; } public final boolean zam() { boolean zIsCanceled; synchronized (this.zae) { if (((GoogleApiClient) this.zac.get()) == null || !this.zaq) { cancel(); } zIsCanceled = isCanceled(); } return zIsCanceled; } public final void zan(zadb zadbVar) { this.zai.set(zadbVar); } /* JADX INFO: compiled from: com.google.android.gms:play-services-base@@18.4.0 */ public static class CallbackHandler extends com.google.android.gms.internal.base.zau { public CallbackHandler() { super(Looper.getMainLooper()); } /* JADX WARN: Multi-variable type inference failed */ @Override // android.os.Handler public final void handleMessage(Message message) { int i = message.what; if (i != 1) { if (i == 2) { ((BasePendingResult) message.obj).forceFailureUnlessReady(Status.RESULT_TIMEOUT); return; } Log.wtf("BasePendingResult", "Don't know how to handle message: " + message.what, new Exception()); return; } Pair pair = (Pair) message.obj; ResultCallback resultCallback = (ResultCallback) pair.first; Result result = (Result) pair.second; try { resultCallback.onResult(result); } catch (RuntimeException e) { BasePendingResult.zal(result); throw e; } } public final void zaa(ResultCallback resultCallback, Result result) { int i = BasePendingResult.zad; sendMessage(obtainMessage(1, new Pair((ResultCallback) Preconditions.checkNotNull(resultCallback), result))); } public CallbackHandler(Looper looper) { super(looper); } } public final void setResult(R r) { synchronized (this.zae) { if (this.zan || this.zam) { zal(r); return; } isReady(); Preconditions.checkState(!isReady(), "Results have already been set"); Preconditions.checkState(!this.zal, "Result has already been consumed"); zab(r); } } @Deprecated protected BasePendingResult(Looper looper) { this.zae = new Object(); this.zaf = new CountDownLatch(1); this.zag = new ArrayList(); this.zai = new AtomicReference(); this.zaq = false; this.zab = new CallbackHandler(looper); this.zac = new WeakReference(null); } @Override // com.google.android.gms.common.api.PendingResult @ResultIgnorabilityUnspecified public final R await(long j, TimeUnit timeUnit) { if (j > 0) { Preconditions.checkNotMainThread("await must not be called on the UI thread when time is greater than zero."); } Preconditions.checkState(!this.zal, "Result has already been consumed."); Preconditions.checkState(this.zap == null, "Cannot await if then() has been called."); try { if (!this.zaf.await(j, timeUnit)) { forceFailureUnlessReady(Status.RESULT_TIMEOUT); } } catch (InterruptedException unused) { forceFailureUnlessReady(Status.RESULT_INTERRUPTED); } Preconditions.checkState(isReady(), "Result is not ready."); return (R) zaa(); } @Override // com.google.android.gms.common.api.PendingResult public final void setResultCallback(ResultCallback resultCallback, long j, TimeUnit timeUnit) { synchronized (this.zae) { if (resultCallback == null) { this.zah = null; return; } boolean z = true; Preconditions.checkState(!this.zal, "Result has already been consumed."); if (this.zap != null) { z = false; } Preconditions.checkState(z, "Cannot set callbacks if then() has been called."); if (isCanceled()) { return; } if (isReady()) { this.zab.zaa(resultCallback, zaa()); } else { this.zah = resultCallback; CallbackHandler callbackHandler = this.zab; callbackHandler.sendMessageDelayed(callbackHandler.obtainMessage(2, this), timeUnit.toMillis(j)); } } } protected BasePendingResult(GoogleApiClient googleApiClient) { this.zae = new Object(); this.zaf = new CountDownLatch(1); this.zag = new ArrayList(); this.zai = new AtomicReference(); this.zaq = false; this.zab = new CallbackHandler(googleApiClient != null ? googleApiClient.getLooper() : Looper.getMainLooper()); this.zac = new WeakReference(googleApiClient); } protected BasePendingResult(CallbackHandler callbackHandler) { this.zae = new Object(); this.zaf = new CountDownLatch(1); this.zag = new ArrayList(); this.zai = new AtomicReference(); this.zaq = false; this.zab = (CallbackHandler) Preconditions.checkNotNull(callbackHandler, "CallbackHandler must not be null"); this.zac = new WeakReference(null); } }