Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c07d447e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

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

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

Change-Id: I8059267f1bd7e9d9e489fdb72384ff95a1715585
parents 53194a77 60617403
Loading
Loading
Loading
Loading
+16 −7
Original line number Diff line number Diff line
@@ -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) {
            mQsDetailHeader.setOnClickListener(v -> {
                if (mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
                    return;
                }
                boolean checked = !mQsDetailHeaderSwitch.isChecked();
                mQsDetailHeaderSwitch.setChecked(checked);
                adapter.setToggleState(checked);
                }
            });
        }
    }
+6 −2
Original line number Diff line number Diff line
@@ -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();
+1 −1
Original line number Diff line number Diff line
@@ -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;
            }

+14 −0
Original line number Diff line number Diff line
@@ -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 {
+3 −1
Original line number Diff line number Diff line
@@ -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);
Loading