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

Commit 7deb544d authored by Ted Wang's avatar Ted Wang Committed by Android (Google) Code Review
Browse files

Merge "Allow playback state update even when there is no metadata" into qt-dev

parents 119c961c acda929f
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