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

Commit 96de8166 authored by Jeff DeCew's avatar Jeff DeCew Committed by Android (Google) Code Review
Browse files

Merge "Disable player's "Dismiss" button when notification is not dismissible."

parents 6deb3861 b62d0291
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -2782,6 +2782,8 @@
    <string name="controls_media_title">Media</string>
    <!-- Explanation for closing controls associated with a specific media session [CHAR_LIMIT=NONE] -->
    <string name="controls_media_close_session">Hide the current session.</string>
    <!-- Explanation that controls associated with a specific media session are active [CHAR_LIMIT=NONE] -->
    <string name="controls_media_active_session">Current session cannot be hidden.</string>
    <!-- Label for a button that will hide media controls [CHAR_LIMIT=30] -->
    <string name="controls_media_dismiss_button">Dismiss</string>
    <!-- Label for button to resume media playback [CHAR_LIMIT=NONE] -->
+8 −0
Original line number Diff line number Diff line
@@ -354,7 +354,15 @@ public class MediaControlPanel {
        final MediaController controller = getController();
        mBackgroundExecutor.execute(() -> mSeekBarViewModel.updateController(controller));

        // Guts label
        boolean isDismissible = data.isClearable();
        mViewHolder.getSettingsText().setText(isDismissible
                ? R.string.controls_media_close_session
                : R.string.controls_media_active_session);

        // Dismiss
        mViewHolder.getDismissLabel().setAlpha(isDismissible ? 1 : DISABLED_ALPHA);
        mViewHolder.getDismiss().setEnabled(isDismissible);
        mViewHolder.getDismiss().setOnClickListener(v -> {
            if (mKey != null) {
                closeGuts();
+3 −1
Original line number Diff line number Diff line
@@ -60,8 +60,10 @@ class PlayerViewHolder private constructor(itemView: View) {
    val action4 = itemView.requireViewById<ImageButton>(R.id.action4)

    // Settings screen
    val settingsText = itemView.requireViewById<TextView>(R.id.remove_text)
    val cancel = itemView.requireViewById<View>(R.id.cancel)
    val dismiss = itemView.requireViewById<View>(R.id.dismiss)
    val dismiss = itemView.requireViewById<ViewGroup>(R.id.dismiss)
    val dismissLabel = dismiss.getChildAt(0)
    val settings = itemView.requireViewById<View>(R.id.settings)

    init {
+21 −2
Original line number Diff line number Diff line
@@ -111,9 +111,11 @@ public class MediaControlPanelTest : SysuiTestCase() {
    private lateinit var action2: ImageButton
    private lateinit var action3: ImageButton
    private lateinit var action4: ImageButton
    private lateinit var settingsText: TextView
    private lateinit var settings: View
    private lateinit var cancel: View
    private lateinit var dismiss: View
    private lateinit var dismiss: FrameLayout
    private lateinit var dismissLabel: View

    private lateinit var session: MediaSession
    private val device = MediaDeviceData(true, null, DEVICE_NAME)
@@ -171,12 +173,16 @@ public class MediaControlPanelTest : SysuiTestCase() {
        whenever(holder.action3).thenReturn(action3)
        action4 = ImageButton(context)
        whenever(holder.action4).thenReturn(action4)
        settingsText = TextView(context)
        whenever(holder.settingsText).thenReturn(settingsText)
        settings = View(context)
        whenever(holder.settings).thenReturn(settings)
        cancel = View(context)
        whenever(holder.cancel).thenReturn(cancel)
        dismiss = View(context)
        dismiss = FrameLayout(context)
        whenever(holder.dismiss).thenReturn(dismiss)
        dismissLabel = View(context)
        whenever(holder.dismissLabel).thenReturn(dismissLabel)

        // Create media session
        val metadataBuilder = MediaMetadata.Builder().apply {
@@ -330,6 +336,7 @@ public class MediaControlPanelTest : SysuiTestCase() {
                notificationKey = KEY)
        player.bind(state, mediaKey)

        assertThat(dismiss.isEnabled).isEqualTo(true)
        dismiss.callOnClick()
        val captor = ArgumentCaptor.forClass(ActivityStarter.OnDismissAction::class.java)
        verify(keyguardDismissUtil).executeWhenUnlocked(captor.capture(), anyBoolean())
@@ -337,4 +344,16 @@ public class MediaControlPanelTest : SysuiTestCase() {
        captor.value.onDismiss()
        verify(mediaDataManager).dismissMediaData(eq(mediaKey), anyLong())
    }

    @Test
    fun dismissButtonDisabled() {
        val mediaKey = "key for dismissal"
        player.attach(holder)
        val state = MediaData(USER_ID, true, BG_COLOR, APP, null, ARTIST, TITLE, null, emptyList(),
                emptyList(), PACKAGE, session.getSessionToken(), null, null, true, null,
                isClearable = false, notificationKey = KEY)
        player.bind(state, mediaKey)

        assertThat(dismiss.isEnabled).isEqualTo(false)
    }
}