Use PendingIntent for media click action over lockscreen am: 223e9c5839
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22088256 Change-Id: I17dc32483c1ee97b59b5d0e05dca20fe0d994803 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -428,16 +428,16 @@ 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()));
|
||||
|
||||
@@ -71,7 +71,6 @@ import com.android.systemui.util.mockito.KotlinArgumentCaptor
|
||||
import com.android.systemui.util.mockito.argumentCaptor
|
||||
import com.android.systemui.util.mockito.any
|
||||
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
|
||||
@@ -1548,7 +1547,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)
|
||||
@@ -1559,17 +1558,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)
|
||||
|
||||
Reference in New Issue
Block a user