Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5c1c3b96 authored by Ted Wang's avatar Ted Wang Committed by Gerrit Code Review
Browse files

Merge "Allow playback state update even when there is no metadata"

parents 7b5c4e07 d102983a
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -62,14 +62,18 @@ class MediaPlayerWrapper {
        void mediaUpdatedCallback(MediaData data);
    }

    boolean isReady() {
    boolean isPlaybackStateReady() {
        if (getPlaybackState() == null) {
            d("isReady(): PlaybackState is null");
            d("isPlaybackStateReady(): PlaybackState is null");
            return false;
        }

        return true;
    }

    boolean isMetadataReady() {
        if (getMetadata() == null) {
            d("isReady(): Metadata is null");
            d("isMetadataReady(): Metadata is null");
            return false;
        }

@@ -372,7 +376,7 @@ class MediaPlayerWrapper {

        @Override
        public void onMetadataChanged(@Nullable MediaMetadata metadata) {
            if (!isReady()) {
            if (!isMetadataReady()) {
                Log.v(TAG, "onMetadataChanged(): " + mPackageName
                        + " tried to update with no queue");
                return;
@@ -406,7 +410,7 @@ class MediaPlayerWrapper {

        @Override
        public void onPlaybackStateChanged(@Nullable PlaybackState state) {
            if (!isReady()) {
            if (!isPlaybackStateReady()) {
                Log.v(TAG, "onPlaybackStateChanged(): " + mPackageName
                        + " tried to update with no queue");
                return;
@@ -435,7 +439,7 @@ class MediaPlayerWrapper {

        @Override
        public void onQueueChanged(@Nullable List<MediaSession.QueueItem> queue) {
            if (!isReady()) {
            if (!isPlaybackStateReady() || !isMetadataReady()) {
                Log.v(TAG, "onQueueChanged(): " + mPackageName
                        + " tried to update with no queue");
                return;
+10 −8
Original line number Diff line number Diff line
@@ -152,23 +152,24 @@ public class MediaPlayerWrapperTest {
    @Test
    public void testIsReady() {
        MediaPlayerWrapper wrapper = MediaPlayerWrapper.wrap(mMockController, mThread.getLooper());
        Assert.assertTrue(wrapper.isReady());
        Assert.assertTrue(wrapper.isPlaybackStateReady());
        Assert.assertTrue(wrapper.isMetadataReady());

        // Test isReady() is false when the playback state is null
        // Test isPlaybackStateReady() is false when the playback state is null
        doReturn(null).when(mMockController).getPlaybackState();
        Assert.assertFalse(wrapper.isReady());
        Assert.assertFalse(wrapper.isPlaybackStateReady());

        // Restore the old playback state
        doReturn(mTestState.build()).when(mMockController).getPlaybackState();
        Assert.assertTrue(wrapper.isReady());
        Assert.assertTrue(wrapper.isPlaybackStateReady());

        // Test isReady() is false when the metadata is null
        // Test isMetadataReady() is false when the metadata is null
        doReturn(null).when(mMockController).getMetadata();
        Assert.assertFalse(wrapper.isReady());
        Assert.assertFalse(wrapper.isMetadataReady());

        // Restore the old metadata
        doReturn(mTestMetadata.build()).when(mMockController).getMetadata();
        Assert.assertTrue(wrapper.isReady());
        Assert.assertTrue(wrapper.isMetadataReady());
    }

    /*
@@ -179,7 +180,8 @@ public class MediaPlayerWrapperTest {
    public void testControllerUpdate() {
        // Create the wrapper object and register the looper with the timeout handler
        MediaPlayerWrapper wrapper = MediaPlayerWrapper.wrap(mMockController, mThread.getLooper());
        Assert.assertTrue(wrapper.isReady());
        Assert.assertTrue(wrapper.isPlaybackStateReady());
        Assert.assertTrue(wrapper.isMetadataReady());
        wrapper.registerCallback(mTestCbs);

        // Create a new MediaController that has different metadata than the previous controller