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

Commit f1baf5a3 authored by Dave Mankoff's avatar Dave Mankoff
Browse files

Add falsing check to UserDetailView

Fixes: 186244970
Test: atest SystemUITests && manual
Change-Id: I3ec305009a1a094fcb4021a5b058a4f1f6f285d3
parent aca19ed5
Loading
Loading
Loading
Loading
+14 −4
Original line number Diff line number Diff line
@@ -34,10 +34,13 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.drawable.CircleFramedDrawable;
import com.android.systemui.R;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.qs.PseudoGridView;
import com.android.systemui.qs.QSUserSwitcherEvent;
import com.android.systemui.statusbar.policy.UserSwitcherController;

import javax.inject.Inject;

/**
 * Quick settings detail view for user switching.
 */
@@ -54,9 +57,9 @@ public class UserDetailView extends PseudoGridView {
                R.layout.qs_user_detail, parent, attach);
    }

    public void createAndSetAdapter(UserSwitcherController controller,
            UiEventLogger uiEventLogger) {
        mAdapter = new Adapter(mContext, controller, uiEventLogger);
    /** Set a {@link android.widget.BaseAdapter} */
    public void setAdapter(Adapter adapter) {
        mAdapter = adapter;
        ViewGroupAdapterBridge.link(this, mAdapter);
    }

@@ -71,13 +74,16 @@ public class UserDetailView extends PseudoGridView {
        protected UserSwitcherController mController;
        private View mCurrentUserView;
        private final UiEventLogger mUiEventLogger;
        private final FalsingManager mFalsingManager;

        @Inject
        public Adapter(Context context, UserSwitcherController controller,
                UiEventLogger uiEventLogger) {
                UiEventLogger uiEventLogger, FalsingManager falsingManager) {
            super(controller);
            mContext = context;
            mController = controller;
            mUiEventLogger = uiEventLogger;
            mFalsingManager = falsingManager;
        }

        @Override
@@ -140,6 +146,10 @@ public class UserDetailView extends PseudoGridView {

        @Override
        public void onClick(View view) {
            if (mFalsingManager.isFalseTap(FalsingManager.MODERATE_PENALTY)) {
                return;
            }

            UserSwitcherController.UserRecord tag =
                    (UserSwitcherController.UserRecord) view.getTag();
            if (tag.isDisabledByAdmin) {
+7 −7
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityNodeInfo;

import com.android.internal.logging.UiEventLogger;
import com.android.keyguard.KeyguardConstants;
import com.android.keyguard.KeyguardVisibilityHelper;
import com.android.keyguard.dagger.KeyguardUserSwitcherScope;
@@ -37,6 +36,7 @@ import com.android.systemui.R;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.keyguard.ScreenLifecycle;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.qs.tiles.UserDetailView;
import com.android.systemui.statusbar.SysuiStatusBarStateController;
import com.android.systemui.statusbar.notification.AnimatableProperty;
import com.android.systemui.statusbar.notification.PropertyAnimator;
@@ -48,6 +48,7 @@ import com.android.systemui.statusbar.phone.UserAvatarView;
import com.android.systemui.util.ViewController;

import javax.inject.Inject;
import javax.inject.Provider;

/**
 * Manages the user switch on the Keyguard that is used for opening the QS user panel.
@@ -108,7 +109,7 @@ public class KeyguardQsUserSwitchController extends ViewController<UserAvatarVie
            KeyguardStateController keyguardStateController,
            SysuiStatusBarStateController statusBarStateController,
            DozeParameters dozeParameters,
            UiEventLogger uiEventLogger) {
            Provider<UserDetailView.Adapter> userDetailViewAdapterProvider) {
        super(view);
        if (DEBUG) Log.d(TAG, "New KeyguardQsUserSwitchController");
        mContext = context;
@@ -120,8 +121,7 @@ public class KeyguardQsUserSwitchController extends ViewController<UserAvatarVie
        mStatusBarStateController = statusBarStateController;
        mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mView,
                keyguardStateController, dozeParameters);
        mUserDetailAdapter = new KeyguardUserDetailAdapter(mUserSwitcherController, mContext,
                uiEventLogger);
        mUserDetailAdapter = new KeyguardUserDetailAdapter(context, userDetailViewAdapterProvider);
    }

    @Override
@@ -304,9 +304,9 @@ public class KeyguardQsUserSwitchController extends ViewController<UserAvatarVie
    }

    class KeyguardUserDetailAdapter extends UserSwitcherController.UserDetailAdapter {
        KeyguardUserDetailAdapter(UserSwitcherController userSwitcherController, Context context,
                UiEventLogger uiEventLogger) {
            super(userSwitcherController, context, uiEventLogger);
        KeyguardUserDetailAdapter(Context context,
                Provider<UserDetailView.Adapter> userDetailViewAdapterProvider) {
            super(context, userDetailViewAdapterProvider);
        }

        @Override
+9 −9
Original line number Diff line number Diff line
@@ -78,6 +78,7 @@ import java.util.ArrayList;
import java.util.List;

import javax.inject.Inject;
import javax.inject.Provider;

/**
 * Keeps a list of all users on the device for user switching.
@@ -128,14 +129,14 @@ public class UserSwitcherController implements Dumpable {
            @Main Handler handler, ActivityStarter activityStarter,
            BroadcastDispatcher broadcastDispatcher, UiEventLogger uiEventLogger,
            TelephonyListenerManager telephonyListenerManager,
            IActivityTaskManager activityTaskManager) {
            IActivityTaskManager activityTaskManager, UserDetailAdapter userDetailAdapter) {
        mContext = context;
        mBroadcastDispatcher = broadcastDispatcher;
        mTelephonyListenerManager = telephonyListenerManager;
        mActivityTaskManager = activityTaskManager;
        mUiEventLogger = uiEventLogger;
        mGuestResumeSessionReceiver = new GuestResumeSessionReceiver(mUiEventLogger);
        mUserDetailAdapter = new UserDetailAdapter(this, mContext, mUiEventLogger);
        mUserDetailAdapter = userDetailAdapter;
        if (!UserManager.isGuestUserEphemeral()) {
            mGuestResumeSessionReceiver.register(mBroadcastDispatcher);
        }
@@ -789,15 +790,14 @@ public class UserSwitcherController implements Dumpable {
    public static class UserDetailAdapter implements DetailAdapter {
        private final Intent USER_SETTINGS_INTENT = new Intent(Settings.ACTION_USER_SETTINGS);

        private final UserSwitcherController mUserSwitcherController;
        private final Context mContext;
        private final UiEventLogger mUiEventLogger;
        private final Provider<UserDetailView.Adapter> mUserDetailViewAdapterProvider;

        UserDetailAdapter(UserSwitcherController userSwitcherController, Context context,
                UiEventLogger uiEventLogger) {
            mUserSwitcherController = userSwitcherController;
        @Inject
        UserDetailAdapter(Context context,
                Provider<UserDetailView.Adapter> userDetailViewAdapterProvider) {
            mContext = context;
            mUiEventLogger = uiEventLogger;
            mUserDetailViewAdapterProvider = userDetailViewAdapterProvider;
        }

        @Override
@@ -810,7 +810,7 @@ public class UserSwitcherController implements Dumpable {
            UserDetailView v;
            if (!(convertView instanceof UserDetailView)) {
                v = UserDetailView.inflate(context, parent, false);
                v.createAndSetAdapter(mUserSwitcherController, mUiEventLogger);
                v.setAdapter(mUserDetailViewAdapterProvider.get());
            } else {
                v = (UserDetailView) convertView;
            }
+4 −1
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import com.android.internal.logging.testing.UiEventLoggerFake
import com.android.internal.util.UserIcons
import com.android.systemui.R
import com.android.systemui.SysuiTestCase
import com.android.systemui.classifier.FalsingManagerFake
import com.android.systemui.qs.QSUserSwitcherEvent
import com.android.systemui.statusbar.policy.UserSwitcherController
import org.junit.Assert.assertEquals
@@ -53,6 +54,7 @@ class UserDetailViewAdapterTest : SysuiTestCase() {
    @Mock private lateinit var mInflatedUserDetailItemView: UserDetailItemView
    @Mock private lateinit var mUserInfo: UserInfo
    @Mock private lateinit var mLayoutInflater: LayoutInflater
    private var falsingManagerFake: FalsingManagerFake = FalsingManagerFake()
    private lateinit var adapter: UserDetailView.Adapter
    private lateinit var uiEventLogger: UiEventLoggerFake
    private lateinit var mPicture: Bitmap
@@ -65,7 +67,8 @@ class UserDetailViewAdapterTest : SysuiTestCase() {
        mContext.addMockSystemService(Context.LAYOUT_INFLATER_SERVICE, mLayoutInflater)
        `when`(mLayoutInflater.inflate(anyInt(), any(ViewGroup::class.java), anyBoolean()))
                .thenReturn(mInflatedUserDetailItemView)
        adapter = UserDetailView.Adapter(mContext, mUserSwitcherController, uiEventLogger)
        adapter = UserDetailView.Adapter(mContext, mUserSwitcherController, uiEventLogger,
                falsingManagerFake)
        mPicture = UserIcons.convertToBitmap(mContext.getDrawable(R.drawable.ic_avatar_user))
    }