Skip to content

Commit b09bf4b

Browse files
committed
Introduce exception type for post-release PlaybackEngine usage attempts
This allows for a more robust test as well as easier host-side checks.
1 parent b37d39d commit b09bf4b

File tree

4 files changed

+12
-5
lines changed

4 files changed

+12
-5
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.tidal.sdk.player.common
2+
3+
class PlaybackEngineUsageAfterReleaseException :
4+
IllegalStateException("Attempted to use a released PlaybackEngine")

player/playback-engine/src/main/kotlin/com/tidal/sdk/player/playbackengine/SingleHandlerPlaybackEngine.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.tidal.sdk.player.playbackengine
22

33
import android.os.Handler
4+
import com.tidal.sdk.player.common.PlaybackEngineUsageAfterReleaseException
45
import com.tidal.sdk.player.common.model.AudioQuality
56
import com.tidal.sdk.player.common.model.LoudnessNormalizationMode
67
import com.tidal.sdk.player.common.model.MediaProduct
@@ -78,8 +79,7 @@ internal class SingleHandlerPlaybackEngine(
7879

7980
private fun postOrThrow(runnable: Runnable) {
8081
if (!handler.post(runnable)) {
81-
val className = SingleHandlerPlaybackEngine::class.simpleName
82-
error("Attempt to use a released instance of $className")
82+
throw PlaybackEngineUsageAfterReleaseException()
8383
}
8484
}
8585
}

player/playback-engine/src/test/kotlin/com/tidal/sdk/player/playbackengine/ExoPlayerPlaybackEngineTest.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,7 @@ internal class ExoPlayerPlaybackEngineTest {
473473

474474
playbackEngine.release()
475475

476+
verify(initialExtendedExoPlayer).currentPositionMs
476477
verify(initialExtendedExoPlayer).release()
477478
verifyNoMoreInteractions(initialExtendedExoPlayer, looper)
478479
}

player/src/androidTest/kotlin/com/tidal/sdk/player/playlog/SingleMediaProductPlayLogTest.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import com.tidal.sdk.common.TidalMessage
1818
import com.tidal.sdk.eventproducer.EventSender
1919
import com.tidal.sdk.eventproducer.model.ConsentCategory
2020
import com.tidal.sdk.player.Player
21+
import com.tidal.sdk.player.common.PlaybackEngineUsageAfterReleaseException
2122
import com.tidal.sdk.player.common.model.MediaProduct
2223
import com.tidal.sdk.player.common.model.ProductType
2324
import com.tidal.sdk.player.events.EventReporterModuleRoot
@@ -151,9 +152,10 @@ internal class SingleMediaProductPlayLogTest {
151152
player.release()
152153
job.join()
153154
}
154-
} catch (alreadyReleasedException: IllegalStateException) {
155-
assertThat(alreadyReleasedException.message)
156-
.isEqualTo("Attempt to use a released instance of SingleHandlerPlaybackEngine")
155+
} catch (throwable: Throwable) {
156+
if (throwable !is PlaybackEngineUsageAfterReleaseException) {
157+
throw throwable
158+
}
157159
}
158160
verify(eventSender, atMost(Int.MAX_VALUE))
159161
.sendEvent(

0 commit comments

Comments
 (0)