Merge "Close panel when media stop" into rvc-dev am: 91ad46fa60
am: 01d3b13273
am: 65c0fd1747
Change-Id: Ib5527f9bf5ee3de6280d173cb0ccf38af38cb195
This commit is contained in:
@@ -33,6 +33,7 @@ import android.graphics.drawable.Drawable;
|
|||||||
import android.media.MediaMetadata;
|
import android.media.MediaMetadata;
|
||||||
import android.media.session.MediaController;
|
import android.media.session.MediaController;
|
||||||
import android.media.session.MediaSessionManager;
|
import android.media.session.MediaSessionManager;
|
||||||
|
import android.media.session.PlaybackState;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -66,12 +67,11 @@ public class MediaOutputPanel implements PanelContent, LocalMediaManager.DeviceC
|
|||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final String mPackageName;
|
private final String mPackageName;
|
||||||
|
|
||||||
private PanelContentCallback mCallback;
|
|
||||||
private boolean mIsCustomizedButtonUsed = true;
|
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
LocalMediaManager mLocalMediaManager;
|
LocalMediaManager mLocalMediaManager;
|
||||||
|
|
||||||
|
private PanelContentCallback mCallback;
|
||||||
|
private boolean mIsCustomizedButtonUsed = true;
|
||||||
private MediaSessionManager mMediaSessionManager;
|
private MediaSessionManager mMediaSessionManager;
|
||||||
private MediaController mMediaController;
|
private MediaController mMediaController;
|
||||||
|
|
||||||
@@ -255,5 +255,12 @@ public class MediaOutputPanel implements PanelContent, LocalMediaManager.DeviceC
|
|||||||
mCallback.onHeaderChanged();
|
mCallback.onHeaderChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPlaybackStateChanged(PlaybackState state) {
|
||||||
|
if (mCallback != null && state.getState() != PlaybackState.STATE_PLAYING) {
|
||||||
|
mCallback.forceClose();
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@@ -32,4 +32,9 @@ public interface PanelContentCallback {
|
|||||||
* a group
|
* a group
|
||||||
*/
|
*/
|
||||||
void onHeaderChanged();
|
void onHeaderChanged();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* It will be called when panel requests to close itself.
|
||||||
|
*/
|
||||||
|
void forceClose();
|
||||||
}
|
}
|
||||||
|
@@ -439,5 +439,16 @@ public class PanelFragment extends Fragment {
|
|||||||
mHeaderSubtitle.setText(mPanel.getSubTitle());
|
mHeaderSubtitle.setText(mPanel.getSubTitle());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void forceClose() {
|
||||||
|
mPanelClosedKey = PanelClosedKeys.KEY_OTHERS;
|
||||||
|
getFragmentActivity().finish();
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
FragmentActivity getFragmentActivity() {
|
||||||
|
return getActivity();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -22,6 +22,7 @@ import static com.google.common.truth.Truth.assertThat;
|
|||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
@@ -30,6 +31,7 @@ import android.content.Context;
|
|||||||
import android.media.MediaMetadata;
|
import android.media.MediaMetadata;
|
||||||
import android.media.session.MediaController;
|
import android.media.session.MediaController;
|
||||||
import android.media.session.MediaSessionManager;
|
import android.media.session.MediaSessionManager;
|
||||||
|
import android.media.session.PlaybackState;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
@@ -67,6 +69,8 @@ public class MediaOutputPanelTest {
|
|||||||
private LocalMediaManager mLocalMediaManager;
|
private LocalMediaManager mLocalMediaManager;
|
||||||
@Mock
|
@Mock
|
||||||
private PanelContentCallback mCallback;
|
private PanelContentCallback mCallback;
|
||||||
|
@Mock
|
||||||
|
private PlaybackState mPlaybackState;
|
||||||
|
|
||||||
private MediaOutputPanel mPanel;
|
private MediaOutputPanel mPanel;
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
@@ -259,4 +263,19 @@ public class MediaOutputPanelTest {
|
|||||||
|
|
||||||
verify(mCallback).onHeaderChanged();
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -23,6 +23,7 @@ import static org.mockito.ArgumentMatchers.any;
|
|||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -236,4 +237,17 @@ public class PanelFragmentTest {
|
|||||||
assertThat(headerTitle.getText()).isEqualTo(TITLE2);
|
assertThat(headerTitle.getText()).isEqualTo(TITLE2);
|
||||||
assertThat(headerSubtitle.getText()).isEqualTo(SUBTITLE2);
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user