269 lines
10 KiB
Java
269 lines
10 KiB
Java
package com.google.android.gms.cloudmessaging;
|
|
|
|
import android.content.ComponentName;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.content.ServiceConnection;
|
|
import android.os.Bundle;
|
|
import android.os.Handler;
|
|
import android.os.IBinder;
|
|
import android.os.Looper;
|
|
import android.os.Message;
|
|
import android.os.Messenger;
|
|
import android.os.RemoteException;
|
|
import android.util.Log;
|
|
import android.util.SparseArray;
|
|
import com.google.android.gms.common.internal.Preconditions;
|
|
import com.google.android.gms.common.stats.ConnectionTracker;
|
|
import com.google.firebase.messaging.Constants;
|
|
import java.util.ArrayDeque;
|
|
import java.util.Iterator;
|
|
import java.util.Queue;
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
/* loaded from: classes3.dex */
|
|
public final class zzn implements ServiceConnection {
|
|
zzp zzc;
|
|
final /* synthetic */ zzu zzf;
|
|
int zza = 0;
|
|
final Messenger zzb = new Messenger(new com.google.android.gms.internal.cloudmessaging.zzf(Looper.getMainLooper(), new Handler.Callback() { // from class: com.google.android.gms.cloudmessaging.zzk
|
|
@Override // android.os.Handler.Callback
|
|
public final boolean handleMessage(Message message) {
|
|
int i = message.arg1;
|
|
if (Log.isLoggable("MessengerIpcClient", 3)) {
|
|
Log.d("MessengerIpcClient", "Received response to request: " + i);
|
|
}
|
|
zzn zznVar = zzn.this;
|
|
synchronized (zznVar) {
|
|
try {
|
|
zzr zzrVar = (zzr) zznVar.zze.get(i);
|
|
if (zzrVar == null) {
|
|
Log.w("MessengerIpcClient", "Received response for unknown request: " + i);
|
|
return true;
|
|
}
|
|
zznVar.zze.remove(i);
|
|
zznVar.zzf();
|
|
Bundle data = message.getData();
|
|
if (data.getBoolean("unsupported", false)) {
|
|
zzrVar.zzc(new zzs(4, "Not supported by GmsCore", null));
|
|
return true;
|
|
}
|
|
zzrVar.zza(data);
|
|
return true;
|
|
} finally {
|
|
}
|
|
}
|
|
}
|
|
}));
|
|
final Queue zzd = new ArrayDeque();
|
|
final SparseArray zze = new SparseArray();
|
|
|
|
public /* synthetic */ zzn(zzu zzuVar, zzm zzmVar) {
|
|
this.zzf = zzuVar;
|
|
}
|
|
|
|
@Override // android.content.ServiceConnection
|
|
public final void onServiceConnected(ComponentName componentName, final IBinder iBinder) {
|
|
if (Log.isLoggable("MessengerIpcClient", 2)) {
|
|
Log.v("MessengerIpcClient", "Service connected");
|
|
}
|
|
zzu.zze(this.zzf).execute(new Runnable() { // from class: com.google.android.gms.cloudmessaging.zzg
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
zzn zznVar = zzn.this;
|
|
IBinder iBinder2 = iBinder;
|
|
synchronized (zznVar) {
|
|
if (iBinder2 == null) {
|
|
zznVar.zza(0, "Null service connection");
|
|
return;
|
|
}
|
|
try {
|
|
zznVar.zzc = new zzp(iBinder2);
|
|
zznVar.zza = 2;
|
|
zznVar.zzc();
|
|
} catch (RemoteException e4) {
|
|
zznVar.zza(0, e4.getMessage());
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
@Override // android.content.ServiceConnection
|
|
public final void onServiceDisconnected(ComponentName componentName) {
|
|
if (Log.isLoggable("MessengerIpcClient", 2)) {
|
|
Log.v("MessengerIpcClient", "Service disconnected");
|
|
}
|
|
zzu.zze(this.zzf).execute(new Runnable() { // from class: com.google.android.gms.cloudmessaging.zzj
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
zzn.this.zza(2, "Service disconnected");
|
|
}
|
|
});
|
|
}
|
|
|
|
public final synchronized void zza(int i, String str) {
|
|
zzb(i, str, null);
|
|
}
|
|
|
|
public final synchronized void zzb(int i, String str, Throwable th) {
|
|
try {
|
|
if (Log.isLoggable("MessengerIpcClient", 3)) {
|
|
Log.d("MessengerIpcClient", "Disconnected: ".concat(String.valueOf(str)));
|
|
}
|
|
int i4 = this.zza;
|
|
if (i4 == 0) {
|
|
throw new IllegalStateException();
|
|
}
|
|
if (i4 != 1 && i4 != 2) {
|
|
if (i4 != 3) {
|
|
return;
|
|
}
|
|
this.zza = 4;
|
|
return;
|
|
}
|
|
if (Log.isLoggable("MessengerIpcClient", 2)) {
|
|
Log.v("MessengerIpcClient", "Unbinding service");
|
|
}
|
|
this.zza = 4;
|
|
ConnectionTracker.getInstance().unbindService(zzu.zza(this.zzf), this);
|
|
zzs zzsVar = new zzs(i, str, th);
|
|
Iterator it = this.zzd.iterator();
|
|
while (it.hasNext()) {
|
|
((zzr) it.next()).zzc(zzsVar);
|
|
}
|
|
this.zzd.clear();
|
|
for (int i5 = 0; i5 < this.zze.size(); i5++) {
|
|
((zzr) this.zze.valueAt(i5)).zzc(zzsVar);
|
|
}
|
|
this.zze.clear();
|
|
} catch (Throwable th2) {
|
|
throw th2;
|
|
}
|
|
}
|
|
|
|
public final void zzc() {
|
|
zzu.zze(this.zzf).execute(new Runnable() { // from class: com.google.android.gms.cloudmessaging.zzh
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
final zzr zzrVar;
|
|
while (true) {
|
|
final zzn zznVar = zzn.this;
|
|
synchronized (zznVar) {
|
|
try {
|
|
if (zznVar.zza != 2) {
|
|
return;
|
|
}
|
|
if (zznVar.zzd.isEmpty()) {
|
|
zznVar.zzf();
|
|
return;
|
|
} else {
|
|
zzrVar = (zzr) zznVar.zzd.poll();
|
|
zznVar.zze.put(zzrVar.zza, zzrVar);
|
|
zzu.zze(zznVar.zzf).schedule(new Runnable() { // from class: com.google.android.gms.cloudmessaging.zzl
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
zzn.this.zze(zzrVar.zza);
|
|
}
|
|
}, 30L, TimeUnit.SECONDS);
|
|
}
|
|
} finally {
|
|
}
|
|
}
|
|
if (Log.isLoggable("MessengerIpcClient", 3)) {
|
|
Log.d("MessengerIpcClient", "Sending ".concat(String.valueOf(zzrVar)));
|
|
}
|
|
zzu zzuVar = zznVar.zzf;
|
|
Messenger messenger = zznVar.zzb;
|
|
int i = zzrVar.zzc;
|
|
Context zza = zzu.zza(zzuVar);
|
|
Message obtain = Message.obtain();
|
|
obtain.what = i;
|
|
obtain.arg1 = zzrVar.zza;
|
|
obtain.replyTo = messenger;
|
|
Bundle bundle = new Bundle();
|
|
bundle.putBoolean("oneWay", zzrVar.zzb());
|
|
bundle.putString("pkg", zza.getPackageName());
|
|
bundle.putBundle(Constants.ScionAnalytics.MessageType.DATA_MESSAGE, zzrVar.zzd);
|
|
obtain.setData(bundle);
|
|
try {
|
|
zznVar.zzc.zza(obtain);
|
|
} catch (RemoteException e4) {
|
|
zznVar.zza(2, e4.getMessage());
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
public final synchronized void zzd() {
|
|
if (this.zza == 1) {
|
|
zza(1, "Timed out while binding");
|
|
}
|
|
}
|
|
|
|
public final synchronized void zze(int i) {
|
|
zzr zzrVar = (zzr) this.zze.get(i);
|
|
if (zzrVar != null) {
|
|
Log.w("MessengerIpcClient", "Timing out request: " + i);
|
|
this.zze.remove(i);
|
|
zzrVar.zzc(new zzs(3, "Timed out waiting for response", null));
|
|
zzf();
|
|
}
|
|
}
|
|
|
|
public final synchronized void zzf() {
|
|
try {
|
|
if (this.zza == 2 && this.zzd.isEmpty() && this.zze.size() == 0) {
|
|
if (Log.isLoggable("MessengerIpcClient", 2)) {
|
|
Log.v("MessengerIpcClient", "Finished handling requests, unbinding");
|
|
}
|
|
this.zza = 3;
|
|
ConnectionTracker.getInstance().unbindService(zzu.zza(this.zzf), this);
|
|
}
|
|
} catch (Throwable th) {
|
|
throw th;
|
|
}
|
|
}
|
|
|
|
public final synchronized boolean zzg(zzr zzrVar) {
|
|
int i = this.zza;
|
|
if (i != 0) {
|
|
if (i == 1) {
|
|
this.zzd.add(zzrVar);
|
|
return true;
|
|
}
|
|
if (i != 2) {
|
|
return false;
|
|
}
|
|
this.zzd.add(zzrVar);
|
|
zzc();
|
|
return true;
|
|
}
|
|
this.zzd.add(zzrVar);
|
|
Preconditions.checkState(this.zza == 0);
|
|
if (Log.isLoggable("MessengerIpcClient", 2)) {
|
|
Log.v("MessengerIpcClient", "Starting bind to GmsCore");
|
|
}
|
|
this.zza = 1;
|
|
Intent intent = new Intent("com.google.android.c2dm.intent.REGISTER");
|
|
intent.setPackage("com.google.android.gms");
|
|
try {
|
|
if (ConnectionTracker.getInstance().bindService(zzu.zza(this.zzf), intent, this, 1)) {
|
|
zzu.zze(this.zzf).schedule(new Runnable() { // from class: com.google.android.gms.cloudmessaging.zzi
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
zzn.this.zzd();
|
|
}
|
|
}, 30L, TimeUnit.SECONDS);
|
|
} else {
|
|
zza(0, "Unable to bind to service");
|
|
}
|
|
} catch (SecurityException e4) {
|
|
zzb(0, "Unable to bind to service", e4);
|
|
}
|
|
return true;
|
|
}
|
|
}
|