diff options
author | Vikram Gaur <vikramgaur@google.com> | 2023-01-20 07:28:07 +0000 |
---|---|---|
committer | Vikram Gaur <vikramgaur@google.com> | 2023-01-20 07:29:45 +0000 |
commit | 08c7cf49449fd369ffbbecae145100757b3ececa (patch) | |
tree | 83bc00ade7cfea73e2d2d535a00887fac5ee9386 | |
parent | 801bd96e461f267ccb8979198cc10ac7328e8efd (diff) | |
download | RemoteProvisioner-main-16k-with-phones.tar.gz |
Move widevine provisioning check logic to worker from BootReceiver.main-16k-with-phones
MediaDRM instance creation is blocking. However, BootReceiver expects to
finish up any pending tasks within a certain time limit. This may cause
ANR if there is any blockage in setting up the MediaDRM instance.
Test: tested on cuttlefish.
Fixes: 265854414
Change-Id: I25210205c2032403c025b53adaada0ffd2821cde
-rw-r--r-- | src/com/android/remoteprovisioner/BootReceiver.java | 17 | ||||
-rw-r--r-- | src/com/android/remoteprovisioner/WidevineProvisioner.java | 9 |
2 files changed, 14 insertions, 12 deletions
diff --git a/src/com/android/remoteprovisioner/BootReceiver.java b/src/com/android/remoteprovisioner/BootReceiver.java index fd9b019..05f77db 100644 --- a/src/com/android/remoteprovisioner/BootReceiver.java +++ b/src/com/android/remoteprovisioner/BootReceiver.java @@ -24,8 +24,8 @@ import android.content.Intent; import android.os.RemoteException; import android.os.ServiceManager; import android.security.remoteprovisioning.AttestationPoolStatus; -import android.security.remoteprovisioning.ImplInfo; import android.security.remoteprovisioning.IRemoteProvisioning; +import android.security.remoteprovisioning.ImplInfo; import android.util.Log; import androidx.work.Constraints; @@ -80,14 +80,13 @@ public class BootReceiver extends BroadcastReceiver { .enqueueUniquePeriodicWork("ProvisioningJob", ExistingPeriodicWorkPolicy.REPLACE, // Replace on reboot. workRequest); - if (WidevineProvisioner.isWidevineProvisioningNeeded()) { - Log.i(TAG, "WV provisioning needed. Queueing a one-time provisioning job."); - OneTimeWorkRequest wvRequest = - new OneTimeWorkRequest.Builder(WidevineProvisioner.class) - .setConstraints(constraints) - .build(); - WorkManager.getInstance(context).enqueue(wvRequest); - } + + Log.i(TAG, "Queueing a one-time provisioning job for widevine provisioning."); + OneTimeWorkRequest wvRequest = + new OneTimeWorkRequest.Builder(WidevineProvisioner.class) + .setConstraints(constraints) + .build(); + WorkManager.getInstance(context).enqueue(wvRequest); } diff --git a/src/com/android/remoteprovisioner/WidevineProvisioner.java b/src/com/android/remoteprovisioner/WidevineProvisioner.java index 717c7fd..8b6c21a 100644 --- a/src/com/android/remoteprovisioner/WidevineProvisioner.java +++ b/src/com/android/remoteprovisioner/WidevineProvisioner.java @@ -92,8 +92,11 @@ public class WidevineProvisioner extends Worker { */ @Override public Result doWork() { - Log.i(TAG, "Beginning WV provisioning request. Current attempt: " + getRunAttemptCount()); - return provisionWidevine(); + if (isWidevineProvisioningNeeded()) { + Log.i(TAG, "Starting WV provisioning. Current attempt: " + getRunAttemptCount()); + return provisionWidevine(); + } + return Result.success(); } /** @@ -105,7 +108,7 @@ public class WidevineProvisioner extends Worker { */ public static boolean isWidevineProvisioningNeeded() { try { - final MediaDrm drm = new MediaDrm(WidevineProvisioner.WIDEVINE_UUID); + final MediaDrm drm = new MediaDrm(WIDEVINE_UUID); if (!drm.getPropertyString("provisioningModel").equals("BootCertificateChain")) { // Not a provisioning 4.0 device. |