Merge "Use Falsing Manager for media player taps" into sc-v2-dev

This commit is contained in:
Jordan Demeulenaere
2021-10-11 09:39:09 +00:00
committed by Android (Google) Code Review
2 changed files with 39 additions and 12 deletions

View File

@@ -55,6 +55,7 @@ import com.android.systemui.animation.GhostedViewLaunchAnimatorController;
import com.android.systemui.dagger.qualifiers.Background; import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.media.dialog.MediaOutputDialogFactory; import com.android.systemui.media.dialog.MediaOutputDialogFactory;
import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.shared.system.SysUiStatsLog; import com.android.systemui.shared.system.SysUiStatsLog;
import com.android.systemui.statusbar.phone.KeyguardDismissUtil; import com.android.systemui.statusbar.phone.KeyguardDismissUtil;
import com.android.systemui.util.animation.TransitionLayout; import com.android.systemui.util.animation.TransitionLayout;
@@ -119,6 +120,7 @@ public class MediaControlPanel {
private int mSmartspaceMediaItemsCount; private int mSmartspaceMediaItemsCount;
private MediaCarouselController mMediaCarouselController; private MediaCarouselController mMediaCarouselController;
private final MediaOutputDialogFactory mMediaOutputDialogFactory; private final MediaOutputDialogFactory mMediaOutputDialogFactory;
private final FalsingManager mFalsingManager;
/** /**
* Initialize a new control panel * Initialize a new control panel
@@ -131,7 +133,8 @@ public class MediaControlPanel {
ActivityStarter activityStarter, MediaViewController mediaViewController, ActivityStarter activityStarter, MediaViewController mediaViewController,
SeekBarViewModel seekBarViewModel, Lazy<MediaDataManager> lazyMediaDataManager, SeekBarViewModel seekBarViewModel, Lazy<MediaDataManager> lazyMediaDataManager,
KeyguardDismissUtil keyguardDismissUtil, MediaOutputDialogFactory KeyguardDismissUtil keyguardDismissUtil, MediaOutputDialogFactory
mediaOutputDialogFactory, MediaCarouselController mediaCarouselController) { mediaOutputDialogFactory, MediaCarouselController mediaCarouselController,
FalsingManager falsingManager) {
mContext = context; mContext = context;
mBackgroundExecutor = backgroundExecutor; mBackgroundExecutor = backgroundExecutor;
mActivityStarter = activityStarter; mActivityStarter = activityStarter;
@@ -141,6 +144,7 @@ public class MediaControlPanel {
mKeyguardDismissUtil = keyguardDismissUtil; mKeyguardDismissUtil = keyguardDismissUtil;
mMediaOutputDialogFactory = mediaOutputDialogFactory; mMediaOutputDialogFactory = mediaOutputDialogFactory;
mMediaCarouselController = mediaCarouselController; mMediaCarouselController = mediaCarouselController;
mFalsingManager = falsingManager;
loadDimens(); loadDimens();
mSeekBarViewModel.setLogSmartspaceClick(() -> { mSeekBarViewModel.setLogSmartspaceClick(() -> {
@@ -235,10 +239,14 @@ public class MediaControlPanel {
} }
}); });
mPlayerViewHolder.getCancel().setOnClickListener(v -> { mPlayerViewHolder.getCancel().setOnClickListener(v -> {
if (!mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
closeGuts(); closeGuts();
}
}); });
mPlayerViewHolder.getSettings().setOnClickListener(v -> { mPlayerViewHolder.getSettings().setOnClickListener(v -> {
if (!mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
mActivityStarter.startActivity(SETTINGS_INTENT, true /* dismissShade */); mActivityStarter.startActivity(SETTINGS_INTENT, true /* dismissShade */);
}
}); });
} }
@@ -259,10 +267,14 @@ public class MediaControlPanel {
} }
}); });
mRecommendationViewHolder.getCancel().setOnClickListener(v -> { mRecommendationViewHolder.getCancel().setOnClickListener(v -> {
if (!mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
closeGuts(); closeGuts();
}
}); });
mRecommendationViewHolder.getSettings().setOnClickListener(v -> { mRecommendationViewHolder.getSettings().setOnClickListener(v -> {
if (!mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
mActivityStarter.startActivity(SETTINGS_INTENT, true /* dismissShade */); mActivityStarter.startActivity(SETTINGS_INTENT, true /* dismissShade */);
}
}); });
} }
@@ -299,6 +311,7 @@ public class MediaControlPanel {
PendingIntent clickIntent = data.getClickIntent(); PendingIntent clickIntent = data.getClickIntent();
if (clickIntent != null) { if (clickIntent != null) {
mPlayerViewHolder.getPlayer().setOnClickListener(v -> { mPlayerViewHolder.getPlayer().setOnClickListener(v -> {
if (mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) return;
if (mMediaViewController.isGutsVisible()) return; if (mMediaViewController.isGutsVisible()) return;
logSmartspaceCardReported(760, // SMARTSPACE_CARD_CLICK logSmartspaceCardReported(760, // SMARTSPACE_CARD_CLICK
@@ -365,8 +378,12 @@ public class MediaControlPanel {
setVisibleAndAlpha(collapsedSet, R.id.media_seamless, true /*visible */); setVisibleAndAlpha(collapsedSet, R.id.media_seamless, true /*visible */);
setVisibleAndAlpha(expandedSet, R.id.media_seamless, true /*visible */); setVisibleAndAlpha(expandedSet, R.id.media_seamless, true /*visible */);
seamlessView.setOnClickListener( seamlessView.setOnClickListener(
v -> mMediaOutputDialogFactory.create(data.getPackageName(), true, v -> {
mPlayerViewHolder.getSeamlessButton())); if (!mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
mMediaOutputDialogFactory.create(data.getPackageName(), true,
mPlayerViewHolder.getSeamlessButton());
}
});
ImageView iconView = mPlayerViewHolder.getSeamlessIcon(); ImageView iconView = mPlayerViewHolder.getSeamlessIcon();
TextView deviceName = mPlayerViewHolder.getSeamlessText(); TextView deviceName = mPlayerViewHolder.getSeamlessText();
@@ -417,9 +434,11 @@ public class MediaControlPanel {
} else { } else {
button.setEnabled(true); button.setEnabled(true);
button.setOnClickListener(v -> { button.setOnClickListener(v -> {
if (!mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
logSmartspaceCardReported(760, // SMARTSPACE_CARD_CLICK logSmartspaceCardReported(760, // SMARTSPACE_CARD_CLICK
/* isRecommendationCard */ false); /* isRecommendationCard */ false);
action.run(); action.run();
}
}); });
} }
boolean visibleInCompat = actionsWhenCollapsed.contains(i); boolean visibleInCompat = actionsWhenCollapsed.contains(i);
@@ -451,6 +470,8 @@ public class MediaControlPanel {
mPlayerViewHolder.getDismissLabel().setAlpha(isDismissible ? 1 : DISABLED_ALPHA); mPlayerViewHolder.getDismissLabel().setAlpha(isDismissible ? 1 : DISABLED_ALPHA);
mPlayerViewHolder.getDismiss().setEnabled(isDismissible); mPlayerViewHolder.getDismiss().setEnabled(isDismissible);
mPlayerViewHolder.getDismiss().setOnClickListener(v -> { mPlayerViewHolder.getDismiss().setOnClickListener(v -> {
if (mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) return;
logSmartspaceCardReported(761, // SMARTSPACE_CARD_DISMISS logSmartspaceCardReported(761, // SMARTSPACE_CARD_DISMISS
/* isRecommendationCard */ false); /* isRecommendationCard */ false);
@@ -633,6 +654,8 @@ public class MediaControlPanel {
mSmartspaceMediaItemsCount = uiComponentIndex; mSmartspaceMediaItemsCount = uiComponentIndex;
// Set up long press to show guts setting panel. // Set up long press to show guts setting panel.
mRecommendationViewHolder.getDismiss().setOnClickListener(v -> { mRecommendationViewHolder.getDismiss().setOnClickListener(v -> {
if (mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) return;
logSmartspaceCardReported(761, // SMARTSPACE_CARD_DISMISS logSmartspaceCardReported(761, // SMARTSPACE_CARD_DISMISS
/* isRecommendationCard */ true); /* isRecommendationCard */ true);
closeGuts(); closeGuts();
@@ -788,6 +811,8 @@ public class MediaControlPanel {
} }
view.setOnClickListener(v -> { view.setOnClickListener(v -> {
if (mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) return;
logSmartspaceCardReported(760, // SMARTSPACE_CARD_CLICK logSmartspaceCardReported(760, // SMARTSPACE_CARD_CLICK
/* isRecommendationCard */ true, /* isRecommendationCard */ true,
interactedSubcardRank, interactedSubcardRank,

View File

@@ -41,6 +41,7 @@ import com.android.systemui.R
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.android.systemui.media.dialog.MediaOutputDialogFactory import com.android.systemui.media.dialog.MediaOutputDialogFactory
import com.android.systemui.plugins.ActivityStarter import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.plugins.FalsingManager
import com.android.systemui.statusbar.phone.KeyguardDismissUtil import com.android.systemui.statusbar.phone.KeyguardDismissUtil
import com.android.systemui.util.animation.TransitionLayout import com.android.systemui.util.animation.TransitionLayout
import com.android.systemui.util.concurrency.FakeExecutor 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 collapsedSet: ConstraintSet
@Mock private lateinit var mediaOutputDialogFactory: MediaOutputDialogFactory @Mock private lateinit var mediaOutputDialogFactory: MediaOutputDialogFactory
@Mock private lateinit var mediaCarouselController: MediaCarouselController @Mock private lateinit var mediaCarouselController: MediaCarouselController
@Mock private lateinit var falsingManager: FalsingManager
private lateinit var appIcon: ImageView private lateinit var appIcon: ImageView
private lateinit var albumView: ImageView private lateinit var albumView: ImageView
private lateinit var titleText: TextView private lateinit var titleText: TextView
@@ -132,7 +134,7 @@ public class MediaControlPanelTest : SysuiTestCase() {
player = MediaControlPanel(context, bgExecutor, activityStarter, mediaViewController, player = MediaControlPanel(context, bgExecutor, activityStarter, mediaViewController,
seekBarViewModel, Lazy { mediaDataManager }, keyguardDismissUtil, seekBarViewModel, Lazy { mediaDataManager }, keyguardDismissUtil,
mediaOutputDialogFactory, mediaCarouselController) mediaOutputDialogFactory, mediaCarouselController, falsingManager)
whenever(seekBarViewModel.progress).thenReturn(seekBarData) whenever(seekBarViewModel.progress).thenReturn(seekBarData)
// Mock out a view holder for the player to attach to. // Mock out a view holder for the player to attach to.