Merge "Use Falsing Manager for media player taps" into sc-v2-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
6076998bce
@@ -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,
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user