diff --git a/libwvdrmengine/test/castv2/Android.mk b/libwvdrmengine/test/castv2/Android.mk index 117aaf67..8b255b06 100644 --- a/libwvdrmengine/test/castv2/Android.mk +++ b/libwvdrmengine/test/castv2/Android.mk @@ -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 diff --git a/libwvdrmengine/test/castv2/src/com/android/castv2/test/CastSignAPITest.java b/libwvdrmengine/test/castv2/src/com/android/castv2/test/CastSignAPITest.java index 3a6f86e7..76c57400 100644 --- a/libwvdrmengine/test/castv2/src/com/android/castv2/test/CastSignAPITest.java +++ b/libwvdrmengine/test/castv2/src/com/android/castv2/test/CastSignAPITest.java @@ -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" + diff --git a/libwvdrmengine/test/java/src/com/widevine/test/MediaDrmAPITest.java b/libwvdrmengine/test/java/src/com/widevine/test/MediaDrmAPITest.java index ce712743..d145c3d5 100644 --- a/libwvdrmengine/test/java/src/com/widevine/test/MediaDrmAPITest.java +++ b/libwvdrmengine/test/java/src/com/widevine/test/MediaDrmAPITest.java @@ -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; }