From 6066833081f4b8f8dda1c0d504b54387033f41cd Mon Sep 17 00:00:00 2001 From: Copybara-Service Date: Thu, 28 Sep 2023 09:31:14 -0700 Subject: [PATCH] Merge pull request #675 from shanujshekhar:shanujs/add-new-apis-exomediadrm PiperOrigin-RevId: 569205163 (cherry picked from commit 6d77838a6ba124917e5e2c88d92d4dba04e7cd16) --- .../media3/exoplayer/drm/ExoMediaDrm.java | 34 +++++++++++++++++++ .../exoplayer/drm/FrameworkMediaDrm.java | 20 +++++++++++ 2 files changed, 54 insertions(+) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/ExoMediaDrm.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/ExoMediaDrm.java index 9bd4205a7d..3d41aa667f 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/ExoMediaDrm.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/ExoMediaDrm.java @@ -523,6 +523,40 @@ public interface ExoMediaDrm { */ void restoreKeys(byte[] sessionId, byte[] keySetId); + /** + * Removes an offline license. + * + *

This method is generally not needed, and should only be used if the preferred approach of + * generating a license release request by passing {@link #KEY_TYPE_RELEASE} to {@link + * #getKeyRequest} is not possible. + * + *

This is an optional method, and some implementations may only support it on certain Android + * API levels. + * + *

See {@link MediaDrm#removeOfflineLicense(byte[])} for more details. + * + * @param keySetId The {@code keySetId} of the license to remove. + * @throws UnsupportedOperationException if the implementation doesn't support this method. + */ + default void removeOfflineLicense(byte[] keySetId) { + throw new UnsupportedOperationException(); + } + + /** + * Returns a list of the {@code keySetIds} for all offline licenses. + * + *

This is an optional method, and some implementations may only support it on certain Android + * API levels. + * + *

See {@link MediaDrm#getOfflineLicenseKeySetIds()} for more details. + * + * @return The list of {@code keySetIds} for all offline licenses. + * @throws UnsupportedOperationException if the implementation doesn't support this method. + */ + default List getOfflineLicenseKeySetIds() { + throw new UnsupportedOperationException(); + } + /** * Returns metrics data for this ExoMediaDrm instance, or {@code null} if metrics are unavailable. */ diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/FrameworkMediaDrm.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/FrameworkMediaDrm.java index 9ed07382a9..1cfb5d8dea 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/FrameworkMediaDrm.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/FrameworkMediaDrm.java @@ -327,6 +327,26 @@ public final class FrameworkMediaDrm implements ExoMediaDrm { mediaDrm.restoreKeys(sessionId, keySetId); } + @Override + @UnstableApi + @RequiresApi(29) + public void removeOfflineLicense(byte[] keySetId) { + if (Util.SDK_INT < 29) { + throw new UnsupportedOperationException(); + } + mediaDrm.removeOfflineLicense(keySetId); + } + + @Override + @UnstableApi + @RequiresApi(29) + public List getOfflineLicenseKeySetIds() { + if (Util.SDK_INT < 29) { + throw new UnsupportedOperationException(); + } + return mediaDrm.getOfflineLicenseKeySetIds(); + } + @UnstableApi @Override @Nullable