Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
8077fe1b
authored
May 06, 2020
by
ibaker
Committed by
Oliver Woodman
May 06, 2020
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Add media period info to DrmSessionEventListener methods
Part of issue:#6765 PiperOrigin-RevId: 310143494
parent
34327bec
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
146 additions
and
90 deletions
library/core/src/main/java/com/google/android/exoplayer2/MediaSourceList.java
library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsCollector.java
library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSession.java
library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java
library/core/src/main/java/com/google/android/exoplayer2/drm/DrmSessionEventListener.java
library/core/src/main/java/com/google/android/exoplayer2/drm/OfflineLicenseHelper.java
library/core/src/main/java/com/google/android/exoplayer2/source/CompositeMediaSource.java
library/core/src/test/java/com/google/android/exoplayer2/util/MediaSourceEventDispatcherTest.java
library/core/src/main/java/com/google/android/exoplayer2/MediaSourceList.java
View file @
8077fe1b
...
@@ -702,45 +702,59 @@ import java.util.Set;
...
@@ -702,45 +702,59 @@ import java.util.Set;
// DrmSessionEventListener implementation
// DrmSessionEventListener implementation
@Override
@Override
public
void
onDrmSessionAcquired
()
{
public
void
onDrmSessionAcquired
(
eventDispatcher
.
dispatch
(
int
windowIndex
,
@Nullable
MediaSource
.
MediaPeriodId
mediaPeriodId
)
{
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmSessionAcquired
(),
if
(
maybeUpdateEventDispatcher
(
windowIndex
,
mediaPeriodId
))
{
DrmSessionEventListener
.
class
);
eventDispatcher
.
dispatch
(
DrmSessionEventListener:
:
onDrmSessionAcquired
,
DrmSessionEventListener
.
class
);
}
}
}
@Override
@Override
public
void
onDrmKeysLoaded
()
{
public
void
onDrmKeysLoaded
(
eventDispatcher
.
dispatch
(
int
windowIndex
,
@Nullable
MediaSource
.
MediaPeriodId
mediaPeriodId
)
{
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmKeysLoaded
(),
if
(
maybeUpdateEventDispatcher
(
windowIndex
,
mediaPeriodId
))
{
DrmSessionEventListener
.
class
);
eventDispatcher
.
dispatch
(
DrmSessionEventListener:
:
onDrmKeysLoaded
,
DrmSessionEventListener
.
class
);
}
}
}
@Override
@Override
public
void
onDrmSessionManagerError
(
Exception
error
)
{
public
void
onDrmSessionManagerError
(
eventDispatcher
.
dispatch
(
int
windowIndex
,
@Nullable
MediaSource
.
MediaPeriodId
mediaPeriodId
,
Exception
error
)
{
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmSessionManagerError
(
error
),
if
(
maybeUpdateEventDispatcher
(
windowIndex
,
mediaPeriodId
))
{
DrmSessionEventListener
.
class
);
eventDispatcher
.
dispatch
(
(
listener
,
innerWindowIndex
,
innerMediaPeriodId
)
->
listener
.
onDrmSessionManagerError
(
innerWindowIndex
,
innerMediaPeriodId
,
error
),
DrmSessionEventListener
.
class
);
}
}
}
@Override
@Override
public
void
onDrmKeysRestored
()
{
public
void
onDrmKeysRestored
(
eventDispatcher
.
dispatch
(
int
windowIndex
,
@Nullable
MediaSource
.
MediaPeriodId
mediaPeriodId
)
{
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmKeysRestored
(),
if
(
maybeUpdateEventDispatcher
(
windowIndex
,
mediaPeriodId
))
{
DrmSessionEventListener
.
class
);
eventDispatcher
.
dispatch
(
DrmSessionEventListener:
:
onDrmKeysRestored
,
DrmSessionEventListener
.
class
);
}
}
}
@Override
@Override
public
void
onDrmKeysRemoved
()
{
public
void
onDrmKeysRemoved
(
eventDispatcher
.
dispatch
(
int
windowIndex
,
@Nullable
MediaSource
.
MediaPeriodId
mediaPeriodId
)
{
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmKeysRemoved
(),
if
(
maybeUpdateEventDispatcher
(
windowIndex
,
mediaPeriodId
))
{
DrmSessionEventListener
.
class
);
eventDispatcher
.
dispatch
(
DrmSessionEventListener:
:
onDrmKeysRemoved
,
DrmSessionEventListener
.
class
);
}
}
}
@Override
@Override
public
void
onDrmSessionReleased
()
{
public
void
onDrmSessionReleased
(
eventDispatcher
.
dispatch
(
int
windowIndex
,
@Nullable
MediaSource
.
MediaPeriodId
mediaPeriodId
)
{
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmSessionReleased
(),
if
(
maybeUpdateEventDispatcher
(
windowIndex
,
mediaPeriodId
))
{
DrmSessionEventListener
.
class
);
eventDispatcher
.
dispatch
(
DrmSessionEventListener:
:
onDrmSessionReleased
,
DrmSessionEventListener
.
class
);
}
}
}
/** Updates the event dispatcher and returns whether the event should be dispatched. */
/** Updates the event dispatcher and returns whether the event should be dispatched. */
...
...
library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsCollector.java
View file @
8077fe1b
...
@@ -576,48 +576,49 @@ public class AnalyticsCollector
...
@@ -576,48 +576,49 @@ public class AnalyticsCollector
// DefaultDrmSessionManager.EventListener implementation.
// DefaultDrmSessionManager.EventListener implementation.
@Override
@Override
public
final
void
onDrmSessionAcquired
()
{
public
final
void
onDrmSessionAcquired
(
int
windowIndex
,
@Nullable
MediaPeriodId
mediaPeriodId
)
{
EventTime
eventTime
=
generate
ReadingMediaPeriodEventTime
(
);
EventTime
eventTime
=
generate
MediaPeriodEventTime
(
windowIndex
,
mediaPeriodId
);
for
(
AnalyticsListener
listener
:
listeners
)
{
for
(
AnalyticsListener
listener
:
listeners
)
{
listener
.
onDrmSessionAcquired
(
eventTime
);
listener
.
onDrmSessionAcquired
(
eventTime
);
}
}
}
}
@Override
@Override
public
final
void
onDrmKeysLoaded
()
{
public
final
void
onDrmKeysLoaded
(
int
windowIndex
,
@Nullable
MediaPeriodId
mediaPeriodId
)
{
EventTime
eventTime
=
generate
ReadingMediaPeriodEventTime
(
);
EventTime
eventTime
=
generate
MediaPeriodEventTime
(
windowIndex
,
mediaPeriodId
);
for
(
AnalyticsListener
listener
:
listeners
)
{
for
(
AnalyticsListener
listener
:
listeners
)
{
listener
.
onDrmKeysLoaded
(
eventTime
);
listener
.
onDrmKeysLoaded
(
eventTime
);
}
}
}
}
@Override
@Override
public
final
void
onDrmSessionManagerError
(
Exception
error
)
{
public
final
void
onDrmSessionManagerError
(
EventTime
eventTime
=
generateReadingMediaPeriodEventTime
();
int
windowIndex
,
@Nullable
MediaPeriodId
mediaPeriodId
,
Exception
error
)
{
EventTime
eventTime
=
generateMediaPeriodEventTime
(
windowIndex
,
mediaPeriodId
);
for
(
AnalyticsListener
listener
:
listeners
)
{
for
(
AnalyticsListener
listener
:
listeners
)
{
listener
.
onDrmSessionManagerError
(
eventTime
,
error
);
listener
.
onDrmSessionManagerError
(
eventTime
,
error
);
}
}
}
}
@Override
@Override
public
final
void
onDrmKeysRestored
()
{
public
final
void
onDrmKeysRestored
(
int
windowIndex
,
@Nullable
MediaPeriodId
mediaPeriodId
)
{
EventTime
eventTime
=
generate
ReadingMediaPeriodEventTime
(
);
EventTime
eventTime
=
generate
MediaPeriodEventTime
(
windowIndex
,
mediaPeriodId
);
for
(
AnalyticsListener
listener
:
listeners
)
{
for
(
AnalyticsListener
listener
:
listeners
)
{
listener
.
onDrmKeysRestored
(
eventTime
);
listener
.
onDrmKeysRestored
(
eventTime
);
}
}
}
}
@Override
@Override
public
final
void
onDrmKeysRemoved
()
{
public
final
void
onDrmKeysRemoved
(
int
windowIndex
,
@Nullable
MediaPeriodId
mediaPeriodId
)
{
EventTime
eventTime
=
generate
ReadingMediaPeriodEventTime
(
);
EventTime
eventTime
=
generate
MediaPeriodEventTime
(
windowIndex
,
mediaPeriodId
);
for
(
AnalyticsListener
listener
:
listeners
)
{
for
(
AnalyticsListener
listener
:
listeners
)
{
listener
.
onDrmKeysRemoved
(
eventTime
);
listener
.
onDrmKeysRemoved
(
eventTime
);
}
}
}
}
@Override
@Override
public
final
void
onDrmSessionReleased
()
{
public
final
void
onDrmSessionReleased
(
int
windowIndex
,
@Nullable
MediaPeriodId
mediaPeriodId
)
{
EventTime
eventTime
=
generate
PlayingMediaPeriodEventTime
(
);
EventTime
eventTime
=
generate
MediaPeriodEventTime
(
windowIndex
,
mediaPeriodId
);
for
(
AnalyticsListener
listener
:
listeners
)
{
for
(
AnalyticsListener
listener
:
listeners
)
{
listener
.
onDrmSessionReleased
(
eventTime
);
listener
.
onDrmSessionReleased
(
eventTime
);
}
}
...
...
library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSession.java
View file @
8077fe1b
...
@@ -275,8 +275,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
...
@@ -275,8 +275,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
// re-used or not.
// re-used or not.
if
(
eventDispatcher
!=
null
)
{
if
(
eventDispatcher
!=
null
)
{
eventDispatcher
.
dispatch
(
eventDispatcher
.
dispatch
(
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmSessionAcquired
(),
DrmSessionEventListener:
:
onDrmSessionAcquired
,
DrmSessionEventListener
.
class
);
DrmSessionEventListener
.
class
);
}
}
}
}
}
}
...
@@ -301,7 +300,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
...
@@ -301,7 +300,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
}
}
releaseCallback
.
onSessionReleased
(
this
);
releaseCallback
.
onSessionReleased
(
this
);
}
}
dispatchEvent
(
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmSessionReleased
()
);
dispatchEvent
(
DrmSessionEventListener:
:
onDrmSessionReleased
);
if
(
eventDispatcher
!=
null
)
{
if
(
eventDispatcher
!=
null
)
{
eventDispatchers
.
remove
(
eventDispatcher
);
eventDispatchers
.
remove
(
eventDispatcher
);
}
}
...
@@ -326,7 +325,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
...
@@ -326,7 +325,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
try
{
try
{
sessionId
=
mediaDrm
.
openSession
();
sessionId
=
mediaDrm
.
openSession
();
mediaCrypto
=
mediaDrm
.
createMediaCrypto
(
sessionId
);
mediaCrypto
=
mediaDrm
.
createMediaCrypto
(
sessionId
);
dispatchEvent
(
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmSessionAcquired
()
);
dispatchEvent
(
DrmSessionEventListener:
:
onDrmSessionAcquired
);
state
=
STATE_OPENED
;
state
=
STATE_OPENED
;
Assertions
.
checkNotNull
(
sessionId
);
Assertions
.
checkNotNull
(
sessionId
);
return
true
;
return
true
;
...
@@ -390,7 +389,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
...
@@ -390,7 +389,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
onError
(
new
KeysExpiredException
());
onError
(
new
KeysExpiredException
());
}
else
{
}
else
{
state
=
STATE_OPENED_WITH_KEYS
;
state
=
STATE_OPENED_WITH_KEYS
;
dispatchEvent
(
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmKeysRestored
()
);
dispatchEvent
(
DrmSessionEventListener:
:
onDrmKeysRestored
);
}
}
}
}
break
;
break
;
...
@@ -460,7 +459,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
...
@@ -460,7 +459,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
byte
[]
responseData
=
(
byte
[])
response
;
byte
[]
responseData
=
(
byte
[])
response
;
if
(
mode
==
DefaultDrmSessionManager
.
MODE_RELEASE
)
{
if
(
mode
==
DefaultDrmSessionManager
.
MODE_RELEASE
)
{
mediaDrm
.
provideKeyResponse
(
Util
.
castNonNull
(
offlineLicenseKeySetId
),
responseData
);
mediaDrm
.
provideKeyResponse
(
Util
.
castNonNull
(
offlineLicenseKeySetId
),
responseData
);
dispatchEvent
(
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmKeysRestored
()
);
dispatchEvent
(
DrmSessionEventListener:
:
onDrmKeysRestored
);
}
else
{
}
else
{
byte
[]
keySetId
=
mediaDrm
.
provideKeyResponse
(
sessionId
,
responseData
);
byte
[]
keySetId
=
mediaDrm
.
provideKeyResponse
(
sessionId
,
responseData
);
if
((
mode
==
DefaultDrmSessionManager
.
MODE_DOWNLOAD
if
((
mode
==
DefaultDrmSessionManager
.
MODE_DOWNLOAD
...
@@ -471,7 +470,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
...
@@ -471,7 +470,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
offlineLicenseKeySetId
=
keySetId
;
offlineLicenseKeySetId
=
keySetId
;
}
}
state
=
STATE_OPENED_WITH_KEYS
;
state
=
STATE_OPENED_WITH_KEYS
;
dispatchEvent
(
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmKeysLoaded
()
);
dispatchEvent
(
DrmSessionEventListener:
:
onDrmKeysLoaded
);
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
onKeysError
(
e
);
onKeysError
(
e
);
...
@@ -495,7 +494,9 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
...
@@ -495,7 +494,9 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
private
void
onError
(
final
Exception
e
)
{
private
void
onError
(
final
Exception
e
)
{
lastException
=
new
DrmSessionException
(
e
);
lastException
=
new
DrmSessionException
(
e
);
dispatchEvent
((
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmSessionManagerError
(
e
));
dispatchEvent
(
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmSessionManagerError
(
windowIndex
,
mediaPeriodId
,
e
));
if
(
state
!=
STATE_OPENED_WITH_KEYS
)
{
if
(
state
!=
STATE_OPENED_WITH_KEYS
)
{
state
=
STATE_ERROR
;
state
=
STATE_ERROR
;
}
}
...
...
library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java
View file @
8077fe1b
...
@@ -489,7 +489,8 @@ public class DefaultDrmSessionManager implements DrmSessionManager {
...
@@ -489,7 +489,8 @@ public class DefaultDrmSessionManager implements DrmSessionManager {
final
MissingSchemeDataException
error
=
new
MissingSchemeDataException
(
uuid
);
final
MissingSchemeDataException
error
=
new
MissingSchemeDataException
(
uuid
);
if
(
eventDispatcher
!=
null
)
{
if
(
eventDispatcher
!=
null
)
{
eventDispatcher
.
dispatch
(
eventDispatcher
.
dispatch
(
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmSessionManagerError
(
error
),
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmSessionManagerError
(
windowIndex
,
mediaPeriodId
,
error
),
DrmSessionEventListener
.
class
);
DrmSessionEventListener
.
class
);
}
}
return
new
ErrorStateDrmSession
(
new
DrmSessionException
(
error
));
return
new
ErrorStateDrmSession
(
new
DrmSessionException
(
error
));
...
...
library/core/src/main/java/com/google/android/exoplayer2/drm/DrmSessionEventListener.java
View file @
8077fe1b
...
@@ -15,16 +15,28 @@
...
@@ -15,16 +15,28 @@
*/
*/
package
com
.
google
.
android
.
exoplayer2
.
drm
;
package
com
.
google
.
android
.
exoplayer2
.
drm
;
import
androidx.annotation.Nullable
;
import
com.google.android.exoplayer2.Player
;
import
com.google.android.exoplayer2.Player
;
import
com.google.android.exoplayer2.source.MediaSource.MediaPeriodId
;
/** Listener of {@link DrmSessionManager} events. */
/** Listener of {@link DrmSessionManager} events. */
public
interface
DrmSessionEventListener
{
public
interface
DrmSessionEventListener
{
/** Called each time a drm session is acquired. */
/**
default
void
onDrmSessionAcquired
()
{}
* Called each time a drm session is acquired.
*
* @param windowIndex The window index in the timeline this media period belongs to.
* @param mediaPeriodId The {@link MediaPeriodId} associated with the drm session.
*/
default
void
onDrmSessionAcquired
(
int
windowIndex
,
@Nullable
MediaPeriodId
mediaPeriodId
)
{}
/** Called each time keys are loaded. */
/**
default
void
onDrmKeysLoaded
()
{}
* Called each time keys are loaded.
*
* @param windowIndex The window index in the timeline this media period belongs to.
* @param mediaPeriodId The {@link MediaPeriodId} associated with the drm session.
*/
default
void
onDrmKeysLoaded
(
int
windowIndex
,
@Nullable
MediaPeriodId
mediaPeriodId
)
{}
/**
/**
* Called when a drm error occurs.
* Called when a drm error occurs.
...
@@ -36,16 +48,34 @@ public interface DrmSessionEventListener {
...
@@ -36,16 +48,34 @@ public interface DrmSessionEventListener {
* such behavior). This method is called to provide the application with an opportunity to log the
* such behavior). This method is called to provide the application with an opportunity to log the
* error if it wishes to do so.
* error if it wishes to do so.
*
*
* @param windowIndex The window index in the timeline this media period belongs to.
* @param mediaPeriodId The {@link MediaPeriodId} associated with the drm session.
* @param error The corresponding exception.
* @param error The corresponding exception.
*/
*/
default
void
onDrmSessionManagerError
(
Exception
error
)
{}
default
void
onDrmSessionManagerError
(
int
windowIndex
,
@Nullable
MediaPeriodId
mediaPeriodId
,
Exception
error
)
{}
/** Called each time offline keys are restored. */
/**
default
void
onDrmKeysRestored
()
{}
* Called each time offline keys are restored.
*
* @param windowIndex The window index in the timeline this media period belongs to.
* @param mediaPeriodId The {@link MediaPeriodId} associated with the drm session.
*/
default
void
onDrmKeysRestored
(
int
windowIndex
,
@Nullable
MediaPeriodId
mediaPeriodId
)
{}
/** Called each time offline keys are removed. */
/**
default
void
onDrmKeysRemoved
()
{}
* Called each time offline keys are removed.
*
* @param windowIndex The window index in the timeline this media period belongs to.
* @param mediaPeriodId The {@link MediaPeriodId} associated with the drm session.
*/
default
void
onDrmKeysRemoved
(
int
windowIndex
,
@Nullable
MediaPeriodId
mediaPeriodId
)
{}
/** Called each time a drm session is released. */
/**
default
void
onDrmSessionReleased
()
{}
* Called each time a drm session is released.
*
* @param windowIndex The window index in the timeline this media period belongs to.
* @param mediaPeriodId The {@link MediaPeriodId} associated with the drm session.
*/
default
void
onDrmSessionReleased
(
int
windowIndex
,
@Nullable
MediaPeriodId
mediaPeriodId
)
{}
}
}
library/core/src/main/java/com/google/android/exoplayer2/drm/OfflineLicenseHelper.java
View file @
8077fe1b
...
@@ -24,6 +24,7 @@ import androidx.annotation.Nullable;
...
@@ -24,6 +24,7 @@ import androidx.annotation.Nullable;
import
androidx.annotation.RequiresApi
;
import
androidx.annotation.RequiresApi
;
import
com.google.android.exoplayer2.drm.DefaultDrmSessionManager.Mode
;
import
com.google.android.exoplayer2.drm.DefaultDrmSessionManager.Mode
;
import
com.google.android.exoplayer2.drm.DrmSession.DrmSessionException
;
import
com.google.android.exoplayer2.drm.DrmSession.DrmSessionException
;
import
com.google.android.exoplayer2.source.MediaSource.MediaPeriodId
;
import
com.google.android.exoplayer2.upstream.HttpDataSource
;
import
com.google.android.exoplayer2.upstream.HttpDataSource
;
import
com.google.android.exoplayer2.util.Assertions
;
import
com.google.android.exoplayer2.util.Assertions
;
import
com.google.android.exoplayer2.util.MediaSourceEventDispatcher
;
import
com.google.android.exoplayer2.util.MediaSourceEventDispatcher
;
...
@@ -156,22 +157,23 @@ public final class OfflineLicenseHelper {
...
@@ -156,22 +157,23 @@ public final class OfflineLicenseHelper {
DrmSessionEventListener
eventListener
=
DrmSessionEventListener
eventListener
=
new
DrmSessionEventListener
()
{
new
DrmSessionEventListener
()
{
@Override
@Override
public
void
onDrmKeysLoaded
()
{
public
void
onDrmKeysLoaded
(
int
windowIndex
,
@Nullable
MediaPeriodId
mediaPeriodId
)
{
conditionVariable
.
open
();
conditionVariable
.
open
();
}
}
@Override
@Override
public
void
onDrmSessionManagerError
(
Exception
e
)
{
public
void
onDrmSessionManagerError
(
int
windowIndex
,
@Nullable
MediaPeriodId
mediaPeriodId
,
Exception
e
)
{
conditionVariable
.
open
();
conditionVariable
.
open
();
}
}
@Override
@Override
public
void
onDrmKeysRestored
()
{
public
void
onDrmKeysRestored
(
int
windowIndex
,
@Nullable
MediaPeriodId
mediaPeriodId
)
{
conditionVariable
.
open
();
conditionVariable
.
open
();
}
}
@Override
@Override
public
void
onDrmKeysRemoved
()
{
public
void
onDrmKeysRemoved
(
int
windowIndex
,
@Nullable
MediaPeriodId
mediaPeriodId
)
{
conditionVariable
.
open
();
conditionVariable
.
open
();
}
}
};
};
...
...
library/core/src/main/java/com/google/android/exoplayer2/source/CompositeMediaSource.java
View file @
8077fe1b
...
@@ -324,45 +324,54 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource {
...
@@ -324,45 +324,54 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource {
// DrmSessionEventListener implementation
// DrmSessionEventListener implementation
@Override
@Override
public
void
onDrmSessionAcquired
()
{
public
void
onDrmSessionAcquired
(
int
windowIndex
,
@Nullable
MediaPeriodId
mediaPeriodId
)
{
eventDispatcher
.
dispatch
(
if
(
maybeUpdateEventDispatcher
(
windowIndex
,
mediaPeriodId
))
{
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmSessionAcquired
(),
eventDispatcher
.
dispatch
(
DrmSessionEventListener
.
class
);
DrmSessionEventListener:
:
onDrmSessionAcquired
,
DrmSessionEventListener
.
class
);
}
}
}
@Override
@Override
public
void
onDrmKeysLoaded
()
{
public
void
onDrmKeysLoaded
(
int
windowIndex
,
@Nullable
MediaPeriodId
mediaPeriodId
)
{
eventDispatcher
.
dispatch
(
if
(
maybeUpdateEventDispatcher
(
windowIndex
,
mediaPeriodId
))
{
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmKeysLoaded
(),
eventDispatcher
.
dispatch
(
DrmSessionEventListener
.
class
);
DrmSessionEventListener:
:
onDrmKeysLoaded
,
DrmSessionEventListener
.
class
);
}
}
}
@Override
@Override
public
void
onDrmSessionManagerError
(
Exception
error
)
{
public
void
onDrmSessionManagerError
(
eventDispatcher
.
dispatch
(
int
windowIndex
,
@Nullable
MediaPeriodId
mediaPeriodId
,
Exception
error
)
{
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmSessionManagerError
(
error
),
if
(
maybeUpdateEventDispatcher
(
windowIndex
,
mediaPeriodId
))
{
DrmSessionEventListener
.
class
);
eventDispatcher
.
dispatch
(
(
listener
,
innerWindowIndex
,
innerMediaPeriodId
)
->
listener
.
onDrmSessionManagerError
(
innerWindowIndex
,
innerMediaPeriodId
,
error
),
DrmSessionEventListener
.
class
);
}
}
}
@Override
@Override
public
void
onDrmKeysRestored
()
{
public
void
onDrmKeysRestored
(
int
windowIndex
,
@Nullable
MediaPeriodId
mediaPeriodId
)
{
eventDispatcher
.
dispatch
(
if
(
maybeUpdateEventDispatcher
(
windowIndex
,
mediaPeriodId
))
{
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmKeysRestored
(),
eventDispatcher
.
dispatch
(
DrmSessionEventListener
.
class
);
DrmSessionEventListener:
:
onDrmKeysRestored
,
DrmSessionEventListener
.
class
);
}
}
}
@Override
@Override
public
void
onDrmKeysRemoved
()
{
public
void
onDrmKeysRemoved
(
int
windowIndex
,
@Nullable
MediaPeriodId
mediaPeriodId
)
{
eventDispatcher
.
dispatch
(
if
(
maybeUpdateEventDispatcher
(
windowIndex
,
mediaPeriodId
))
{
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmKeysRemoved
(),
eventDispatcher
.
dispatch
(
DrmSessionEventListener
.
class
);
DrmSessionEventListener:
:
onDrmKeysRemoved
,
DrmSessionEventListener
.
class
);
}
}
}
@Override
@Override
public
void
onDrmSessionReleased
()
{
public
void
onDrmSessionReleased
(
int
windowIndex
,
@Nullable
MediaPeriodId
mediaPeriodId
)
{
eventDispatcher
.
dispatch
(
if
(
maybeUpdateEventDispatcher
(
windowIndex
,
mediaPeriodId
))
{
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmSessionReleased
(),
eventDispatcher
.
dispatch
(
DrmSessionEventListener
.
class
);
DrmSessionEventListener:
:
onDrmSessionReleased
,
DrmSessionEventListener
.
class
);
}
}
}
/** Updates the event dispatcher and returns whether the event should be dispatched. */
/** Updates the event dispatcher and returns whether the event should be dispatched. */
...
...
library/core/src/test/java/com/google/android/exoplayer2/util/MediaSourceEventDispatcherTest.java
View file @
8077fe1b
...
@@ -100,11 +100,10 @@ public class MediaSourceEventDispatcherTest {
...
@@ -100,11 +100,10 @@ public class MediaSourceEventDispatcherTest {
eventDispatcher
.
dispatch
(
eventDispatcher
.
dispatch
(
MediaSourceEventListener:
:
onMediaPeriodCreated
,
MediaSourceEventListener
.
class
);
MediaSourceEventListener:
:
onMediaPeriodCreated
,
MediaSourceEventListener
.
class
);
eventDispatcher
.
dispatch
(
eventDispatcher
.
dispatch
(
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmKeysLoaded
(),
DrmSessionEventListener:
:
onDrmKeysLoaded
,
DrmSessionEventListener
.
class
);
DrmSessionEventListener
.
class
);
verify
(
mediaAndDrmEventListener
).
onMediaPeriodCreated
(
WINDOW_INDEX
,
MEDIA_PERIOD_ID
);
verify
(
mediaAndDrmEventListener
).
onMediaPeriodCreated
(
WINDOW_INDEX
,
MEDIA_PERIOD_ID
);
verify
(
mediaAndDrmEventListener
).
onDrmKeysLoaded
();
verify
(
mediaAndDrmEventListener
).
onDrmKeysLoaded
(
WINDOW_INDEX
,
MEDIA_PERIOD_ID
);
}
}
// If a listener is added that implements multiple types, it should only receive events for the
// If a listener is added that implements multiple types, it should only receive events for the
...
@@ -119,11 +118,10 @@ public class MediaSourceEventDispatcherTest {
...
@@ -119,11 +118,10 @@ public class MediaSourceEventDispatcherTest {
eventDispatcher
.
dispatch
(
eventDispatcher
.
dispatch
(
MediaSourceEventListener:
:
onMediaPeriodCreated
,
MediaSourceEventListener
.
class
);
MediaSourceEventListener:
:
onMediaPeriodCreated
,
MediaSourceEventListener
.
class
);
eventDispatcher
.
dispatch
(
eventDispatcher
.
dispatch
(
(
listener
,
windowIndex
,
mediaPeriodId
)
->
listener
.
onDrmKeysLoaded
(),
DrmSessionEventListener:
:
onDrmKeysLoaded
,
DrmSessionEventListener
.
class
);
DrmSessionEventListener
.
class
);
verify
(
mediaAndDrmEventListener
).
onMediaPeriodCreated
(
WINDOW_INDEX
,
MEDIA_PERIOD_ID
);
verify
(
mediaAndDrmEventListener
).
onMediaPeriodCreated
(
WINDOW_INDEX
,
MEDIA_PERIOD_ID
);
verify
(
mediaAndDrmEventListener
,
never
()).
onDrmKeysLoaded
();
verify
(
mediaAndDrmEventListener
,
never
()).
onDrmKeysLoaded
(
WINDOW_INDEX
,
MEDIA_PERIOD_ID
);
}
}
@Test
@Test
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment