ExoMediaDrmpublic final class FakeExoMediaDrm extends Object implements ExoMediaDrm
ExoMediaDrm for use in tests.
FakeExoMediaDrm.LicenseServer can be used to respond to interactions stemming from getKeyRequest(byte[], List, int, HashMap) and provideKeyResponse(byte[], byte[]).
Currently only supports streaming key requests.
| Modifier and Type | Class | Description |
|---|---|---|
static class |
FakeExoMediaDrm.LicenseServer |
An license server implementation to interact with
FakeExoMediaDrm. |
ExoMediaDrm.AppManagedProvider, ExoMediaDrm.KeyRequest, ExoMediaDrm.KeyStatus, ExoMediaDrm.OnEventListener, ExoMediaDrm.OnExpirationUpdateListener, ExoMediaDrm.OnKeyStatusChangeListener, ExoMediaDrm.Provider, ExoMediaDrm.ProvisionRequest| Modifier and Type | Field | Description |
|---|---|---|
static ExoMediaDrm.ProvisionRequest |
FAKE_PROVISION_REQUEST |
|
static String |
KEY_STATUS_AVAILABLE |
Value for use with the Map returned from
queryKeyStatus(byte[]). |
static String |
KEY_STATUS_KEY |
Key for use with the Map returned from
queryKeyStatus(byte[]). |
static String |
KEY_STATUS_UNAVAILABLE |
Value for use with the Map returned from
queryKeyStatus(byte[]). |
EVENT_KEY_EXPIRED, EVENT_KEY_REQUIRED, EVENT_PROVISION_REQUIRED, KEY_TYPE_OFFLINE, KEY_TYPE_RELEASE, KEY_TYPE_STREAMING| Constructor | Description |
|---|---|
FakeExoMediaDrm() |
Constructs an instance that returns random and unique
sessionIds for subsequent calls
to openSession() with no limit on the number of concurrent open sessions. |
FakeExoMediaDrm(int maxConcurrentSessions) |
Constructs an instance that returns random and unique
sessionIds for subsequent calls
to openSession() with a limit on the number of concurrent open sessions. |
| Modifier and Type | Method | Description |
|---|---|---|
void |
acquire() |
Increments the reference count.
|
void |
closeSession(byte[] sessionId) |
Closes a DRM session.
|
ExoMediaCrypto |
createMediaCrypto(byte[] sessionId) |
Creates an
ExoMediaCrypto for a given session. |
Class<com.google.android.exoplayer2.testutil.FakeExoMediaDrm.FakeExoMediaCrypto> |
getExoMediaCryptoType() |
Returns the
ExoMediaCrypto type created by ExoMediaDrm.createMediaCrypto(byte[]). |
ExoMediaDrm.KeyRequest |
getKeyRequest(byte[] scope,
List<DrmInitData.SchemeData> schemeDatas,
int keyType,
HashMap<String,String> optionalParameters) |
Generates a key request.
|
PersistableBundle |
getMetrics() |
Returns metrics data for this ExoMediaDrm instance, or
null if metrics are unavailable. |
byte[] |
getPropertyByteArray(String propertyName) |
Returns the value of a byte array property.
|
String |
getPropertyString(String propertyName) |
Returns the value of a string property.
|
ExoMediaDrm.ProvisionRequest |
getProvisionRequest() |
Generates a provisioning request.
|
byte[] |
openSession() |
Opens a new DRM session.
|
byte[] |
provideKeyResponse(byte[] scope,
byte[] response) |
Provides a key response for the last request to be generated using
ExoMediaDrm.getKeyRequest(byte[], java.util.List<com.google.android.exoplayer2.drm.DrmInitData.SchemeData>, int, java.util.HashMap<java.lang.String, java.lang.String>). |
void |
provideProvisionResponse(byte[] response) |
Provides a provisioning response for the last request to be generated using
ExoMediaDrm.getProvisionRequest(). |
Map<String,String> |
queryKeyStatus(byte[] sessionId) |
Returns the key status for a given session, as {name, value} pairs.
|
void |
release() |
Decrements the reference count.
|
void |
restoreKeys(byte[] sessionId,
byte[] keySetId) |
Restores persisted offline keys into a session.
|
void |
setOnEventListener(ExoMediaDrm.OnEventListener listener) |
Sets the listener for DRM events.
|
void |
setOnExpirationUpdateListener(ExoMediaDrm.OnExpirationUpdateListener listener) |
Sets the listener for session expiration events.
|
void |
setOnKeyStatusChangeListener(ExoMediaDrm.OnKeyStatusChangeListener listener) |
Sets the listener for key status change events.
|
void |
setPropertyByteArray(String propertyName,
byte[] value) |
Sets the value of a byte array property.
|
void |
setPropertyString(String propertyName,
String value) |
Sets the value of a string property.
|
public static final ExoMediaDrm.ProvisionRequest FAKE_PROVISION_REQUEST
public static final String KEY_STATUS_KEY
queryKeyStatus(byte[]).public static final String KEY_STATUS_AVAILABLE
queryKeyStatus(byte[]).public static final String KEY_STATUS_UNAVAILABLE
queryKeyStatus(byte[]).public FakeExoMediaDrm()
sessionIds for subsequent calls
to openSession() with no limit on the number of concurrent open sessions.public FakeExoMediaDrm(int maxConcurrentSessions)
sessionIds for subsequent calls
to openSession() with a limit on the number of concurrent open sessions.maxConcurrentSessions - The max number of sessions allowed to be open simultaneously.public void setOnEventListener(@Nullable
ExoMediaDrm.OnEventListener listener)
ExoMediaDrmThis is an optional method, and some implementations may only support it on certain Android API levels.
setOnEventListener in interface ExoMediaDrmlistener - The listener to receive events, or null to stop receiving events.MediaDrm.setOnEventListener(MediaDrm.OnEventListener)public void setOnKeyStatusChangeListener(@Nullable
ExoMediaDrm.OnKeyStatusChangeListener listener)
ExoMediaDrmThis is an optional method, and some implementations may only support it on certain Android API levels.
setOnKeyStatusChangeListener in interface ExoMediaDrmlistener - The listener to receive events, or null to stop receiving events.MediaDrm.setOnKeyStatusChangeListener(MediaDrm.OnKeyStatusChangeListener, Handler)public void setOnExpirationUpdateListener(@Nullable
ExoMediaDrm.OnExpirationUpdateListener listener)
ExoMediaDrmThis is an optional method, and some implementations may only support it on certain Android API levels.
setOnExpirationUpdateListener in interface ExoMediaDrmlistener - The listener to receive events, or null to stop receiving events.MediaDrm.setOnExpirationUpdateListener(MediaDrm.OnExpirationUpdateListener, Handler)public byte[] openSession()
throws MediaDrmException
ExoMediaDrmopenSession in interface ExoMediaDrmNotProvisionedException - If provisioning is needed.ResourceBusyException - If required resources are in use.MediaDrmException - If the session could not be opened.public void closeSession(byte[] sessionId)
ExoMediaDrmcloseSession in interface ExoMediaDrmsessionId - The ID of the session to close.public ExoMediaDrm.KeyRequest getKeyRequest(byte[] scope, @Nullable List<DrmInitData.SchemeData> schemeDatas, int keyType, @Nullable HashMap<String,String> optionalParameters) throws NotProvisionedException
ExoMediaDrmgetKeyRequest in interface ExoMediaDrmscope - If keyType is ExoMediaDrm.KEY_TYPE_STREAMING or ExoMediaDrm.KEY_TYPE_OFFLINE,
the ID of the session that the keys will be provided to. If keyType is ExoMediaDrm.KEY_TYPE_RELEASE, the keySetId of the keys to release.schemeDatas - If key type is ExoMediaDrm.KEY_TYPE_STREAMING or ExoMediaDrm.KEY_TYPE_OFFLINE, a
list of DrmInitData.SchemeData instances extracted from the media. Null otherwise.keyType - The type of the request. Either ExoMediaDrm.KEY_TYPE_STREAMING to acquire keys for
streaming, ExoMediaDrm.KEY_TYPE_OFFLINE to acquire keys for offline usage, or ExoMediaDrm.KEY_TYPE_RELEASE to release acquired keys. Releasing keys invalidates them for all
sessions.optionalParameters - Are included in the key request message to allow a client application
to provide additional message parameters to the server. This may be null if no
additional parameters are to be sent.NotProvisionedExceptionMediaDrm.getKeyRequest(byte[], byte[], String, int, HashMap)@Nullable
public byte[] provideKeyResponse(byte[] scope,
byte[] response)
throws NotProvisionedException,
DeniedByServerException
ExoMediaDrmExoMediaDrm.getKeyRequest(byte[], java.util.List<com.google.android.exoplayer2.drm.DrmInitData.SchemeData>, int, java.util.HashMap<java.lang.String, java.lang.String>).provideKeyResponse in interface ExoMediaDrmscope - If the request had type ExoMediaDrm.KEY_TYPE_STREAMING or ExoMediaDrm.KEY_TYPE_OFFLINE,
the ID of the session to provide the keys to. If keyType is ExoMediaDrm.KEY_TYPE_RELEASE, the keySetId of the keys being released.response - The response data from the server.ExoMediaDrm.KEY_TYPE_OFFLINE, the keySetId for the offline
keys. An empty byte array or null may be returned for other cases.NotProvisionedException - If the response indicates that provisioning is needed.DeniedByServerException - If the response indicates that the server rejected the request.public ExoMediaDrm.ProvisionRequest getProvisionRequest()
ExoMediaDrmgetProvisionRequest in interface ExoMediaDrmpublic void provideProvisionResponse(byte[] response)
throws DeniedByServerException
ExoMediaDrmExoMediaDrm.getProvisionRequest().provideProvisionResponse in interface ExoMediaDrmresponse - The response data from the server.DeniedByServerException - If the response indicates that the server rejected the request.public Map<String,String> queryKeyStatus(byte[] sessionId)
ExoMediaDrmqueryKeyStatus in interface ExoMediaDrmsessionId - The ID of the session being queried.public void acquire()
ExoMediaDrmExoMediaDrm.release() to decrement the reference count.
A new instance will have an initial reference count of 1, and therefore it is not normally necessary for application code to call this method.
acquire in interface ExoMediaDrmpublic void release()
ExoMediaDrmrelease in interface ExoMediaDrmpublic void restoreKeys(byte[] sessionId,
byte[] keySetId)
ExoMediaDrmrestoreKeys in interface ExoMediaDrmsessionId - The ID of the session into which the keys will be restored.keySetId - The keySetId of the keys to restore, as provided by the call to ExoMediaDrm.provideKeyResponse(byte[], byte[]) that persisted them.@Nullable public PersistableBundle getMetrics()
ExoMediaDrmnull if metrics are unavailable.getMetrics in interface ExoMediaDrmpublic String getPropertyString(String propertyName)
ExoMediaDrmMediaDrm.getPropertyString(java.lang.String).getPropertyString in interface ExoMediaDrmpropertyName - The property name.public byte[] getPropertyByteArray(String propertyName)
ExoMediaDrmMediaDrm.getPropertyByteArray(java.lang.String).getPropertyByteArray in interface ExoMediaDrmpropertyName - The property name.public void setPropertyString(String propertyName, String value)
ExoMediaDrmsetPropertyString in interface ExoMediaDrmpropertyName - The property name.value - The value.public void setPropertyByteArray(String propertyName, byte[] value)
ExoMediaDrmsetPropertyByteArray in interface ExoMediaDrmpropertyName - The property name.value - The value.public ExoMediaCrypto createMediaCrypto(byte[] sessionId) throws MediaCryptoException
ExoMediaDrmExoMediaCrypto for a given session.createMediaCrypto in interface ExoMediaDrmsessionId - The ID of the session.ExoMediaCrypto for the given session.MediaCryptoException - If an ExoMediaCrypto could not be created.public Class<com.google.android.exoplayer2.testutil.FakeExoMediaDrm.FakeExoMediaCrypto> getExoMediaCryptoType()
ExoMediaDrmExoMediaCrypto type created by ExoMediaDrm.createMediaCrypto(byte[]).getExoMediaCryptoType in interface ExoMediaDrm