discord-jadx/app/src/main/java/androidx/work/impl/workers/ConstraintTrackingWorker.java

178 lines
7.0 KiB
Java

package androidx.work.impl.workers;
import android.content.Context;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.annotation.VisibleForTesting;
import androidx.work.ListenableWorker;
import androidx.work.Logger;
import androidx.work.WorkerParameters;
import androidx.work.impl.WorkDatabase;
import androidx.work.impl.WorkManagerImpl;
import androidx.work.impl.constraints.WorkConstraintsCallback;
import androidx.work.impl.constraints.WorkConstraintsTracker;
import androidx.work.impl.model.WorkSpec;
import androidx.work.impl.utils.futures.SettableFuture;
import androidx.work.impl.utils.taskexecutor.TaskExecutor;
import c.i.b.d.a.a;
import java.util.Collections;
import java.util.List;
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public class ConstraintTrackingWorker extends ListenableWorker implements WorkConstraintsCallback {
public static final String ARGUMENT_CLASS_NAME = "androidx.work.impl.workers.ConstraintTrackingWorker.ARGUMENT_CLASS_NAME";
private static final String TAG = Logger.tagWithPrefix("ConstraintTrkngWrkr");
public volatile boolean mAreConstraintsUnmet = false;
@Nullable
private ListenableWorker mDelegate;
public SettableFuture<ListenableWorker.Result> mFuture = SettableFuture.create();
public final Object mLock = new Object();
private WorkerParameters mWorkerParameters;
/* renamed from: androidx.work.impl.workers.ConstraintTrackingWorker$1 reason: invalid class name */
public class AnonymousClass1 implements Runnable {
public AnonymousClass1() {
}
@Override // java.lang.Runnable
public void run() {
ConstraintTrackingWorker.this.setupAndRunConstraintTrackingWork();
}
}
/* renamed from: androidx.work.impl.workers.ConstraintTrackingWorker$2 reason: invalid class name */
public class AnonymousClass2 implements Runnable {
public final /* synthetic */ a val$innerFuture;
public AnonymousClass2(a aVar) {
this.val$innerFuture = aVar;
}
@Override // java.lang.Runnable
public void run() {
synchronized (ConstraintTrackingWorker.this.mLock) {
if (ConstraintTrackingWorker.this.mAreConstraintsUnmet) {
ConstraintTrackingWorker.this.setFutureRetry();
} else {
ConstraintTrackingWorker.this.mFuture.setFuture(this.val$innerFuture);
}
}
}
}
public ConstraintTrackingWorker(@NonNull Context context, @NonNull WorkerParameters workerParameters) {
super(context, workerParameters);
this.mWorkerParameters = workerParameters;
}
@Nullable
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
@VisibleForTesting
public ListenableWorker getDelegate() {
return this.mDelegate;
}
@Override // androidx.work.ListenableWorker
@NonNull
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
@VisibleForTesting
public TaskExecutor getTaskExecutor() {
return WorkManagerImpl.getInstance(getApplicationContext()).getWorkTaskExecutor();
}
@NonNull
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
@VisibleForTesting
public WorkDatabase getWorkDatabase() {
return WorkManagerImpl.getInstance(getApplicationContext()).getWorkDatabase();
}
@Override // androidx.work.ListenableWorker
public boolean isRunInForeground() {
ListenableWorker listenableWorker = this.mDelegate;
return listenableWorker != null && listenableWorker.isRunInForeground();
}
@Override // androidx.work.impl.constraints.WorkConstraintsCallback
public void onAllConstraintsMet(@NonNull List<String> list) {
}
@Override // androidx.work.impl.constraints.WorkConstraintsCallback
public void onAllConstraintsNotMet(@NonNull List<String> list) {
Logger.get().debug(TAG, String.format("Constraints changed for %s", list), new Throwable[0]);
synchronized (this.mLock) {
this.mAreConstraintsUnmet = true;
}
}
@Override // androidx.work.ListenableWorker
public void onStopped() {
super.onStopped();
ListenableWorker listenableWorker = this.mDelegate;
if (listenableWorker != null) {
listenableWorker.stop();
}
}
public void setFutureFailed() {
this.mFuture.set(ListenableWorker.Result.failure());
}
public void setFutureRetry() {
this.mFuture.set(ListenableWorker.Result.retry());
}
public void setupAndRunConstraintTrackingWork() {
String string = getInputData().getString(ARGUMENT_CLASS_NAME);
if (TextUtils.isEmpty(string)) {
Logger.get().error(TAG, "No worker to delegate to.", new Throwable[0]);
setFutureFailed();
return;
}
ListenableWorker createWorkerWithDefaultFallback = getWorkerFactory().createWorkerWithDefaultFallback(getApplicationContext(), string, this.mWorkerParameters);
this.mDelegate = createWorkerWithDefaultFallback;
if (createWorkerWithDefaultFallback == null) {
Logger.get().debug(TAG, "No worker to delegate to.", new Throwable[0]);
setFutureFailed();
return;
}
WorkSpec workSpec = getWorkDatabase().workSpecDao().getWorkSpec(getId().toString());
if (workSpec == null) {
setFutureFailed();
return;
}
WorkConstraintsTracker workConstraintsTracker = new WorkConstraintsTracker(getApplicationContext(), getTaskExecutor(), this);
workConstraintsTracker.replace(Collections.singletonList(workSpec));
if (workConstraintsTracker.areAllConstraintsMet(getId().toString())) {
Logger.get().debug(TAG, String.format("Constraints met for delegate %s", string), new Throwable[0]);
try {
a<ListenableWorker.Result> startWork = this.mDelegate.startWork();
startWork.addListener(new AnonymousClass2(startWork), getBackgroundExecutor());
} catch (Throwable th) {
Logger logger = Logger.get();
String str = TAG;
logger.debug(str, String.format("Delegated worker %s threw exception in startWork.", string), th);
synchronized (this.mLock) {
if (this.mAreConstraintsUnmet) {
Logger.get().debug(str, "Constraints were unmet, Retrying.", new Throwable[0]);
setFutureRetry();
} else {
setFutureFailed();
}
}
}
} else {
Logger.get().debug(TAG, String.format("Constraints not met for delegate %s. Requesting retry.", string), new Throwable[0]);
setFutureRetry();
}
}
@Override // androidx.work.ListenableWorker
@NonNull
public a<ListenableWorker.Result> startWork() {
getBackgroundExecutor().execute(new AnonymousClass1());
return this.mFuture;
}
}