zzabx.java 8.41 KB
package com.google.android.gms.internal;

import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.support.annotation.NonNull;
import android.support.annotation.WorkerThread;
import android.util.Log;
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.ResultCallbacks;
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.zzac;
import java.lang.ref.WeakReference;
import java.util.concurrent.ExecutorService;

public class zzabx<R extends Result>
  extends TransformedResult<R>
  implements ResultCallback<R>
{
  volatile ResultCallbacks<? super R> a = null;
  private ResultTransform<? super R, ? extends Result> b = null;
  private zzabx<? extends Result> c = null;
  private PendingResult<R> d = null;
  private final Object e = new Object();
  private Status f = null;
  private final WeakReference<GoogleApiClient> g;
  private final a h;
  private boolean i = false;
  
  public zzabx(WeakReference<GoogleApiClient> paramWeakReference)
  {
    zzac.zzb(paramWeakReference, "GoogleApiClient reference must not be null");
    this.g = paramWeakReference;
    paramWeakReference = (GoogleApiClient)this.g.get();
    if (paramWeakReference != null) {}
    for (paramWeakReference = paramWeakReference.getLooper();; paramWeakReference = Looper.getMainLooper())
    {
      this.h = new a(paramWeakReference);
      return;
    }
  }
  
  private void a()
  {
    if ((this.b == null) && (this.a == null)) {}
    do
    {
      return;
      GoogleApiClient localGoogleApiClient = (GoogleApiClient)this.g.get();
      if ((!this.i) && (this.b != null) && (localGoogleApiClient != null))
      {
        localGoogleApiClient.zza(this);
        this.i = true;
      }
      if (this.f != null)
      {
        b(this.f);
        return;
      }
    } while (this.d == null);
    this.d.setResultCallback(this);
  }
  
  private void a(Status paramStatus)
  {
    synchronized (this.e)
    {
      this.f = paramStatus;
      b(this.f);
      return;
    }
  }
  
  private static void b(Result paramResult)
  {
    if ((paramResult instanceof Releasable)) {}
    try
    {
      ((Releasable)paramResult).release();
      return;
    }
    catch (RuntimeException localRuntimeException)
    {
      paramResult = String.valueOf(paramResult);
      Log.w("TransformedResultImpl", String.valueOf(paramResult).length() + 18 + "Unable to release " + paramResult, localRuntimeException);
    }
  }
  
  private void b(Status paramStatus)
  {
    synchronized (this.e)
    {
      if (this.b != null)
      {
        paramStatus = this.b.onFailure(paramStatus);
        zzac.zzb(paramStatus, "onFailure must not return null");
        this.c.a(paramStatus);
      }
      while (!b()) {
        return;
      }
      this.a.onFailure(paramStatus);
    }
  }
  
  private boolean b()
  {
    GoogleApiClient localGoogleApiClient = (GoogleApiClient)this.g.get();
    return (this.a != null) && (localGoogleApiClient != null);
  }
  
  public void andFinally(@NonNull ResultCallbacks<? super R> paramResultCallbacks)
  {
    boolean bool2 = true;
    for (;;)
    {
      synchronized (this.e)
      {
        if (this.a == null)
        {
          bool1 = true;
          zzac.zza(bool1, "Cannot call andFinally() twice.");
          if (this.b != null) {
            break label65;
          }
          bool1 = bool2;
          zzac.zza(bool1, "Cannot call then() and andFinally() on the same TransformedResult.");
          this.a = paramResultCallbacks;
          a();
          return;
        }
      }
      boolean bool1 = false;
      continue;
      label65:
      bool1 = false;
    }
  }
  
  public void onResult(final R paramR)
  {
    for (;;)
    {
      synchronized (this.e)
      {
        if (paramR.getStatus().isSuccess())
        {
          if (this.b != null)
          {
            zzabo.zzwv().submit(new Runnable()
            {
              @WorkerThread
              public final void run()
              {
                try
                {
                  zzaaf.a.set(Boolean.valueOf(true));
                  Object localObject1 = zzabx.a(zzabx.this).onSuccess(paramR);
                  zzabx.b(zzabx.this).sendMessage(zzabx.b(zzabx.this).obtainMessage(0, localObject1));
                  zzaaf.a.set(Boolean.valueOf(false));
                  zzabx.a(paramR);
                  localObject1 = (GoogleApiClient)zzabx.c(zzabx.this).get();
                  if (localObject1 != null) {
                    ((GoogleApiClient)localObject1).zzb(zzabx.this);
                  }
                  return;
                }
                catch (RuntimeException localRuntimeException)
                {
                  zzabx.b(zzabx.this).sendMessage(zzabx.b(zzabx.this).obtainMessage(1, localRuntimeException));
                  GoogleApiClient localGoogleApiClient1;
                  return;
                }
                finally
                {
                  zzaaf.a.set(Boolean.valueOf(false));
                  zzabx.a(paramR);
                  GoogleApiClient localGoogleApiClient2 = (GoogleApiClient)zzabx.c(zzabx.this).get();
                  if (localGoogleApiClient2 != null) {
                    localGoogleApiClient2.zzb(zzabx.this);
                  }
                }
              }
            });
            return;
          }
          if (!b()) {
            continue;
          }
          this.a.onSuccess(paramR);
        }
      }
      a(paramR.getStatus());
      b(paramR);
    }
  }
  
  @NonNull
  public <S extends Result> TransformedResult<S> then(@NonNull ResultTransform<? super R, ? extends S> paramResultTransform)
  {
    boolean bool2 = true;
    for (;;)
    {
      synchronized (this.e)
      {
        if (this.b == null)
        {
          bool1 = true;
          zzac.zza(bool1, "Cannot call then() twice.");
          if (this.a != null) {
            break label83;
          }
          bool1 = bool2;
          zzac.zza(bool1, "Cannot call then() and andFinally() on the same TransformedResult.");
          this.b = paramResultTransform;
          paramResultTransform = new zzabx(this.g);
          this.c = paramResultTransform;
          a();
          return paramResultTransform;
        }
      }
      boolean bool1 = false;
      continue;
      label83:
      bool1 = false;
    }
  }
  
  public void zza(PendingResult<?> paramPendingResult)
  {
    synchronized (this.e)
    {
      this.d = paramPendingResult;
      a();
      return;
    }
  }
  
  final class a
    extends Handler
  {
    public a(Looper paramLooper)
    {
      super();
    }
    
    public final void handleMessage(Message paramMessage)
    {
      switch (paramMessage.what)
      {
      default: 
        int i = paramMessage.what;
        Log.e("TransformedResultImpl", 70 + "TransformationResultHandler received unknown message type: " + i);
        return;
      case 0: 
        PendingResult localPendingResult1 = (PendingResult)paramMessage.obj;
        paramMessage = zzabx.d(zzabx.this);
        if (localPendingResult1 == null) {}
        for (;;)
        {
          try
          {
            zzabx.a(zzabx.e(zzabx.this), new Status(13, "Transform returned null"));
            return;
          }
          finally {}
          if ((localPendingResult2 instanceof zzabp)) {
            zzabx.a(zzabx.e(zzabx.this), ((zzabp)localPendingResult2).a);
          } else {
            zzabx.e(zzabx.this).zza(localPendingResult2);
          }
        }
      }
      RuntimeException localRuntimeException = (RuntimeException)paramMessage.obj;
      paramMessage = String.valueOf(localRuntimeException.getMessage());
      if (paramMessage.length() != 0) {}
      for (paramMessage = "Runtime exception on the transformation worker thread: ".concat(paramMessage);; paramMessage = new String("Runtime exception on the transformation worker thread: "))
      {
        Log.e("TransformedResultImpl", paramMessage);
        throw localRuntimeException;
      }
    }
  }
}


/* Location:              /home/merong/decompile/hackery-dex2jar.jar!/com/google/android/gms/internal/zzabx.class
 * Java compiler version: 6 (50.0)
 * JD-Core Version:       0.7.1
 */