From a37ae8e5ba81435a21bc9dc8eff2ea88eceb25c8 Mon Sep 17 00:00:00 2001 From: Robert Shih Date: Wed, 3 Mar 2021 03:35:12 -0800 Subject: [PATCH] MediaDrm: add ERROR_PROVISIONING_REQUEST_REJECTED Native equivalents: +-------------+-----------------------------------------------+ | component | error code | +-------------+-----------------------------------------------+ | jni | JERROR_DRM_PROVISIONING_REQUEST_REJECTED | | libmediadrm | ERROR_DRM_PROVISIONING_REQUEST_REJECTED | | drm hal | ::V1_4::Status::PROVISIONING_REQUEST_REJECTED | +-------------+-----------------------------------------------+ Bug: 180579631 Test: MediaDrmTest#testBadProvisioningRequest Change-Id: I93da60177333dcedfb4c0a317d92fe002b7f14db --- core/api/current.txt | 13 +++++++------ media/java/android/media/MediaDrm.java | 21 +++++++++++++++------ media/jni/android_media_MediaDrm.cpp | 1 + media/jni/android_media_MediaDrm.h | 13 +++++++------ 4 files changed, 30 insertions(+), 18 deletions(-) diff --git a/core/api/current.txt b/core/api/current.txt index 2c388ad40494b..154c55ab63acc 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -21870,16 +21870,17 @@ package android.media { field public static final int ERROR_PROVISIONING_CERTIFICATE = 24; // 0x18 field public static final int ERROR_PROVISIONING_CONFIG = 25; // 0x19 field public static final int ERROR_PROVISIONING_PARSE = 26; // 0x1a - field public static final int ERROR_PROVISIONING_RETRY = 27; // 0x1b + field public static final int ERROR_PROVISIONING_REQUEST_REJECTED = 27; // 0x1b + field public static final int ERROR_PROVISIONING_RETRY = 28; // 0x1c field public static final int ERROR_RESOURCE_BUSY = 3; // 0x3 - field public static final int ERROR_RESOURCE_CONTENTION = 28; // 0x1c - field public static final int ERROR_SECURE_STOP_RELEASE = 29; // 0x1d + field public static final int ERROR_RESOURCE_CONTENTION = 29; // 0x1d + field public static final int ERROR_SECURE_STOP_RELEASE = 30; // 0x1e field public static final int ERROR_SESSION_NOT_OPENED = 5; // 0x5 - field public static final int ERROR_STORAGE_READ = 30; // 0x1e - field public static final int ERROR_STORAGE_WRITE = 31; // 0x1f + field public static final int ERROR_STORAGE_READ = 31; // 0x1f + field public static final int ERROR_STORAGE_WRITE = 32; // 0x20 field public static final int ERROR_UNKNOWN = 0; // 0x0 field public static final int ERROR_UNSUPPORTED_OPERATION = 6; // 0x6 - field public static final int ERROR_ZERO_SUBSAMPLES = 32; // 0x20 + field public static final int ERROR_ZERO_SUBSAMPLES = 33; // 0x21 } @Deprecated @IntDef({android.media.MediaDrm.HDCP_LEVEL_UNKNOWN, android.media.MediaDrm.HDCP_NONE, android.media.MediaDrm.HDCP_V1, android.media.MediaDrm.HDCP_V2, android.media.MediaDrm.HDCP_V2_1, android.media.MediaDrm.HDCP_V2_2, android.media.MediaDrm.HDCP_V2_3, android.media.MediaDrm.HDCP_NO_DIGITAL_OUTPUT}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface MediaDrm.HdcpLevel { diff --git a/media/java/android/media/MediaDrm.java b/media/java/android/media/MediaDrm.java index f7467a6360248..548b415fce74e 100644 --- a/media/java/android/media/MediaDrm.java +++ b/media/java/android/media/MediaDrm.java @@ -557,13 +557,21 @@ public final class MediaDrm implements AutoCloseable { */ public static final int ERROR_PROVISIONING_PARSE = 26; + /** + * The provisioning server detected an error in the provisioning + * request. + *

