Add falsing check to UserDetailView
Fixes: 186244970 Test: atest SystemUITests && manual Change-Id: I3ec305009a1a094fcb4021a5b058a4f1f6f285d3
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user