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

Commit 5eed9cae authored by Beth Thibodeau's avatar Beth Thibodeau Committed by Automerger Merge Worker
Browse files

Merge "Use PendingIntent for media click action over lockscreen" into tm-qpr-dev am: 4dd83882

parents 20fd3e1a 4dd83882
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -518,16 +518,15 @@ public class MediaControlPanel {
                mLogger.logTapContentView(mUid, mPackageName, mInstanceId);
                logSmartspaceCardReported(SMARTSPACE_CARD_CLICK_EVENT);

                // See StatusBarNotificationActivityStarter#onNotificationClicked
                boolean showOverLockscreen = mKeyguardStateController.isShowing()
                        && mActivityIntentHelper.wouldShowOverLockscreen(clickIntent.getIntent(),
                        && mActivityIntentHelper.wouldPendingShowOverLockscreen(clickIntent,
                        mLockscreenUserManager.getCurrentUserId());

                if (showOverLockscreen) {
                    mActivityStarter.startActivity(clickIntent.getIntent(),
                            /* dismissShade */ true,
                            /* animationController */ null,
                            /* showOverLockscreenWhenLocked */ true);
                    try {
                        clickIntent.send();
                    } catch (PendingIntent.CanceledException e) {
                        Log.e(TAG, "Pending intent for " + key + " was cancelled");
                    }
                } else {
                    mActivityStarter.postStartActivityDismissingKeyguard(clickIntent,
                            buildLaunchAnimatorController(mMediaViewHolder.getPlayer()));
+8 −5
Original line number Diff line number Diff line
@@ -94,7 +94,6 @@ import com.android.systemui.util.mockito.KotlinArgumentCaptor
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.argumentCaptor
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.nullable
import com.android.systemui.util.mockito.withArgCaptor
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
@@ -1763,7 +1762,7 @@ public class MediaControlPanelTest : SysuiTestCase() {
    fun tapContentView_showOverLockscreen_openActivity() {
        // WHEN we are on lockscreen and this activity can show over lockscreen
        whenever(keyguardStateController.isShowing).thenReturn(true)
        whenever(activityIntentHelper.wouldShowOverLockscreen(any(), any())).thenReturn(true)
        whenever(activityIntentHelper.wouldPendingShowOverLockscreen(any(), any())).thenReturn(true)

        val clickIntent = mock(Intent::class.java)
        val pendingIntent = mock(PendingIntent::class.java)
@@ -1774,16 +1773,20 @@ public class MediaControlPanelTest : SysuiTestCase() {
        player.bindPlayer(data, KEY)
        verify(viewHolder.player).setOnClickListener(captor.capture())

        // THEN it shows without dismissing keyguard first
        // THEN it sends the PendingIntent without dismissing keyguard first,
        // and does not use the Intent directly (see b/271845008)
        captor.value.onClick(viewHolder.player)
        verify(activityStarter).startActivity(eq(clickIntent), eq(true), nullable(), eq(true))
        verify(pendingIntent).send()
        verify(pendingIntent, never()).getIntent()
        verify(activityStarter, never()).postStartActivityDismissingKeyguard(eq(clickIntent), any())
    }

    @Test
    fun tapContentView_noShowOverLockscreen_dismissKeyguard() {
        // WHEN we are on lockscreen and the activity cannot show over lockscreen
        whenever(keyguardStateController.isShowing).thenReturn(true)
        whenever(activityIntentHelper.wouldShowOverLockscreen(any(), any())).thenReturn(false)
        whenever(activityIntentHelper.wouldPendingShowOverLockscreen(any(), any()))
            .thenReturn(false)

        val clickIntent = mock(Intent::class.java)
        val pendingIntent = mock(PendingIntent::class.java)