+ * Check for errors on the provisioning server. + */ + public static final int ERROR_PROVISIONING_REQUEST_REJECTED = 27; + /** * Provisioning failed in a way that is likely to succeed on a * subsequent attempt. *

* The app should retry the operation. */ - public static final int ERROR_PROVISIONING_RETRY = 27; + public static final int ERROR_PROVISIONING_RETRY = 28; /** * This indicates that apps using MediaDrm sessions are @@ -572,7 +580,7 @@ public final class MediaDrm implements AutoCloseable { *

* The app should retry the operation later. */ - public static final int ERROR_RESOURCE_CONTENTION = 28; + public static final int ERROR_RESOURCE_CONTENTION = 29; /** * Failed to generate a secure stop request because a field in the @@ -581,7 +589,7 @@ public final class MediaDrm implements AutoCloseable { * The secure stop can't be released on the server, but the app may * remove it explicitly using {@link MediaDrm#removeSecureStop}. */ - public static final int ERROR_SECURE_STOP_RELEASE = 29; + public static final int ERROR_SECURE_STOP_RELEASE = 30; /** * The plugin was unable to read data from the filesystem. @@ -589,7 +597,7 @@ public final class MediaDrm implements AutoCloseable { * Please see the general error handling strategy for unexpected errors * described in {@link ErrorCodes}. */ - public static final int ERROR_STORAGE_READ = 30; + public static final int ERROR_STORAGE_READ = 31; /** * The plugin was unable to write data to the filesystem. @@ -597,7 +605,7 @@ public final class MediaDrm implements AutoCloseable { * Please see the general error handling strategy for unexpected errors * described in {@link ErrorCodes}. */ - public static final int ERROR_STORAGE_WRITE = 31; + public static final int ERROR_STORAGE_WRITE = 32; /** * {@link MediaCodec#queueSecureInputBuffer} called with 0 subsamples. @@ -605,7 +613,7 @@ public final class MediaDrm implements AutoCloseable { * Check the {@link MediaCodec.CryptoInfo} object passed to {@link * MediaCodec#queueSecureInputBuffer}. */ - public static final int ERROR_ZERO_SUBSAMPLES = 32; + public static final int ERROR_ZERO_SUBSAMPLES = 33; } @@ -637,6 +645,7 @@ public final class MediaDrm implements AutoCloseable { ErrorCodes.ERROR_PROVISIONING_CERTIFICATE, ErrorCodes.ERROR_PROVISIONING_CONFIG, ErrorCodes.ERROR_PROVISIONING_PARSE, + ErrorCodes.ERROR_PROVISIONING_REQUEST_REJECTED, ErrorCodes.ERROR_PROVISIONING_RETRY, ErrorCodes.ERROR_SECURE_STOP_RELEASE, ErrorCodes.ERROR_STORAGE_READ, diff --git a/media/jni/android_media_MediaDrm.cpp b/media/jni/android_media_MediaDrm.cpp index 56f6c45bb50ee..4eada35983c53 100644 --- a/media/jni/android_media_MediaDrm.cpp +++ b/media/jni/android_media_MediaDrm.cpp @@ -376,6 +376,7 @@ jint MediaErrorToJavaError(status_t err) { STATUS_CASE(ERROR_DRM_PROVISIONING_CERTIFICATE); STATUS_CASE(ERROR_DRM_PROVISIONING_CONFIG); STATUS_CASE(ERROR_DRM_PROVISIONING_PARSE); + STATUS_CASE(ERROR_DRM_PROVISIONING_REQUEST_REJECTED); STATUS_CASE(ERROR_DRM_PROVISIONING_RETRY); STATUS_CASE(ERROR_DRM_RESOURCE_CONTENTION); STATUS_CASE(ERROR_DRM_SECURE_STOP_RELEASE); diff --git a/media/jni/android_media_MediaDrm.h b/media/jni/android_media_MediaDrm.h index dc0793af2d174..a64e3f2a7cf0c 100644 --- a/media/jni/android_media_MediaDrm.h +++ b/media/jni/android_media_MediaDrm.h @@ -58,12 +58,13 @@ enum { JERROR_DRM_PROVISIONING_CERTIFICATE = 24, JERROR_DRM_PROVISIONING_CONFIG = 25, JERROR_DRM_PROVISIONING_PARSE = 26, - JERROR_DRM_PROVISIONING_RETRY = 27, - JERROR_DRM_RESOURCE_CONTENTION = 28, - JERROR_DRM_SECURE_STOP_RELEASE = 29, - JERROR_DRM_STORAGE_READ = 30, - JERROR_DRM_STORAGE_WRITE = 31, - JERROR_DRM_ZERO_SUBSAMPLES = 32, + JERROR_DRM_PROVISIONING_REQUEST_REJECTED = 27, + JERROR_DRM_PROVISIONING_RETRY = 28, + JERROR_DRM_RESOURCE_CONTENTION = 29, + JERROR_DRM_SECURE_STOP_RELEASE = 30, + JERROR_DRM_STORAGE_READ = 31, + JERROR_DRM_STORAGE_WRITE = 32, + JERROR_DRM_ZERO_SUBSAMPLES = 33, }; struct ListenerArgs {