MediaDrmClearkeyTest: test improved Exception APIs
Bug: 162255728
Test: this
Change-Id: I3f094c843a744aa2f391e5f0b0d351816147e65f
diff --git a/tests/tests/media/src/android/media/cts/MediaDrmClearkeyTest.java b/tests/tests/media/src/android/media/cts/MediaDrmClearkeyTest.java
index e3c7f6b..9945d8c 100644
--- a/tests/tests/media/src/android/media/cts/MediaDrmClearkeyTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaDrmClearkeyTest.java
@@ -21,6 +21,9 @@
import android.media.MediaDrm.MediaDrmStateException;
import android.media.MediaDrmException;
import android.media.MediaFormat;
+import android.media.NotProvisionedException;
+import android.media.ResourceBusyException;
+import android.media.UnsupportedSchemeException;
import android.media.cts.TestUtils.Monitor;
import android.net.Uri;
import android.os.Looper;
@@ -1167,8 +1170,9 @@
byte[] ignoredInitData = new byte[] { 1 };
drm.getKeyRequest(sessionId, ignoredInitData, "cenc", MediaDrm.KEY_TYPE_STREAMING, null);
} catch (MediaDrm.SessionException e) {
- if (e.getErrorCode() != MediaDrm.SessionException.ERROR_RESOURCE_CONTENTION) {
- throw new Error("Incorrect error code, expected ERROR_RESOURCE_CONTENTION");
+ if (e.getErrorCode() != MediaDrm.SessionException.ERROR_RESOURCE_CONTENTION ||
+ !e.isTransient()) {
+ throw new Error("Expected transient ERROR_RESOURCE_CONTENTION");
}
gotException = true;
}
@@ -1250,6 +1254,35 @@
}
}
+ @Presubmit
+ public void testMediaDrmStateExceptionErrorCode()
+ throws ResourceBusyException, UnsupportedSchemeException, NotProvisionedException {
+ if (watchHasNoClearkeySupport()) {
+ return;
+ }
+
+ MediaDrm drm = null;
+ try {
+ drm = new MediaDrm(CLEARKEY_SCHEME_UUID);
+ byte[] sessionId = drm.openSession();
+ drm.closeSession(sessionId);
+
+ byte[] ignoredInitData = new byte[]{1};
+ drm.getKeyRequest(sessionId, ignoredInitData, "cenc",
+ MediaDrm.KEY_TYPE_STREAMING,
+ null);
+ } catch(MediaDrmStateException e) {
+ Log.i(TAG, "Verifying exception error code", e);
+ assertFalse("ERROR_SESSION_NOT_OPENED requires new session", e.isTransient());
+ assertEquals("Expected ERROR_SESSION_NOT_OPENED",
+ MediaDrm.ErrorCodes.ERROR_SESSION_NOT_OPENED, e.getErrorCode());
+ } finally {
+ if (drm != null) {
+ drm.close();
+ }
+ }
+ }
+
private String getClearkeyVersion(MediaDrm drm) {
try {
return drm.getPropertyString("version");