Move widevine provisioning check logic to worker from BootReceiver.

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
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.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 @@
                 .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 @@
      */
     @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 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.