Ask pin for shutdown/reboot on secure lockscreen
Based on: https://github.com/ezio84/abc_frameworks_base/commit/62537d0ea76331fe838f25732fbe38c69eb0904e
@neobuddy89:
* Code clean up, optimization and disabled by default.
* Adapted for Android 11
abc 11: adapt to the new advanced reboot code, remove settings part
Change-Id: I4bf551c47a64324db462ee977fd9d1e399f0d26c
diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
index 5184214..1f0f42b 100644
--- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
@@ -614,7 +614,7 @@
RESTART_RECOVERY_BUTTON,
com.android.systemui.R.drawable.ic_restart_recovery,
com.android.systemui.R.string.global_action_restart_recovery,
- mWindowManagerFuncs, mHandler) {
+ mWindowManagerFuncs, mHandler, mKeyguardStateController, mActivityStarter) {
public boolean showDuringKeyguard() {
return true;
@@ -629,7 +629,7 @@
RESTART_BOOTLOADER_BUTTON,
com.android.systemui.R.drawable.ic_restart_bootloader,
com.android.systemui.R.string.global_action_restart_bootloader,
- mWindowManagerFuncs, mHandler) {
+ mWindowManagerFuncs, mHandler, mKeyguardStateController, mActivityStarter) {
public boolean showDuringKeyguard() {
return true;
@@ -644,7 +644,7 @@
RESTART_UI_BUTTON,
com.android.systemui.R.drawable.ic_restart_ui,
com.android.systemui.R.string.global_action_restart_ui,
- mWindowManagerFuncs, mHandler) {
+ mWindowManagerFuncs, mHandler, mKeyguardStateController, mActivityStarter) {
public boolean showDuringKeyguard() {
return true;
@@ -842,6 +842,18 @@
return mWalletPlugin.onPanelShown(this, !mKeyguardStateController.isUnlocked());
}
+ private boolean rebootAction(boolean safeMode) {
+ if (mKeyguardStateController.isMethodSecure() && mKeyguardStateController.isShowing()) {
+ mActivityStarter.postQSRunnableDismissingKeyguard(() -> {
+ mWindowManagerFuncs.reboot(safeMode);
+ });
+ return true;
+ } else {
+ mWindowManagerFuncs.reboot(safeMode);
+ return true;
+ }
+ }
+
/**
* Implements {@link GlobalActionsPanelPlugin.Callbacks#dismissGlobalActionsMenu()}, which is
* called when the quick access wallet requests dismissal.
@@ -896,7 +908,7 @@
@Override
public boolean onLongPress() {
if (!mUserManager.hasUserRestriction(UserManager.DISALLOW_SAFE_BOOT)) {
- mWindowManagerFuncs.reboot(true);
+ rebootAction(true);
return true;
}
return false;
@@ -915,7 +927,13 @@
@Override
public void onPress() {
// shutdown by making sure radio and power are handled accordingly.
- mWindowManagerFuncs.shutdown();
+ if (mKeyguardStateController.isMethodSecure() && mKeyguardStateController.isShowing()) {
+ mActivityStarter.postQSRunnableDismissingKeyguard(() -> {
+ mWindowManagerFuncs.shutdown();
+ });
+ } else {
+ mWindowManagerFuncs.shutdown();
+ }
}
}
@@ -1008,7 +1026,7 @@
@Override
public boolean onLongPress() {
if (!mUserManager.hasUserRestriction(UserManager.DISALLOW_SAFE_BOOT)) {
- mWindowManagerFuncs.reboot(true);
+ rebootAction(true);
return true;
}
return false;
@@ -1026,7 +1044,7 @@
@Override
public void onPress() {
- mWindowManagerFuncs.reboot(false);
+ rebootAction(false);
}
}
@@ -1952,18 +1970,24 @@
protected Handler mRefresh;
protected GlobalActionsManager mWmFuncs;
private Context mContext;
+ private KeyguardStateController mKeyguardStateController;
+ private ActivityStarter mActivityStarter;
public AdvancedAction(
int actionType,
int iconResid,
int messageResid,
GlobalActionsManager funcs,
- Handler handler) {
+ Handler handler,
+ KeyguardStateController ksc,
+ ActivityStarter as) {
mActionType = actionType;
mIconResid = iconResid;
mMessageResId = messageResid;
mRefresh = handler;
mWmFuncs = funcs;
+ mKeyguardStateController = ksc;
+ mActivityStarter = as;
}
@Override
@@ -1987,7 +2011,13 @@
@Override
public final void onPress() {
- triggerAction(mActionType, mRefresh, mWmFuncs, mContext);
+ if (mKeyguardStateController.isMethodSecure() && mKeyguardStateController.isShowing()) {
+ mActivityStarter.postQSRunnableDismissingKeyguard(() -> {
+ triggerAction(mActionType, mRefresh, mWmFuncs, mContext);
+ });
+ } else {
+ triggerAction(mActionType, mRefresh, mWmFuncs, mContext);
+ }
}
@Override