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

Commit 60617403 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

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

parents d4ce296d c608dd0c
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