blob: d8311f67012d974f8dd0c03573e92215500c7e6b [file] [log] [blame]
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.android.exoplayer2.drm;
import android.media.MediaDrmException;
import android.os.PersistableBundle;
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;
/** An {@link ExoMediaDrm} that does not support any protection schemes. */
@RequiresApi(18)
public final class DummyExoMediaDrm implements ExoMediaDrm {
/** Returns a new instance. */
public static DummyExoMediaDrm getInstance() {
return new DummyExoMediaDrm();
}
@Override
public void setOnEventListener(@Nullable OnEventListener listener) {
// Do nothing.
}
@Override
public void setOnKeyStatusChangeListener(@Nullable OnKeyStatusChangeListener listener) {
// Do nothing.
}
@Override
public void setOnExpirationUpdateListener(@Nullable OnExpirationUpdateListener listener) {
// Do nothing.
}
@Override
public byte[] openSession() throws MediaDrmException {
throw new MediaDrmException("Attempting to open a session using a dummy ExoMediaDrm.");
}
@Override
public void closeSession(byte[] sessionId) {
// Do nothing.
}
@Override
public KeyRequest getKeyRequest(
byte[] scope,
@Nullable List<DrmInitData.SchemeData> schemeDatas,
int keyType,
@Nullable HashMap<String, String> optionalParameters) {
// Should not be invoked. No session should exist.
throw new IllegalStateException();
}
@Override
@Nullable
public byte[] provideKeyResponse(byte[] scope, byte[] response) {
// Should not be invoked. No session should exist.
throw new IllegalStateException();
}
@Override
public ProvisionRequest getProvisionRequest() {
// Should not be invoked. No provision should be required.
throw new IllegalStateException();
}
@Override
public void provideProvisionResponse(byte[] response) {
// Should not be invoked. No provision should be required.
throw new IllegalStateException();
}
@Override
public Map<String, String> queryKeyStatus(byte[] sessionId) {
// Should not be invoked. No session should exist.
throw new IllegalStateException();
}
@Override
public void acquire() {
// Do nothing.
}
@Override
public void release() {
// Do nothing.
}
@Override
public void restoreKeys(byte[] sessionId, byte[] keySetId) {
// Should not be invoked. No session should exist.
throw new IllegalStateException();
}
@Override
@Nullable
public PersistableBundle getMetrics() {
return null;
}
@Override
public String getPropertyString(String propertyName) {
return "";
}
@Override
public byte[] getPropertyByteArray(String propertyName) {
return Util.EMPTY_BYTE_ARRAY;
}
@Override
public void setPropertyString(String propertyName, String value) {
// Do nothing.
}
@Override
public void setPropertyByteArray(String propertyName, byte[] value) {
// Do nothing.
}
@Override
public ExoMediaCrypto createMediaCrypto(byte[] sessionId) {
// Should not be invoked. No session should exist.
throw new IllegalStateException();
}
@Override
@Nullable
public Class<ExoMediaCrypto> getExoMediaCryptoType() {
// No ExoMediaCrypto type is supported.
return null;
}
}