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

Commit 82681292 authored by tim peng's avatar tim peng Committed by Automerger Merge Worker
Browse files

Merge "Close panel when media stop" into rvc-dev am: 91ad46fa am: 01d3b132

Change-Id: Ib8761ac0a48879ef463706812d75ffcf6c73e7a6
parents 49211ec3 01d3b132
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import android.graphics.drawable.Drawable;
import android.media.MediaMetadata;
import android.media.session.MediaController;
import android.media.session.MediaSessionManager;
import android.media.session.PlaybackState;
import android.net.Uri;
import android.text.TextUtils;
import android.util.Log;
@@ -66,12 +67,11 @@ public class MediaOutputPanel implements PanelContent, LocalMediaManager.DeviceC
    private final Context mContext;
    private final String mPackageName;

    private PanelContentCallback mCallback;
    private boolean mIsCustomizedButtonUsed = true;

    @VisibleForTesting
    LocalMediaManager mLocalMediaManager;

    private PanelContentCallback mCallback;
    private boolean mIsCustomizedButtonUsed = true;
    private MediaSessionManager mMediaSessionManager;
    private MediaController mMediaController;

@@ -255,5 +255,12 @@ public class MediaOutputPanel implements PanelContent, LocalMediaManager.DeviceC
                mCallback.onHeaderChanged();
            }
        }

        @Override
        public void onPlaybackStateChanged(PlaybackState state) {
            if (mCallback != null && state.getState() != PlaybackState.STATE_PLAYING) {
                mCallback.forceClose();
            }
        }
    };
}
+5 −0
Original line number Diff line number Diff line
@@ -32,4 +32,9 @@ public interface PanelContentCallback {
     * a group
     */
    void onHeaderChanged();

    /**
     * It will be called when panel requests to close itself.
     */
    void forceClose();
}
+11 −0
Original line number Diff line number Diff line
@@ -433,5 +433,16 @@ public class PanelFragment extends Fragment {
                mHeaderSubtitle.setText(mPanel.getSubTitle());
            });
        }

        @Override
        public void forceClose() {
            mPanelClosedKey = PanelClosedKeys.KEY_OTHERS;
            getFragmentActivity().finish();
        }

        @VisibleForTesting
        FragmentActivity getFragmentActivity() {
            return getActivity();
        }
    }
}
+19 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -30,6 +31,7 @@ import android.content.Context;
import android.media.MediaMetadata;
import android.media.session.MediaController;
import android.media.session.MediaSessionManager;
import android.media.session.PlaybackState;
import android.net.Uri;

import com.android.settings.R;
@@ -67,6 +69,8 @@ public class MediaOutputPanelTest {
    private LocalMediaManager mLocalMediaManager;
    @Mock
    private PanelContentCallback mCallback;
    @Mock
    private PlaybackState mPlaybackState;

    private MediaOutputPanel mPanel;
    private Context mContext;
@@ -259,4 +263,19 @@ public class MediaOutputPanelTest {

        verify(mCallback).onHeaderChanged();
    }

    @Test
    public void onPlaybackStateChanged_stateFromPlayingToStopped_verifyCallForceClose() {
        mPanel.onStart();
        verify(mMediaController).registerCallback(mControllerCbs.capture());
        final MediaController.Callback controllerCallbacks = mControllerCbs.getValue();
        when(mPlaybackState.getState()).thenReturn(PlaybackState.STATE_PLAYING);
        controllerCallbacks.onPlaybackStateChanged(mPlaybackState);
        verify(mCallback, never()).forceClose();

        when(mPlaybackState.getState()).thenReturn(PlaybackState.STATE_STOPPED);
        controllerCallbacks.onPlaybackStateChanged(mPlaybackState);

        verify(mCallback).forceClose();
    }
}
+14 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.app.settings.SettingsEnums;
import android.content.Context;
@@ -236,4 +237,17 @@ public class PanelFragmentTest {
        assertThat(headerTitle.getText()).isEqualTo(TITLE2);
        assertThat(headerSubtitle.getText()).isEqualTo(SUBTITLE2);
    }

    @Test
    public void forceClose_verifyFinish() {
        initFakeActivity();
        verify(mFakePanelContent).registerCallback(mPanelContentCbs.capture());
        final PanelContentCallback panelContentCallbacks = spy(mPanelContentCbs.getValue());
        when(((PanelFragment.LocalPanelCallback) panelContentCallbacks).getFragmentActivity())
                .thenReturn(mActivity);

        panelContentCallbacks.forceClose();

        verify(mActivity).finish();
    }
}
 No newline at end of file