Merge "Use FalsingManager for QS user switcher" into sc-dev am: 6061740344

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15226239

Change-Id: I178360c3a92c3e34600d8cd5682218c8816d46e4
This commit is contained in:
TreeHugger Robot
2021-07-10 01:33:59 +00:00
committed by Automerger Merge Worker
6 changed files with 45 additions and 12 deletions

View File

@@ -44,6 +44,7 @@ import com.android.systemui.Dependency;
import com.android.systemui.FontSizeUtils;
import com.android.systemui.R;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.qs.DetailAdapter;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer;
@@ -57,6 +58,7 @@ public class QSDetail extends LinearLayout {
private final UiEventLogger mUiEventLogger = QSEvents.INSTANCE.getQsUiEventsLogger();
private ViewGroup mDetailContent;
private FalsingManager mFalsingManager;
protected TextView mDetailSettingsButton;
protected TextView mDetailDoneButton;
@VisibleForTesting
@@ -124,12 +126,13 @@ public class QSDetail extends LinearLayout {
/** */
public void setQsPanel(QSPanelController panelController, QuickStatusBarHeader header,
QSFooter footer) {
QSFooter footer, FalsingManager falsingManager) {
mQsPanelController = panelController;
mHeader = header;
mFooter = footer;
mHeader.setCallback(mQsPanelCallback);
mQsPanelController.setCallback(mQsPanelCallback);
mFalsingManager = falsingManager;
}
public void setHost(QSTileHost host) {
@@ -273,6 +276,9 @@ public class QSDetail extends LinearLayout {
final Intent settingsIntent = adapter.getSettingsIntent();
mDetailSettingsButton.setVisibility(settingsIntent != null ? VISIBLE : GONE);
mDetailSettingsButton.setOnClickListener(v -> {
if (mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
return;
}
Dependency.get(MetricsLogger.class).action(ACTION_QS_MORE_SETTINGS,
adapter.getMetricsCategory());
mUiEventLogger.log(adapter.moreSettingsEvent());
@@ -280,6 +286,9 @@ public class QSDetail extends LinearLayout {
.postStartActivityDismissingKeyguard(settingsIntent, 0);
});
mDetailDoneButton.setOnClickListener(v -> {
if (mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
return;
}
announceForAccessibility(
mContext.getString(R.string.accessibility_desc_quick_settings));
if (!adapter.onDoneButtonClicked()) {
@@ -301,13 +310,13 @@ public class QSDetail extends LinearLayout {
mQsDetailHeaderSwitch.setVisibility(VISIBLE);
handleToggleStateChanged(toggleState, adapter.getToggleEnabled());
mQsDetailHeader.setClickable(true);
mQsDetailHeader.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
boolean checked = !mQsDetailHeaderSwitch.isChecked();
mQsDetailHeaderSwitch.setChecked(checked);
adapter.setToggleState(checked);
mQsDetailHeader.setOnClickListener(v -> {
if (mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
return;
}
boolean checked = !mQsDetailHeaderSwitch.isChecked();
mQsDetailHeaderSwitch.setChecked(checked);
adapter.setToggleState(checked);
});
}
}

View File

@@ -39,6 +39,7 @@ import androidx.annotation.VisibleForTesting;
import com.android.systemui.R;
import com.android.systemui.animation.Interpolators;
import com.android.systemui.media.MediaHost;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.qs.QS;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.qs.customize.QSCustomizerController;
@@ -67,6 +68,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
private final Rect mQsBounds = new Rect();
private final StatusBarStateController mStatusBarStateController;
private final FalsingManager mFalsingManager;
private boolean mQsExpanded;
private boolean mHeaderAnimating;
private boolean mStackScrollerOverscrolling;
@@ -133,7 +135,8 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
StatusBarStateController statusBarStateController, CommandQueue commandQueue,
QSDetailDisplayer qsDetailDisplayer, @Named(QS_PANEL) MediaHost qsMediaHost,
@Named(QUICK_QS_PANEL) MediaHost qqsMediaHost,
QSFragmentComponent.Factory qsComponentFactory, FeatureFlags featureFlags) {
QSFragmentComponent.Factory qsComponentFactory, FeatureFlags featureFlags,
FalsingManager falsingManager) {
mRemoteInputQuickSettingsDisabler = remoteInputQsDisabler;
mInjectionInflater = injectionInflater;
mCommandQueue = commandQueue;
@@ -144,6 +147,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
commandQueue.observe(getLifecycle(), this);
mHost = qsTileHost;
mFeatureFlags = featureFlags;
mFalsingManager = falsingManager;
mStatusBarStateController = statusBarStateController;
}
@@ -190,7 +194,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
mQSContainerImplController.init();
mContainer = mQSContainerImplController.getView();
mQSDetail.setQsPanel(mQSPanelController, mHeader, mFooter);
mQSDetail.setQsPanel(mQSPanelController, mHeader, mFooter, mFalsingManager);
mQSAnimator = qsFragmentComponent.getQSAnimator();
mQSCustomizerController = qsFragmentComponent.getQSCustomizerController();

View File

@@ -146,7 +146,7 @@ public class UserDetailView extends PseudoGridView {
@Override
public void onClick(View view) {
if (mFalsingManager.isFalseTap(FalsingManager.MODERATE_PENALTY)) {
if (mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
return;
}

View File

@@ -67,6 +67,7 @@ import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dagger.qualifiers.UiBackground;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.qs.DetailAdapter;
import com.android.systemui.qs.QSUserSwitcherEvent;
import com.android.systemui.qs.tiles.UserDetailView;
@@ -131,6 +132,7 @@ public class UserSwitcherController implements Dumpable {
private final Executor mUiBgExecutor;
private final boolean mGuestUserAutoCreated;
private final AtomicBoolean mGuestCreationScheduled;
private FalsingManager mFalsingManager;
@Inject
public UserSwitcherController(Context context,
@@ -139,6 +141,7 @@ public class UserSwitcherController implements Dumpable {
ActivityStarter activityStarter,
BroadcastDispatcher broadcastDispatcher,
UiEventLogger uiEventLogger,
FalsingManager falsingManager,
TelephonyListenerManager telephonyListenerManager,
IActivityTaskManager activityTaskManager,
UserDetailAdapter userDetailAdapter,
@@ -148,6 +151,7 @@ public class UserSwitcherController implements Dumpable {
mTelephonyListenerManager = telephonyListenerManager;
mActivityTaskManager = activityTaskManager;
mUiEventLogger = uiEventLogger;
mFalsingManager = falsingManager;
mGuestResumeSessionReceiver = new GuestResumeSessionReceiver(this, mUiEventLogger);
mUserDetailAdapter = userDetailAdapter;
mUiBgExecutor = uiBgExecutor;
@@ -1031,6 +1035,11 @@ public class UserSwitcherController implements Dumpable {
@Override
public void onClick(DialogInterface dialog, int which) {
int penalty = which == BUTTON_NEGATIVE ? FalsingManager.NO_PENALTY
: FalsingManager.HIGH_PENALTY;
if (mFalsingManager.isFalseTap(penalty)) {
return;
}
if (which == BUTTON_NEGATIVE) {
cancel();
} else {
@@ -1057,6 +1066,11 @@ public class UserSwitcherController implements Dumpable {
@Override
public void onClick(DialogInterface dialog, int which) {
int penalty = which == BUTTON_NEGATIVE ? FalsingManager.NO_PENALTY
: FalsingManager.MODERATE_PENALTY;
if (mFalsingManager.isFalseTap(penalty)) {
return;
}
if (which == BUTTON_NEGATIVE) {
cancel();
} else {

View File

@@ -41,6 +41,7 @@ import com.android.internal.logging.testing.UiEventLoggerFake;
import com.android.systemui.R;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.qs.DetailAdapter;
import org.junit.After;
@@ -76,7 +77,8 @@ public class QSDetailTest extends SysuiTestCase {
mQsPanelController = mock(QSPanelController.class);
mQuickHeader = mock(QuickStatusBarHeader.class);
mQsDetail.setQsPanel(mQsPanelController, mQuickHeader, mock(QSFooter.class));
mQsDetail.setQsPanel(mQsPanelController, mQuickHeader, mock(QSFooter.class),
mock(FalsingManager.class));
mQsDetail.mClipper = mock(QSDetailClipper.class);
mMockDetailAdapter = mock(DetailAdapter.class);

View File

@@ -44,6 +44,7 @@ import com.android.systemui.SysuiBaseFragmentTest;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.media.MediaHost;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.qs.dagger.QSFragmentComponent;
import com.android.systemui.qs.external.CustomTileStatePersister;
@@ -92,6 +93,8 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
private MediaHost mQQSMediaHost;
@Mock
private FeatureFlags mFeatureFlags;
@Mock
private FalsingManager mFalsingManager;
public QSFragmentTest() {
super(QSFragment.class);
@@ -182,6 +185,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
mQSMediaHost,
mQQSMediaHost,
mQsComponentFactory,
mFeatureFlags);
mFeatureFlags,
mFalsingManager);
}
}