141 lines
4.9 KiB
Java
141 lines
4.9 KiB
Java
package com.google.firebase.messaging;
|
|
|
|
import android.annotation.SuppressLint;
|
|
import android.app.Service;
|
|
import android.content.Intent;
|
|
import android.os.Binder;
|
|
import android.os.IBinder;
|
|
import android.util.Log;
|
|
import com.google.android.gms.common.annotation.KeepForSdk;
|
|
import com.google.android.gms.tasks.OnCompleteListener;
|
|
import com.google.android.gms.tasks.Task;
|
|
import com.google.android.gms.tasks.TaskCompletionSource;
|
|
import com.google.android.gms.tasks.Tasks;
|
|
import com.google.firebase.messaging.WithinAppServiceBinder;
|
|
import java.util.concurrent.ExecutorService;
|
|
import n.ExecutorC0507a;
|
|
|
|
@SuppressLint({"UnwrappedWakefulBroadcastReceiver"})
|
|
/* loaded from: classes3.dex */
|
|
public abstract class EnhancedIntentService extends Service {
|
|
static final long MESSAGE_TIMEOUT_S = 20;
|
|
private static final String TAG = "EnhancedIntentService";
|
|
private Binder binder;
|
|
private int lastStartId;
|
|
final ExecutorService executor = FcmExecutors.newIntentHandleExecutor();
|
|
private final Object lock = new Object();
|
|
private int runningTasks = 0;
|
|
|
|
private void finishTask(Intent intent) {
|
|
if (intent != null) {
|
|
WakeLockHolder.completeWakefulIntent(intent);
|
|
}
|
|
synchronized (this.lock) {
|
|
try {
|
|
int i = this.runningTasks - 1;
|
|
this.runningTasks = i;
|
|
if (i == 0) {
|
|
stopSelfResultHook(this.lastStartId);
|
|
}
|
|
} catch (Throwable th) {
|
|
throw th;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public /* synthetic */ void lambda$onStartCommand$1(Intent intent, Task task) {
|
|
finishTask(intent);
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public /* synthetic */ void lambda$processIntent$0(Intent intent, TaskCompletionSource taskCompletionSource) {
|
|
try {
|
|
handleIntent(intent);
|
|
} finally {
|
|
taskCompletionSource.setResult(null);
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public Task<Void> processIntent(final Intent intent) {
|
|
if (handleIntentOnMainThread(intent)) {
|
|
return Tasks.forResult(null);
|
|
}
|
|
final TaskCompletionSource taskCompletionSource = new TaskCompletionSource();
|
|
this.executor.execute(new Runnable() { // from class: com.google.firebase.messaging.b
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
EnhancedIntentService.this.lambda$processIntent$0(intent, taskCompletionSource);
|
|
}
|
|
});
|
|
return taskCompletionSource.getTask();
|
|
}
|
|
|
|
public Intent getStartCommandIntent(Intent intent) {
|
|
return intent;
|
|
}
|
|
|
|
public abstract void handleIntent(Intent intent);
|
|
|
|
public boolean handleIntentOnMainThread(Intent intent) {
|
|
return false;
|
|
}
|
|
|
|
@Override // android.app.Service
|
|
public final synchronized IBinder onBind(Intent intent) {
|
|
try {
|
|
if (Log.isLoggable(TAG, 3)) {
|
|
Log.d(TAG, "Service received bind request");
|
|
}
|
|
if (this.binder == null) {
|
|
this.binder = new WithinAppServiceBinder(new WithinAppServiceBinder.IntentHandler() { // from class: com.google.firebase.messaging.EnhancedIntentService.1
|
|
@Override // com.google.firebase.messaging.WithinAppServiceBinder.IntentHandler
|
|
@KeepForSdk
|
|
public Task<Void> handle(Intent intent2) {
|
|
return EnhancedIntentService.this.processIntent(intent2);
|
|
}
|
|
});
|
|
}
|
|
} catch (Throwable th) {
|
|
throw th;
|
|
}
|
|
return this.binder;
|
|
}
|
|
|
|
@Override // android.app.Service
|
|
public void onDestroy() {
|
|
this.executor.shutdown();
|
|
super.onDestroy();
|
|
}
|
|
|
|
@Override // android.app.Service
|
|
public final int onStartCommand(final Intent intent, int i, int i4) {
|
|
synchronized (this.lock) {
|
|
this.lastStartId = i4;
|
|
this.runningTasks++;
|
|
}
|
|
Intent startCommandIntent = getStartCommandIntent(intent);
|
|
if (startCommandIntent == null) {
|
|
finishTask(intent);
|
|
return 2;
|
|
}
|
|
Task<Void> processIntent = processIntent(startCommandIntent);
|
|
if (processIntent.isComplete()) {
|
|
finishTask(intent);
|
|
return 2;
|
|
}
|
|
processIntent.addOnCompleteListener(new ExecutorC0507a(1), new OnCompleteListener() { // from class: com.google.firebase.messaging.a
|
|
@Override // com.google.android.gms.tasks.OnCompleteListener
|
|
public final void onComplete(Task task) {
|
|
EnhancedIntentService.this.lambda$onStartCommand$1(intent, task);
|
|
}
|
|
});
|
|
return 3;
|
|
}
|
|
|
|
public boolean stopSelfResultHook(int i) {
|
|
return stopSelfResult(i);
|
|
}
|
|
}
|