Loading api/current.txt +4 −0 Original line number Diff line number Diff line Loading @@ -15223,6 +15223,9 @@ package android.media { field public static final java.lang.String PROPERTY_DEVICE_UNIQUE_ID = "deviceUniqueId"; field public static final java.lang.String PROPERTY_VENDOR = "vendor"; field public static final java.lang.String PROPERTY_VERSION = "version"; field public static final int REQUEST_TYPE_INITIAL = 0; // 0x0 field public static final int REQUEST_TYPE_RELEASE = 2; // 0x2 field public static final int REQUEST_TYPE_RENEWAL = 1; // 0x1 } public final class MediaDrm.CryptoSession { Loading @@ -15235,6 +15238,7 @@ package android.media { public static final class MediaDrm.KeyRequest { method public byte[] getData(); method public java.lang.String getDefaultUrl(); method public int getRequestType(); } public static final class MediaDrm.MediaDrmStateException extends java.lang.IllegalStateException { api/system-current.txt +4 −0 Original line number Diff line number Diff line Loading @@ -16414,6 +16414,9 @@ package android.media { field public static final java.lang.String PROPERTY_DEVICE_UNIQUE_ID = "deviceUniqueId"; field public static final java.lang.String PROPERTY_VENDOR = "vendor"; field public static final java.lang.String PROPERTY_VERSION = "version"; field public static final int REQUEST_TYPE_INITIAL = 0; // 0x0 field public static final int REQUEST_TYPE_RELEASE = 2; // 0x2 field public static final int REQUEST_TYPE_RENEWAL = 1; // 0x1 } public final class MediaDrm.CryptoSession { Loading @@ -16426,6 +16429,7 @@ package android.media { public static final class MediaDrm.KeyRequest { method public byte[] getData(); method public java.lang.String getDefaultUrl(); method public int getRequestType(); } public static final class MediaDrm.MediaDrmStateException extends java.lang.IllegalStateException { media/java/android/media/MediaDrm.java +21 −0 Original line number Diff line number Diff line Loading @@ -382,12 +382,28 @@ public final class MediaDrm { */ public static final int KEY_TYPE_RELEASE = 3; /** * Key request type is initial license request */ public static final int REQUEST_TYPE_INITIAL = 0; /** * Key request type is license renewal */ public static final int REQUEST_TYPE_RENEWAL = 1; /** * Key request type is license release */ public static final int REQUEST_TYPE_RELEASE = 2; /** * Contains the opaque data an app uses to request keys from a license server */ public final static class KeyRequest { private byte[] mData; private String mDefaultUrl; private int mRequestType; KeyRequest() {} Loading @@ -402,6 +418,11 @@ public final class MediaDrm { * server URL from other sources. */ public String getDefaultUrl() { return mDefaultUrl; } /** * Get the type of the request */ public int getRequestType() { return mRequestType; } }; /** Loading media/jni/android_media_MediaDrm.cpp +38 −3 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ namespace android { struct RequestFields { jfieldID data; jfieldID defaultUrl; jfieldID requestType; }; struct ArrayListFields { Loading Loading @@ -101,6 +102,12 @@ struct KeyTypes { jint kKeyTypeRelease; } gKeyTypes; struct KeyRequestTypes { jint kKeyRequestTypeInitial; jint kKeyRequestTypeRenewal; jint kKeyRequestTypeRelease; } gKeyRequestTypes; struct CertificateTypes { jint kCertificateTypeNone; jint kCertificateTypeX509; Loading Loading @@ -587,6 +594,13 @@ static void android_media_MediaDrm_native_init(JNIEnv *env) { GET_STATIC_FIELD_ID(field, clazz, "KEY_TYPE_RELEASE", "I"); gKeyTypes.kKeyTypeRelease = env->GetStaticIntField(clazz, field); GET_STATIC_FIELD_ID(field, clazz, "REQUEST_TYPE_INITIAL", "I"); gKeyRequestTypes.kKeyRequestTypeInitial = env->GetStaticIntField(clazz, field); GET_STATIC_FIELD_ID(field, clazz, "REQUEST_TYPE_RENEWAL", "I"); gKeyRequestTypes.kKeyRequestTypeRenewal = env->GetStaticIntField(clazz, field); GET_STATIC_FIELD_ID(field, clazz, "REQUEST_TYPE_RELEASE", "I"); gKeyRequestTypes.kKeyRequestTypeRelease = env->GetStaticIntField(clazz, field); GET_STATIC_FIELD_ID(field, clazz, "CERTIFICATE_TYPE_NONE", "I"); gCertificateTypes.kCertificateTypeNone = env->GetStaticIntField(clazz, field); GET_STATIC_FIELD_ID(field, clazz, "CERTIFICATE_TYPE_X509", "I"); Loading @@ -595,6 +609,7 @@ static void android_media_MediaDrm_native_init(JNIEnv *env) { FIND_CLASS(clazz, "android/media/MediaDrm$KeyRequest"); GET_FIELD_ID(gFields.keyRequest.data, clazz, "mData", "[B"); GET_FIELD_ID(gFields.keyRequest.defaultUrl, clazz, "mDefaultUrl", "Ljava/lang/String;"); GET_FIELD_ID(gFields.keyRequest.requestType, clazz, "mRequestType", "I"); FIND_CLASS(clazz, "android/media/MediaDrm$ProvisionRequest"); GET_FIELD_ID(gFields.provisionRequest.data, clazz, "mData", "[B"); Loading Loading @@ -786,9 +801,10 @@ static jobject android_media_MediaDrm_getKeyRequest( Vector<uint8_t> request; String8 defaultUrl; DrmPlugin::KeyRequestType keyRequestType; status_t err = drm->getKeyRequest(sessionId, initData, mimeType, keyType, optParams, request, defaultUrl); keyType, optParams, request, defaultUrl, &keyRequestType); if (throwExceptionAsNecessary(env, err, "Failed to get key request")) { return NULL; Loading @@ -807,6 +823,25 @@ static jobject android_media_MediaDrm_getKeyRequest( jstring jdefaultUrl = env->NewStringUTF(defaultUrl.string()); env->SetObjectField(keyObj, gFields.keyRequest.defaultUrl, jdefaultUrl); switch (keyRequestType) { case DrmPlugin::kKeyRequestType_Initial: env->SetIntField(keyObj, gFields.keyRequest.requestType, gKeyRequestTypes.kKeyRequestTypeInitial); break; case DrmPlugin::kKeyRequestType_Renewal: env->SetIntField(keyObj, gFields.keyRequest.requestType, gKeyRequestTypes.kKeyRequestTypeRenewal); break; case DrmPlugin::kKeyRequestType_Release: env->SetIntField(keyObj, gFields.keyRequest.requestType, gKeyRequestTypes.kKeyRequestTypeRelease); break; case DrmPlugin::kKeyRequestType_Unknown: throwStateException(env, "DRM plugin failure: unknown key request type", ERROR_DRM_UNKNOWN); break; } } return keyObj; Loading Loading
api/current.txt +4 −0 Original line number Diff line number Diff line Loading @@ -15223,6 +15223,9 @@ package android.media { field public static final java.lang.String PROPERTY_DEVICE_UNIQUE_ID = "deviceUniqueId"; field public static final java.lang.String PROPERTY_VENDOR = "vendor"; field public static final java.lang.String PROPERTY_VERSION = "version"; field public static final int REQUEST_TYPE_INITIAL = 0; // 0x0 field public static final int REQUEST_TYPE_RELEASE = 2; // 0x2 field public static final int REQUEST_TYPE_RENEWAL = 1; // 0x1 } public final class MediaDrm.CryptoSession { Loading @@ -15235,6 +15238,7 @@ package android.media { public static final class MediaDrm.KeyRequest { method public byte[] getData(); method public java.lang.String getDefaultUrl(); method public int getRequestType(); } public static final class MediaDrm.MediaDrmStateException extends java.lang.IllegalStateException {
api/system-current.txt +4 −0 Original line number Diff line number Diff line Loading @@ -16414,6 +16414,9 @@ package android.media { field public static final java.lang.String PROPERTY_DEVICE_UNIQUE_ID = "deviceUniqueId"; field public static final java.lang.String PROPERTY_VENDOR = "vendor"; field public static final java.lang.String PROPERTY_VERSION = "version"; field public static final int REQUEST_TYPE_INITIAL = 0; // 0x0 field public static final int REQUEST_TYPE_RELEASE = 2; // 0x2 field public static final int REQUEST_TYPE_RENEWAL = 1; // 0x1 } public final class MediaDrm.CryptoSession { Loading @@ -16426,6 +16429,7 @@ package android.media { public static final class MediaDrm.KeyRequest { method public byte[] getData(); method public java.lang.String getDefaultUrl(); method public int getRequestType(); } public static final class MediaDrm.MediaDrmStateException extends java.lang.IllegalStateException {
media/java/android/media/MediaDrm.java +21 −0 Original line number Diff line number Diff line Loading @@ -382,12 +382,28 @@ public final class MediaDrm { */ public static final int KEY_TYPE_RELEASE = 3; /** * Key request type is initial license request */ public static final int REQUEST_TYPE_INITIAL = 0; /** * Key request type is license renewal */ public static final int REQUEST_TYPE_RENEWAL = 1; /** * Key request type is license release */ public static final int REQUEST_TYPE_RELEASE = 2; /** * Contains the opaque data an app uses to request keys from a license server */ public final static class KeyRequest { private byte[] mData; private String mDefaultUrl; private int mRequestType; KeyRequest() {} Loading @@ -402,6 +418,11 @@ public final class MediaDrm { * server URL from other sources. */ public String getDefaultUrl() { return mDefaultUrl; } /** * Get the type of the request */ public int getRequestType() { return mRequestType; } }; /** Loading
media/jni/android_media_MediaDrm.cpp +38 −3 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ namespace android { struct RequestFields { jfieldID data; jfieldID defaultUrl; jfieldID requestType; }; struct ArrayListFields { Loading Loading @@ -101,6 +102,12 @@ struct KeyTypes { jint kKeyTypeRelease; } gKeyTypes; struct KeyRequestTypes { jint kKeyRequestTypeInitial; jint kKeyRequestTypeRenewal; jint kKeyRequestTypeRelease; } gKeyRequestTypes; struct CertificateTypes { jint kCertificateTypeNone; jint kCertificateTypeX509; Loading Loading @@ -587,6 +594,13 @@ static void android_media_MediaDrm_native_init(JNIEnv *env) { GET_STATIC_FIELD_ID(field, clazz, "KEY_TYPE_RELEASE", "I"); gKeyTypes.kKeyTypeRelease = env->GetStaticIntField(clazz, field); GET_STATIC_FIELD_ID(field, clazz, "REQUEST_TYPE_INITIAL", "I"); gKeyRequestTypes.kKeyRequestTypeInitial = env->GetStaticIntField(clazz, field); GET_STATIC_FIELD_ID(field, clazz, "REQUEST_TYPE_RENEWAL", "I"); gKeyRequestTypes.kKeyRequestTypeRenewal = env->GetStaticIntField(clazz, field); GET_STATIC_FIELD_ID(field, clazz, "REQUEST_TYPE_RELEASE", "I"); gKeyRequestTypes.kKeyRequestTypeRelease = env->GetStaticIntField(clazz, field); GET_STATIC_FIELD_ID(field, clazz, "CERTIFICATE_TYPE_NONE", "I"); gCertificateTypes.kCertificateTypeNone = env->GetStaticIntField(clazz, field); GET_STATIC_FIELD_ID(field, clazz, "CERTIFICATE_TYPE_X509", "I"); Loading @@ -595,6 +609,7 @@ static void android_media_MediaDrm_native_init(JNIEnv *env) { FIND_CLASS(clazz, "android/media/MediaDrm$KeyRequest"); GET_FIELD_ID(gFields.keyRequest.data, clazz, "mData", "[B"); GET_FIELD_ID(gFields.keyRequest.defaultUrl, clazz, "mDefaultUrl", "Ljava/lang/String;"); GET_FIELD_ID(gFields.keyRequest.requestType, clazz, "mRequestType", "I"); FIND_CLASS(clazz, "android/media/MediaDrm$ProvisionRequest"); GET_FIELD_ID(gFields.provisionRequest.data, clazz, "mData", "[B"); Loading Loading @@ -786,9 +801,10 @@ static jobject android_media_MediaDrm_getKeyRequest( Vector<uint8_t> request; String8 defaultUrl; DrmPlugin::KeyRequestType keyRequestType; status_t err = drm->getKeyRequest(sessionId, initData, mimeType, keyType, optParams, request, defaultUrl); keyType, optParams, request, defaultUrl, &keyRequestType); if (throwExceptionAsNecessary(env, err, "Failed to get key request")) { return NULL; Loading @@ -807,6 +823,25 @@ static jobject android_media_MediaDrm_getKeyRequest( jstring jdefaultUrl = env->NewStringUTF(defaultUrl.string()); env->SetObjectField(keyObj, gFields.keyRequest.defaultUrl, jdefaultUrl); switch (keyRequestType) { case DrmPlugin::kKeyRequestType_Initial: env->SetIntField(keyObj, gFields.keyRequest.requestType, gKeyRequestTypes.kKeyRequestTypeInitial); break; case DrmPlugin::kKeyRequestType_Renewal: env->SetIntField(keyObj, gFields.keyRequest.requestType, gKeyRequestTypes.kKeyRequestTypeRenewal); break; case DrmPlugin::kKeyRequestType_Release: env->SetIntField(keyObj, gFields.keyRequest.requestType, gKeyRequestTypes.kKeyRequestTypeRelease); break; case DrmPlugin::kKeyRequestType_Unknown: throwStateException(env, "DRM plugin failure: unknown key request type", ERROR_DRM_UNKNOWN); break; } } return keyObj; Loading