aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVikram Gaur <vikramgaur@google.com>2023-01-20 07:28:07 +0000
committerVikram Gaur <vikramgaur@google.com>2023-01-20 07:29:45 +0000
commit08c7cf49449fd369ffbbecae145100757b3ececa (patch)
tree83bc00ade7cfea73e2d2d535a00887fac5ee9386
parent801bd96e461f267ccb8979198cc10ac7328e8efd (diff)
downloadRemoteProvisioner-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.java17
-rw-r--r--src/com/android/remoteprovisioner/WidevineProvisioner.java9
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.