From 2b88961bc1c75943071d8646be985b0596eb79f8 Mon Sep 17 00:00:00 2001 From: aquilescanta Date: Wed, 4 Mar 2020 13:15:14 +0000 Subject: [PATCH] Add ExoMediaDrm.OnExpirationUpdateListener Which mirrors MediaDrm.OnExpirationUpdateListener. PiperOrigin-RevId: 298826713 --- .../exoplayer2/drm/DummyExoMediaDrm.java | 5 ++++ .../android/exoplayer2/drm/ExoMediaDrm.java | 24 ++++++++++++++++--- .../exoplayer2/drm/FrameworkMediaDrm.java | 22 ++++++++++++++--- 3 files changed, 45 insertions(+), 6 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/drm/DummyExoMediaDrm.java b/library/core/src/main/java/com/google/android/exoplayer2/drm/DummyExoMediaDrm.java index 6390da9f62..b7e1dc9d62 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/drm/DummyExoMediaDrm.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/drm/DummyExoMediaDrm.java @@ -44,6 +44,11 @@ public final class DummyExoMediaDrm implements ExoMedi // Do nothing. } + @Override + public void setOnExpirationUpdateListener(OnExpirationUpdateListener listener) { + // Do nothing. + } + @Override public byte[] openSession() throws MediaDrmException { throw new MediaDrmException("Attempting to open a session using a dummy ExoMediaDrm."); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/drm/ExoMediaDrm.java b/library/core/src/main/java/com/google/android/exoplayer2/drm/ExoMediaDrm.java index b6ee644842..0a337798fa 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/drm/ExoMediaDrm.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/drm/ExoMediaDrm.java @@ -149,6 +149,23 @@ public interface ExoMediaDrm { boolean hasNewUsableKey); } + /** @see android.media.MediaDrm.OnExpirationUpdateListener */ + interface OnExpirationUpdateListener { + + /** + * Called when a session expiration update occurs, to inform the app about the change in + * expiration time + * + * @param mediaDrm The {@link ExoMediaDrm} object on which the event occurred. + * @param sessionId The DRM session ID on which the event occurred + * @param expirationTimeMs The new expiration time for the keys in the session. The time is in + * milliseconds, relative to the Unix epoch. A time of 0 indicates that the keys never + * expire. + */ + void onExpirationUpdate( + ExoMediaDrm mediaDrm, byte[] sessionId, long expirationTimeMs); + } + /** @see android.media.MediaDrm.KeyStatus */ final class KeyStatus { @@ -222,9 +239,10 @@ public interface ExoMediaDrm { */ void setOnKeyStatusChangeListener(OnKeyStatusChangeListener listener); - /** - * @see MediaDrm#openSession() - */ + /** @see MediaDrm#setOnExpirationUpdateListener(MediaDrm.OnExpirationUpdateListener, Handler) */ + void setOnExpirationUpdateListener(OnExpirationUpdateListener listener); + + /** @see MediaDrm#openSession() */ byte[] openSession() throws MediaDrmException; /** diff --git a/library/core/src/main/java/com/google/android/exoplayer2/drm/FrameworkMediaDrm.java b/library/core/src/main/java/com/google/android/exoplayer2/drm/FrameworkMediaDrm.java index 5a994fa9f3..2f5e258e86 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/drm/FrameworkMediaDrm.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/drm/FrameworkMediaDrm.java @@ -107,7 +107,7 @@ public final class FrameworkMediaDrm implements ExoMediaDrm listener) { + ExoMediaDrm.OnEventListener listener) { mediaDrm.setOnEventListener( listener == null ? null @@ -117,7 +117,7 @@ public final class FrameworkMediaDrm implements ExoMediaDrm listener) { + ExoMediaDrm.OnKeyStatusChangeListener listener) { if (Util.SDK_INT < 23) { throw new UnsupportedOperationException(); } @@ -133,7 +133,23 @@ public final class FrameworkMediaDrm implements ExoMediaDrm listener) { + if (Util.SDK_INT < 23) { + throw new UnsupportedOperationException(); + } + + mediaDrm.setOnExpirationUpdateListener( + listener == null + ? null + : (mediaDrm, sessionId, expirationTimeMs) -> { + listener.onExpirationUpdate(FrameworkMediaDrm.this, sessionId, expirationTimeMs); + }, + /* handler= */ null); } @Override