package androidx.work.impl.background.systemjob; import android.app.Application; import android.app.job.JobParameters; import android.app.job.JobService; import android.net.Network; import android.net.Uri; import android.os.Build; import android.os.Looper; import android.os.PersistableBundle; import androidx.annotation.MainThread; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import androidx.annotation.RestrictTo; import androidx.work.Logger; import androidx.work.WorkInfo; import androidx.work.WorkerParameters; import androidx.work.impl.ExecutionListener; import androidx.work.impl.Processor; import androidx.work.impl.StartStopToken; import androidx.work.impl.StartStopTokens; import androidx.work.impl.WorkLauncher; import androidx.work.impl.WorkLauncherImpl; import androidx.work.impl.WorkManagerImpl; import androidx.work.impl.model.WorkGenerationalId; import java.util.Arrays; import java.util.HashMap; import java.util.Map; @RequiresApi(23) @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP}) /* loaded from: classes.dex */ public class SystemJobService extends JobService implements ExecutionListener { private static final String TAG = Logger.tagWithPrefix("SystemJobService"); private final Map mJobParameters = new HashMap(); private final StartStopTokens mStartStopTokens = StartStopTokens.create(false); private WorkLauncher mWorkLauncher; private WorkManagerImpl mWorkManagerImpl; public static int stopReason(int i) { switch (i) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: return i; default: return WorkInfo.STOP_REASON_UNKNOWN; } } @Override // android.app.Service public void onCreate() { super.onCreate(); try { WorkManagerImpl workManagerImpl = WorkManagerImpl.getInstance(getApplicationContext()); this.mWorkManagerImpl = workManagerImpl; Processor processor = workManagerImpl.getProcessor(); this.mWorkLauncher = new WorkLauncherImpl(processor, this.mWorkManagerImpl.getWorkTaskExecutor()); processor.addExecutionListener(this); } catch (IllegalStateException e) { if (!Application.class.equals(getApplication().getClass())) { throw new IllegalStateException("WorkManager needs to be initialized via a ContentProvider#onCreate() or an Application#onCreate().", e); } Logger.get().warning(TAG, "Could not find WorkManager instance; this may be because an auto-backup is in progress. Ignoring JobScheduler commands for now. Please make sure that you are initializing WorkManager if you have manually disabled WorkManagerInitializer."); } } @Override // android.app.Service public void onDestroy() { super.onDestroy(); WorkManagerImpl workManagerImpl = this.mWorkManagerImpl; if (workManagerImpl != null) { workManagerImpl.getProcessor().removeExecutionListener(this); } } @Override // android.app.job.JobService public boolean onStartJob(@NonNull JobParameters jobParameters) { assertMainThread("onStartJob"); if (this.mWorkManagerImpl == null) { Logger.get().debug(TAG, "WorkManager is not initialized; requesting retry."); jobFinished(jobParameters, true); return false; } WorkGenerationalId workGenerationalIdFromJobParameters = workGenerationalIdFromJobParameters(jobParameters); if (workGenerationalIdFromJobParameters == null) { Logger.get().error(TAG, "WorkSpec id not found!"); return false; } if (this.mJobParameters.containsKey(workGenerationalIdFromJobParameters)) { Logger.get().debug(TAG, "Job is already being executed by SystemJobService: " + workGenerationalIdFromJobParameters); return false; } Logger.get().debug(TAG, "onStartJob for " + workGenerationalIdFromJobParameters); this.mJobParameters.put(workGenerationalIdFromJobParameters, jobParameters); int i = Build.VERSION.SDK_INT; WorkerParameters.RuntimeExtras runtimeExtras = new WorkerParameters.RuntimeExtras(); if (Api24Impl.getTriggeredContentUris(jobParameters) != null) { runtimeExtras.triggeredContentUris = Arrays.asList(Api24Impl.getTriggeredContentUris(jobParameters)); } if (Api24Impl.getTriggeredContentAuthorities(jobParameters) != null) { runtimeExtras.triggeredContentAuthorities = Arrays.asList(Api24Impl.getTriggeredContentAuthorities(jobParameters)); } if (i >= 28) { runtimeExtras.network = Api28Impl.getNetwork(jobParameters); } this.mWorkLauncher.startWork(this.mStartStopTokens.tokenFor(workGenerationalIdFromJobParameters), runtimeExtras); return true; } @Override // android.app.job.JobService public boolean onStopJob(@NonNull JobParameters jobParameters) { assertMainThread("onStopJob"); if (this.mWorkManagerImpl == null) { Logger.get().debug(TAG, "WorkManager is not initialized; requesting retry."); return true; } WorkGenerationalId workGenerationalIdFromJobParameters = workGenerationalIdFromJobParameters(jobParameters); if (workGenerationalIdFromJobParameters == null) { Logger.get().error(TAG, "WorkSpec id not found!"); return false; } Logger.get().debug(TAG, "onStopJob for " + workGenerationalIdFromJobParameters); this.mJobParameters.remove(workGenerationalIdFromJobParameters); StartStopToken remove = this.mStartStopTokens.remove(workGenerationalIdFromJobParameters); if (remove != null) { this.mWorkLauncher.stopWorkWithReason(remove, Build.VERSION.SDK_INT >= 31 ? Api31Impl.getStopReason(jobParameters) : WorkInfo.STOP_REASON_UNKNOWN); } return !this.mWorkManagerImpl.getProcessor().isCancelled(workGenerationalIdFromJobParameters.getWorkSpecId()); } @Override // androidx.work.impl.ExecutionListener @MainThread public void onExecuted(@NonNull WorkGenerationalId workGenerationalId, boolean z) { assertMainThread("onExecuted"); Logger.get().debug(TAG, workGenerationalId.getWorkSpecId() + " executed on JobScheduler"); JobParameters remove = this.mJobParameters.remove(workGenerationalId); this.mStartStopTokens.remove(workGenerationalId); if (remove != null) { jobFinished(remove, z); } } @Nullable private static WorkGenerationalId workGenerationalIdFromJobParameters(@NonNull JobParameters jobParameters) { try { PersistableBundle extras = jobParameters.getExtras(); if (extras == null || !extras.containsKey("EXTRA_WORK_SPEC_ID")) { return null; } return new WorkGenerationalId(extras.getString("EXTRA_WORK_SPEC_ID"), extras.getInt("EXTRA_WORK_SPEC_GENERATION")); } catch (NullPointerException unused) { return null; } } @RequiresApi(24) public static class Api24Impl { private Api24Impl() { } public static Uri[] getTriggeredContentUris(JobParameters jobParameters) { return jobParameters.getTriggeredContentUris(); } public static String[] getTriggeredContentAuthorities(JobParameters jobParameters) { return jobParameters.getTriggeredContentAuthorities(); } } @RequiresApi(28) public static class Api28Impl { private Api28Impl() { } public static Network getNetwork(JobParameters jobParameters) { return jobParameters.getNetwork(); } } @RequiresApi(31) public static class Api31Impl { private Api31Impl() { } public static int getStopReason(JobParameters jobParameters) { return SystemJobService.stopReason(jobParameters.getStopReason()); } } private static void assertMainThread(String str) { if (Looper.getMainLooper().getThread() == Thread.currentThread()) { return; } throw new IllegalStateException("Cannot invoke " + str + " on a background thread"); } }