Fix possible infinite loop in test code
Also handle ResourceBusyException merge of http://go/wvgerrit/14470 from widevine repo bug: 21172957 Change-Id: I6815786eb7a678725cf2632f1009c7f566ba7499
This commit is contained in:
@@ -7,7 +7,7 @@ LOCAL_CERTIFICATE := platform
|
||||
|
||||
LOCAL_SRC_FILES := $(call all-java-files-under, src)
|
||||
|
||||
LOCAL_JAVA_LIBRARIES := com.android.mediadrm.signer
|
||||
LOCAL_JAVA_LIBRARIES := com.android.mediadrm.signer org.apache.http.legacy
|
||||
|
||||
LOCAL_PACKAGE_NAME := CastSignAPITest
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ import android.widget.TextView;
|
||||
import android.media.MediaDrm.CryptoSession;
|
||||
import android.media.MediaDrmException;
|
||||
import android.media.NotProvisionedException;
|
||||
import android.media.ResourceBusyException;
|
||||
import android.media.MediaCrypto;
|
||||
import android.media.MediaCodec;
|
||||
import android.media.MediaCryptoException;
|
||||
@@ -109,21 +110,34 @@ public class CastSignAPITest extends Activity {
|
||||
|
||||
private byte[] openSession(MediaDrm drm) {
|
||||
byte[] sessionId = null;
|
||||
boolean retryOpen;
|
||||
do {
|
||||
int retryCount = 3;
|
||||
while (--retryCount > 0) {
|
||||
try {
|
||||
retryOpen = false;
|
||||
sessionId = drm.openSession();
|
||||
break;
|
||||
} catch (NotProvisionedException e) {
|
||||
Log.i(TAG, "Missing certificate, provisioning");
|
||||
ProvisionRequester provisionRequester = new ProvisionRequester();
|
||||
provisionRequester.doTransact(drm);
|
||||
retryOpen = true;
|
||||
} catch (ResourceBusyException e) {
|
||||
Log.w(TAG, "Resource busy in openSession, retrying...");
|
||||
sleep(1000);
|
||||
}
|
||||
} while (retryOpen);
|
||||
}
|
||||
if (retryCount == 0) {
|
||||
Log.e(TAG, "Failed to provision device");
|
||||
mTestFailed = true;
|
||||
}
|
||||
return sessionId;
|
||||
}
|
||||
|
||||
private void sleep(int msec) {
|
||||
try {
|
||||
Thread.sleep(msec);
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
}
|
||||
|
||||
private void testCastSign() {
|
||||
final byte[] kMessage = hex2ba("ee07514066c23c770a665719abf051e0" +
|
||||
"f75a399578305eb2547ca67ecd2356ca" +
|
||||
|
||||
@@ -244,22 +244,25 @@ public class MediaDrmAPITest extends Activity {
|
||||
|
||||
private byte[] openSession(MediaDrm drm) {
|
||||
byte[] sessionId = null;
|
||||
boolean retryOpen;
|
||||
do {
|
||||
int retryCount = 3;
|
||||
while (--retryCount > 0) {
|
||||
try {
|
||||
retryOpen = false;
|
||||
sessionId = drm.openSession();
|
||||
break;
|
||||
} catch (NotProvisionedException e) {
|
||||
Log.i(TAG, "Missing certificate, provisioning");
|
||||
ProvisionRequester provisionRequester = new ProvisionRequester();
|
||||
provisionRequester.doTransact(drm);
|
||||
retryOpen = true;
|
||||
} catch (ResourceBusyException e) {
|
||||
Log.w(TAG, "Resource busy in openSession, retrying...");
|
||||
retryOpen = true;
|
||||
sleep(1000);
|
||||
}
|
||||
} while (retryOpen);
|
||||
}
|
||||
|
||||
if (retryCount == 0) {
|
||||
Log.e(TAG, "Failed to provision device");
|
||||
mTestFailed = true;
|
||||
}
|
||||
return sessionId;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user