Commit efc7f556 by aquilescanta Committed by Oliver Woodman

Make DefaultDrmSession package private

PiperOrigin-RevId: 278639779
parent 02a83a53
...@@ -48,7 +48,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; ...@@ -48,7 +48,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
/** A {@link DrmSession} that supports playbacks using {@link ExoMediaDrm}. */ /** A {@link DrmSession} that supports playbacks using {@link ExoMediaDrm}. */
@TargetApi(18) @TargetApi(18)
public class DefaultDrmSession<T extends ExoMediaCrypto> implements DrmSession<T> { /* package */ class DefaultDrmSession<T extends ExoMediaCrypto> implements DrmSession<T> {
/** Thrown when an unexpected exception or error is thrown during provisioning or key requests. */ /** Thrown when an unexpected exception or error is thrown during provisioning or key requests. */
public static final class UnexpectedDrmSessionException extends IOException { public static final class UnexpectedDrmSessionException extends IOException {
......
...@@ -23,7 +23,6 @@ import android.os.Message; ...@@ -23,7 +23,6 @@ import android.os.Message;
import androidx.annotation.IntDef; import androidx.annotation.IntDef;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.drm.DefaultDrmSession.ProvisioningManager;
import com.google.android.exoplayer2.drm.DrmInitData.SchemeData; import com.google.android.exoplayer2.drm.DrmInitData.SchemeData;
import com.google.android.exoplayer2.drm.DrmSession.DrmSessionException; import com.google.android.exoplayer2.drm.DrmSession.DrmSessionException;
import com.google.android.exoplayer2.drm.ExoMediaDrm.OnEventListener; import com.google.android.exoplayer2.drm.ExoMediaDrm.OnEventListener;
...@@ -45,8 +44,7 @@ import java.util.UUID; ...@@ -45,8 +44,7 @@ import java.util.UUID;
/** A {@link DrmSessionManager} that supports playbacks using {@link ExoMediaDrm}. */ /** A {@link DrmSessionManager} that supports playbacks using {@link ExoMediaDrm}. */
@TargetApi(18) @TargetApi(18)
public class DefaultDrmSessionManager<T extends ExoMediaCrypto> public class DefaultDrmSessionManager<T extends ExoMediaCrypto> implements DrmSessionManager<T> {
implements DrmSessionManager<T>, ProvisioningManager<T> {
/** /**
* Builder for {@link DefaultDrmSessionManager} instances. * Builder for {@link DefaultDrmSessionManager} instances.
...@@ -230,6 +228,7 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto> ...@@ -230,6 +228,7 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
private final boolean multiSession; private final boolean multiSession;
private final boolean preferSecureDecoders; private final boolean preferSecureDecoders;
@Flags private final int flags; @Flags private final int flags;
private final ProvisioningManagerImpl provisioningManagerImpl;
private final LoadErrorHandlingPolicy loadErrorHandlingPolicy; private final LoadErrorHandlingPolicy loadErrorHandlingPolicy;
private final List<DefaultDrmSession<T>> sessions; private final List<DefaultDrmSession<T>> sessions;
...@@ -348,6 +347,7 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto> ...@@ -348,6 +347,7 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
this.preferSecureDecoders = preferSecureDecoders; this.preferSecureDecoders = preferSecureDecoders;
this.flags = flags; this.flags = flags;
this.loadErrorHandlingPolicy = loadErrorHandlingPolicy; this.loadErrorHandlingPolicy = loadErrorHandlingPolicy;
provisioningManagerImpl = new ProvisioningManagerImpl();
mode = MODE_PLAYBACK; mode = MODE_PLAYBACK;
sessions = new ArrayList<>(); sessions = new ArrayList<>();
provisioningSessions = new ArrayList<>(); provisioningSessions = new ArrayList<>();
...@@ -536,37 +536,6 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto> ...@@ -536,37 +536,6 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
: null; : null;
} }
// ProvisioningManager implementation.
@Override
public void provisionRequired(DefaultDrmSession<T> session) {
if (provisioningSessions.contains(session)) {
// The session has already requested provisioning.
return;
}
provisioningSessions.add(session);
if (provisioningSessions.size() == 1) {
// This is the first session requesting provisioning, so have it perform the operation.
session.provision();
}
}
@Override
public void onProvisionCompleted() {
for (DefaultDrmSession<T> session : provisioningSessions) {
session.onProvisionCompleted();
}
provisioningSessions.clear();
}
@Override
public void onProvisionError(Exception error) {
for (DefaultDrmSession<T> session : provisioningSessions) {
session.onProvisionError(error);
}
provisioningSessions.clear();
}
// Internal methods. // Internal methods.
private void assertExpectedPlaybackLooper(Looper playbackLooper) { private void assertExpectedPlaybackLooper(Looper playbackLooper) {
...@@ -586,7 +555,7 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto> ...@@ -586,7 +555,7 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
return new DefaultDrmSession<>( return new DefaultDrmSession<>(
uuid, uuid,
exoMediaDrm, exoMediaDrm,
/* provisioningManager= */ this, /* provisioningManager= */ provisioningManagerImpl,
/* releaseCallback= */ this::onSessionReleased, /* releaseCallback= */ this::onSessionReleased,
schemeDatas, schemeDatas,
mode, mode,
...@@ -664,6 +633,37 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto> ...@@ -664,6 +633,37 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
} }
} }
private class ProvisioningManagerImpl implements DefaultDrmSession.ProvisioningManager<T> {
@Override
public void provisionRequired(DefaultDrmSession<T> session) {
if (provisioningSessions.contains(session)) {
// The session has already requested provisioning.
return;
}
provisioningSessions.add(session);
if (provisioningSessions.size() == 1) {
// This is the first session requesting provisioning, so have it perform the operation.
session.provision();
}
}
@Override
public void onProvisionCompleted() {
for (DefaultDrmSession<T> session : provisioningSessions) {
session.onProvisionCompleted();
}
provisioningSessions.clear();
}
@Override
public void onProvisionError(Exception error) {
for (DefaultDrmSession<T> session : provisioningSessions) {
session.onProvisionError(error);
}
provisioningSessions.clear();
}
}
private class MediaDrmEventListener implements OnEventListener<T> { private class MediaDrmEventListener implements OnEventListener<T> {
@Override @Override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment