diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java index 424f80177d9ca..e73eb66a51bfe 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java +++ b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java @@ -55,6 +55,7 @@ import com.android.systemui.animation.GhostedViewLaunchAnimatorController; import com.android.systemui.dagger.qualifiers.Background; import com.android.systemui.media.dialog.MediaOutputDialogFactory; import com.android.systemui.plugins.ActivityStarter; +import com.android.systemui.plugins.FalsingManager; import com.android.systemui.shared.system.SysUiStatsLog; import com.android.systemui.statusbar.phone.KeyguardDismissUtil; import com.android.systemui.util.animation.TransitionLayout; @@ -119,6 +120,7 @@ public class MediaControlPanel { private int mSmartspaceMediaItemsCount; private MediaCarouselController mMediaCarouselController; private final MediaOutputDialogFactory mMediaOutputDialogFactory; + private final FalsingManager mFalsingManager; /** * Initialize a new control panel @@ -131,7 +133,8 @@ public class MediaControlPanel { ActivityStarter activityStarter, MediaViewController mediaViewController, SeekBarViewModel seekBarViewModel, Lazy lazyMediaDataManager, KeyguardDismissUtil keyguardDismissUtil, MediaOutputDialogFactory - mediaOutputDialogFactory, MediaCarouselController mediaCarouselController) { + mediaOutputDialogFactory, MediaCarouselController mediaCarouselController, + FalsingManager falsingManager) { mContext = context; mBackgroundExecutor = backgroundExecutor; mActivityStarter = activityStarter; @@ -141,6 +144,7 @@ public class MediaControlPanel { mKeyguardDismissUtil = keyguardDismissUtil; mMediaOutputDialogFactory = mediaOutputDialogFactory; mMediaCarouselController = mediaCarouselController; + mFalsingManager = falsingManager; loadDimens(); mSeekBarViewModel.setLogSmartspaceClick(() -> { @@ -235,10 +239,14 @@ public class MediaControlPanel { } }); mPlayerViewHolder.getCancel().setOnClickListener(v -> { - closeGuts(); + if (!mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) { + closeGuts(); + } }); mPlayerViewHolder.getSettings().setOnClickListener(v -> { - mActivityStarter.startActivity(SETTINGS_INTENT, true /* dismissShade */); + if (!mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) { + mActivityStarter.startActivity(SETTINGS_INTENT, true /* dismissShade */); + } }); } @@ -259,10 +267,14 @@ public class MediaControlPanel { } }); mRecommendationViewHolder.getCancel().setOnClickListener(v -> { - closeGuts(); + if (!mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) { + closeGuts(); + } }); mRecommendationViewHolder.getSettings().setOnClickListener(v -> { - mActivityStarter.startActivity(SETTINGS_INTENT, true /* dismissShade */); + if (!mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) { + mActivityStarter.startActivity(SETTINGS_INTENT, true /* dismissShade */); + } }); } @@ -299,6 +311,7 @@ public class MediaControlPanel { PendingIntent clickIntent = data.getClickIntent(); if (clickIntent != null) { mPlayerViewHolder.getPlayer().setOnClickListener(v -> { + if (mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) return; if (mMediaViewController.isGutsVisible()) return; logSmartspaceCardReported(760, // SMARTSPACE_CARD_CLICK @@ -365,8 +378,12 @@ public class MediaControlPanel { setVisibleAndAlpha(collapsedSet, R.id.media_seamless, true /*visible */); setVisibleAndAlpha(expandedSet, R.id.media_seamless, true /*visible */); seamlessView.setOnClickListener( - v -> mMediaOutputDialogFactory.create(data.getPackageName(), true, - mPlayerViewHolder.getSeamlessButton())); + v -> { + if (!mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) { + mMediaOutputDialogFactory.create(data.getPackageName(), true, + mPlayerViewHolder.getSeamlessButton()); + } + }); ImageView iconView = mPlayerViewHolder.getSeamlessIcon(); TextView deviceName = mPlayerViewHolder.getSeamlessText(); @@ -417,9 +434,11 @@ public class MediaControlPanel { } else { button.setEnabled(true); button.setOnClickListener(v -> { - logSmartspaceCardReported(760, // SMARTSPACE_CARD_CLICK - /* isRecommendationCard */ false); - action.run(); + if (!mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) { + logSmartspaceCardReported(760, // SMARTSPACE_CARD_CLICK + /* isRecommendationCard */ false); + action.run(); + } }); } boolean visibleInCompat = actionsWhenCollapsed.contains(i); @@ -451,6 +470,8 @@ public class MediaControlPanel { mPlayerViewHolder.getDismissLabel().setAlpha(isDismissible ? 1 : DISABLED_ALPHA); mPlayerViewHolder.getDismiss().setEnabled(isDismissible); mPlayerViewHolder.getDismiss().setOnClickListener(v -> { + if (mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) return; + logSmartspaceCardReported(761, // SMARTSPACE_CARD_DISMISS /* isRecommendationCard */ false); @@ -633,6 +654,8 @@ public class MediaControlPanel { mSmartspaceMediaItemsCount = uiComponentIndex; // Set up long press to show guts setting panel. mRecommendationViewHolder.getDismiss().setOnClickListener(v -> { + if (mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) return; + logSmartspaceCardReported(761, // SMARTSPACE_CARD_DISMISS /* isRecommendationCard */ true); closeGuts(); @@ -788,6 +811,8 @@ public class MediaControlPanel { } view.setOnClickListener(v -> { + if (mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) return; + logSmartspaceCardReported(760, // SMARTSPACE_CARD_CLICK /* isRecommendationCard */ true, interactedSubcardRank, diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt index 42629f545559a..bf5a6e4086f39 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt @@ -41,6 +41,7 @@ import com.android.systemui.R import com.android.systemui.SysuiTestCase import com.android.systemui.media.dialog.MediaOutputDialogFactory import com.android.systemui.plugins.ActivityStarter +import com.android.systemui.plugins.FalsingManager import com.android.systemui.statusbar.phone.KeyguardDismissUtil import com.android.systemui.util.animation.TransitionLayout import com.android.systemui.util.concurrency.FakeExecutor @@ -95,6 +96,7 @@ public class MediaControlPanelTest : SysuiTestCase() { @Mock private lateinit var collapsedSet: ConstraintSet @Mock private lateinit var mediaOutputDialogFactory: MediaOutputDialogFactory @Mock private lateinit var mediaCarouselController: MediaCarouselController + @Mock private lateinit var falsingManager: FalsingManager private lateinit var appIcon: ImageView private lateinit var albumView: ImageView private lateinit var titleText: TextView @@ -131,8 +133,8 @@ public class MediaControlPanelTest : SysuiTestCase() { whenever(mediaViewController.collapsedLayout).thenReturn(collapsedSet) player = MediaControlPanel(context, bgExecutor, activityStarter, mediaViewController, - seekBarViewModel, Lazy { mediaDataManager }, keyguardDismissUtil, - mediaOutputDialogFactory, mediaCarouselController) + seekBarViewModel, Lazy { mediaDataManager }, keyguardDismissUtil, + mediaOutputDialogFactory, mediaCarouselController, falsingManager) whenever(seekBarViewModel.progress).thenReturn(seekBarData) // Mock out a view holder for the player to attach to.