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

190 lines
7.0 KiB
Java

package androidx.work.impl;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.lifecycle.LiveData;
import androidx.work.ArrayCreatingInputMerger;
import androidx.work.ExistingWorkPolicy;
import androidx.work.Logger;
import androidx.work.OneTimeWorkRequest;
import androidx.work.Operation;
import androidx.work.WorkContinuation;
import androidx.work.WorkInfo;
import androidx.work.WorkRequest;
import androidx.work.impl.utils.EnqueueRunnable;
import androidx.work.impl.utils.StatusRunnable;
import androidx.work.impl.workers.CombineContinuationsWorker;
import c.i.b.d.a.a;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public class WorkContinuationImpl extends WorkContinuation {
private static final String TAG = Logger.tagWithPrefix("WorkContinuationImpl");
private final List<String> mAllIds;
private boolean mEnqueued;
private final ExistingWorkPolicy mExistingWorkPolicy;
private final List<String> mIds;
private final String mName;
private Operation mOperation;
private final List<WorkContinuationImpl> mParents;
private final List<? extends WorkRequest> mWork;
private final WorkManagerImpl mWorkManagerImpl;
public WorkContinuationImpl(@NonNull WorkManagerImpl workManagerImpl, String str, ExistingWorkPolicy existingWorkPolicy, @NonNull List<? extends WorkRequest> list) {
this(workManagerImpl, str, existingWorkPolicy, list, null);
}
public WorkContinuationImpl(@NonNull WorkManagerImpl workManagerImpl, String str, ExistingWorkPolicy existingWorkPolicy, @NonNull List<? extends WorkRequest> list, @Nullable List<WorkContinuationImpl> list2) {
this.mWorkManagerImpl = workManagerImpl;
this.mName = str;
this.mExistingWorkPolicy = existingWorkPolicy;
this.mWork = list;
this.mParents = list2;
this.mIds = new ArrayList(list.size());
this.mAllIds = new ArrayList();
if (list2 != null) {
for (WorkContinuationImpl workContinuationImpl : list2) {
this.mAllIds.addAll(workContinuationImpl.mAllIds);
}
}
for (int i = 0; i < list.size(); i++) {
String stringId = ((WorkRequest) list.get(i)).getStringId();
this.mIds.add(stringId);
this.mAllIds.add(stringId);
}
}
public WorkContinuationImpl(@NonNull WorkManagerImpl workManagerImpl, @NonNull List<? extends WorkRequest> list) {
this(workManagerImpl, null, ExistingWorkPolicy.KEEP, list, null);
}
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
private static boolean hasCycles(@NonNull WorkContinuationImpl workContinuationImpl, @NonNull Set<String> set) {
set.addAll(workContinuationImpl.getIds());
Set<String> prerequisitesFor = prerequisitesFor(workContinuationImpl);
for (String str : set) {
if (prerequisitesFor.contains(str)) {
return true;
}
}
List<WorkContinuationImpl> parents = workContinuationImpl.getParents();
if (parents != null && !parents.isEmpty()) {
for (WorkContinuationImpl workContinuationImpl2 : parents) {
if (hasCycles(workContinuationImpl2, set)) {
return true;
}
}
}
set.removeAll(workContinuationImpl.getIds());
return false;
}
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public static Set<String> prerequisitesFor(WorkContinuationImpl workContinuationImpl) {
HashSet hashSet = new HashSet();
List<WorkContinuationImpl> parents = workContinuationImpl.getParents();
if (parents != null && !parents.isEmpty()) {
for (WorkContinuationImpl workContinuationImpl2 : parents) {
hashSet.addAll(workContinuationImpl2.getIds());
}
}
return hashSet;
}
@Override // androidx.work.WorkContinuation
@NonNull
public WorkContinuation combineInternal(@NonNull List<WorkContinuation> list) {
OneTimeWorkRequest build = new OneTimeWorkRequest.Builder(CombineContinuationsWorker.class).setInputMerger(ArrayCreatingInputMerger.class).build();
ArrayList arrayList = new ArrayList(list.size());
Iterator<WorkContinuation> it = list.iterator();
while (it.hasNext()) {
arrayList.add((WorkContinuationImpl) it.next());
}
return new WorkContinuationImpl(this.mWorkManagerImpl, null, ExistingWorkPolicy.KEEP, Collections.singletonList(build), arrayList);
}
@Override // androidx.work.WorkContinuation
@NonNull
public Operation enqueue() {
if (!this.mEnqueued) {
EnqueueRunnable enqueueRunnable = new EnqueueRunnable(this);
this.mWorkManagerImpl.getWorkTaskExecutor().executeOnBackgroundThread(enqueueRunnable);
this.mOperation = enqueueRunnable.getOperation();
} else {
Logger.get().warning(TAG, String.format("Already enqueued work ids (%s)", TextUtils.join(", ", this.mIds)), new Throwable[0]);
}
return this.mOperation;
}
public List<String> getAllIds() {
return this.mAllIds;
}
public ExistingWorkPolicy getExistingWorkPolicy() {
return this.mExistingWorkPolicy;
}
@NonNull
public List<String> getIds() {
return this.mIds;
}
@Nullable
public String getName() {
return this.mName;
}
public List<WorkContinuationImpl> getParents() {
return this.mParents;
}
@NonNull
public List<? extends WorkRequest> getWork() {
return this.mWork;
}
@Override // androidx.work.WorkContinuation
@NonNull
public a<List<WorkInfo>> getWorkInfos() {
StatusRunnable<List<WorkInfo>> forStringIds = StatusRunnable.forStringIds(this.mWorkManagerImpl, this.mAllIds);
this.mWorkManagerImpl.getWorkTaskExecutor().executeOnBackgroundThread(forStringIds);
return forStringIds.getFuture();
}
@Override // androidx.work.WorkContinuation
@NonNull
public LiveData<List<WorkInfo>> getWorkInfosLiveData() {
return this.mWorkManagerImpl.getWorkInfosById(this.mAllIds);
}
@NonNull
public WorkManagerImpl getWorkManagerImpl() {
return this.mWorkManagerImpl;
}
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public boolean hasCycles() {
return hasCycles(this, new HashSet());
}
public boolean isEnqueued() {
return this.mEnqueued;
}
public void markEnqueued() {
this.mEnqueued = true;
}
@Override // androidx.work.WorkContinuation
@NonNull
public WorkContinuation then(@NonNull List<OneTimeWorkRequest> list) {
return list.isEmpty() ? this : new WorkContinuationImpl(this.mWorkManagerImpl, this.mName, ExistingWorkPolicy.KEEP, list, Collections.singletonList(this));
}
}