From 656c97f1224734191c0050ea3635a9932a6025f2 Mon Sep 17 00:00:00 2001 From: olly Date: Tue, 17 Sep 2019 16:30:31 +0100 Subject: [PATCH] Minor DefaultDrmSessionManager tweaks PiperOrigin-RevId: 269574864 --- .../drm/DefaultDrmSessionManager.java | 62 ++++++++++--------- .../exoplayer2/drm/DummyExoMediaDrm.java | 3 +- 2 files changed, 35 insertions(+), 30 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java b/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java index 76f90d1c64..759f88cdab 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java @@ -343,7 +343,8 @@ public class DefaultDrmSessionManager /** * Sets the mode, which determines the role of sessions acquired from the instance. This must be - * called before {@link #acquireSession(Looper, DrmInitData)} is called. + * called before {@link #acquireSession(Looper, DrmInitData)} or {@link + * #acquirePlaceholderSession(Looper)} is called. * *

By default, the mode is {@link #MODE_PLAYBACK} and a streaming license is requested when * required. @@ -410,6 +411,7 @@ public class DefaultDrmSessionManager @Override @Nullable public DrmSession acquirePlaceholderSession(Looper playbackLooper) { + assertExpectedPlaybackLooper(playbackLooper); if (!allowPlaceholderSessions || mediaDrm.getExoMediaCryptoType() == null) { return null; } @@ -426,6 +428,7 @@ public class DefaultDrmSessionManager @Override public DrmSession acquireSession(Looper playbackLooper, DrmInitData drmInitData) { + assertExpectedPlaybackLooper(playbackLooper); maybeCreateMediaDrmHandler(playbackLooper); List schemeDatas = null; @@ -461,34 +464,6 @@ public class DefaultDrmSessionManager return session; } - private DefaultDrmSession createNewDefaultSession( - @Nullable List schemeDatas, boolean isPlaceholderSession) { - return new DefaultDrmSession<>( - uuid, - mediaDrm, - /* provisioningManager= */ this, - /* releaseCallback= */ this::onSessionReleased, - schemeDatas, - mode, - isPlaceholderSession, - offlineLicenseKeySetId, - optionalKeyRequestParameters, - callback, - Assertions.checkNotNull(playbackLooper), - eventDispatcher, - loadErrorHandlingPolicy); - } - - private void maybeCreateMediaDrmHandler(Looper playbackLooper) { - Assertions.checkState(this.playbackLooper == null || this.playbackLooper == playbackLooper); - if (sessions.isEmpty()) { - this.playbackLooper = playbackLooper; - if (mediaDrmHandler == null) { - mediaDrmHandler = new MediaDrmHandler(playbackLooper); - } - } - } - @Override @Nullable public Class getExoMediaCryptoType(DrmInitData drmInitData) { @@ -528,6 +503,35 @@ public class DefaultDrmSessionManager // Internal methods. + private void assertExpectedPlaybackLooper(Looper playbackLooper) { + Assertions.checkState(this.playbackLooper == null || this.playbackLooper == playbackLooper); + this.playbackLooper = playbackLooper; + } + + private void maybeCreateMediaDrmHandler(Looper playbackLooper) { + if (mediaDrmHandler == null) { + mediaDrmHandler = new MediaDrmHandler(playbackLooper); + } + } + + private DefaultDrmSession createNewDefaultSession( + @Nullable List schemeDatas, boolean isPlaceholderSession) { + return new DefaultDrmSession<>( + uuid, + mediaDrm, + /* provisioningManager= */ this, + /* releaseCallback= */ this::onSessionReleased, + schemeDatas, + mode, + isPlaceholderSession, + offlineLicenseKeySetId, + optionalKeyRequestParameters, + callback, + Assertions.checkNotNull(playbackLooper), + eventDispatcher, + loadErrorHandlingPolicy); + } + private void onSessionReleased(DefaultDrmSession drmSession) { sessions.remove(drmSession); if (placeholderDrmSession == drmSession) { 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 9b66fdab7b..f7b24cf251 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 @@ -18,6 +18,7 @@ package com.google.android.exoplayer2.drm; import android.media.MediaDrmException; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; +import com.google.android.exoplayer2.util.Util; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -110,7 +111,7 @@ public final class DummyExoMediaDrm implements ExoMedi @Override public byte[] getPropertyByteArray(String propertyName) { - return new byte[0]; + return Util.EMPTY_BYTE_ARRAY; } @Override