summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Miller <jaggies@google.com>2009-11-03 13:56:39 -0800
committerJim Miller <jaggies@google.com>2009-11-03 14:29:22 -0800
commit4ca21590d8b5615e6ec302c41868a40417c1d33a (patch)
tree45001fe67a42f18b0e30cee3baaf04f2772db0f7
parent7526eb404a652e2ca9beddd79eb672a7f1069574 (diff)
downloadbase-4ca21590d8b5615e6ec302c41868a40417c1d33a.tar.gz
Fix 2129239: Add an override method for enabling the menu key on signed builds.
There are now 3 ways to enable the menu key: - by config file (config_disableMenuKeyInLockScreen) - by 'adb shell setprop ro.monkey=1' (for automated testing on userdebug builds) - by creating file '/data/local/enable_menu_key (for automated testing on signed user builds) Security: this only affects the insecure lock screen (not lock pattern) which is generally enabled.
-rw-r--r--phone/com/android/internal/policy/impl/LockScreen.java29
1 files changed, 22 insertions, 7 deletions
diff --git a/phone/com/android/internal/policy/impl/LockScreen.java b/phone/com/android/internal/policy/impl/LockScreen.java
index a9f3546..dda5097 100644
--- a/phone/com/android/internal/policy/impl/LockScreen.java
+++ b/phone/com/android/internal/policy/impl/LockScreen.java
@@ -21,6 +21,7 @@ import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.RotarySelector;
import android.content.Context;
+import android.content.res.Resources;
import android.text.format.DateFormat;
import android.view.KeyEvent;
import android.view.LayoutInflater;
@@ -35,6 +36,7 @@ import android.os.SystemProperties;
import com.android.internal.telephony.IccCard;
import java.util.Date;
+import java.io.File;
import java.text.SimpleDateFormat;
/**
@@ -46,8 +48,9 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
KeyguardUpdateMonitor.SimStateCallback, KeyguardUpdateMonitor.ConfigurationChangeCallback,
RotarySelector.OnDialTriggerListener {
- static private final boolean DBG = false;
- static private final String TAG = "LockScreen";
+ private static final boolean DBG = false;
+ private static final String TAG = "LockScreen";
+ private static final String ENABLE_MENU_KEY_FILE = "/data/local/enable_menu_key";
private Status mStatus = Status.Normal;
@@ -83,7 +86,7 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
private java.text.DateFormat mDateFormat;
private java.text.DateFormat mTimeFormat;
private boolean mCreatedInPortrait;
- private boolean mDisableMenuKeyInLockScreen;
+ private boolean mEnableMenuKeyInLockScreen;
/**
* The status of this lock screen.
@@ -136,6 +139,20 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
}
}
+ /**
+ * In general, we enable unlocking the insecure key guard with the menu key. However, there are
+ * some cases where we wish to disable it, notably when the menu button placement or technology
+ * is prone to false positives.
+ *
+ * @return true if the menu key should be enabled
+ */
+ private boolean shouldEnableMenuKey() {
+ final Resources res = getResources();
+ final boolean configDisabled = res.getBoolean(R.bool.config_disableMenuKeyInLockScreen);
+ final boolean isMonkey = SystemProperties.getBoolean("ro.monkey", false);
+ final boolean fileOverride = (new File(ENABLE_MENU_KEY_FILE)).exists();
+ return !configDisabled || isMonkey || fileOverride;
+ }
/**
* @param context Used to setup the view.
@@ -152,9 +169,7 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
mUpdateMonitor = updateMonitor;
mCallback = callback;
- mDisableMenuKeyInLockScreen = getResources()
- .getBoolean(R.bool.config_disableMenuKeyInLockScreen)
- && !SystemProperties.getBoolean("ro.monkey", false);
+ mEnableMenuKeyInLockScreen = shouldEnableMenuKey();
mCreatedInPortrait = updateMonitor.isInPortrait();
@@ -220,7 +235,7 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_MENU && !mDisableMenuKeyInLockScreen) {
+ if (keyCode == KeyEvent.KEYCODE_MENU && mEnableMenuKeyInLockScreen) {
mCallback.goToUnlockScreen();
}
return false;