From 4adf5d9ae5d8c449510bf1f93cf678f63109a1cc Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" <takaoka@google.com> Date: Sun, 20 Feb 2011 14:44:59 +0900 Subject: [PATCH] Disable non-ASCII symbol keys in password input Bug: 3384942 Change-Id: Ifa10e84f22bb6ff85dfc397fac95a0294b2a6bea --- java/res/xml-xlarge/kbd_key_styles.xml | 15 +++++++++++++++ java/res/xml-xlarge/kbd_symbols_shift.xml | 19 +++++++++++++++++++ .../inputmethod/keyboard/KeyboardParser.java | 6 +++--- .../inputmethod/keyboard/KeyboardView.java | 10 ++++++++-- 4 files changed, 45 insertions(+), 5 deletions(-) diff --git a/java/res/xml-xlarge/kbd_key_styles.xml b/java/res/xml-xlarge/kbd_key_styles.xml index d211e5e610..fc06d00fca 100644 --- a/java/res/xml-xlarge/kbd_key_styles.xml +++ b/java/res/xml-xlarge/kbd_key_styles.xml @@ -165,4 +165,19 @@ latin:keyOutputText="@string/keylabel_for_popular_domain" latin:keyHintIcon="@drawable/hint_popup_holo" latin:popupCharacters="@string/alternates_for_popular_domain" /> + <switch> + <case + latin:passwordInput="true" + > + <key-style + latin:styleName="nonPasswordSymbolKeyStyle" + latin:enabled="false" /> + </case> + <!-- latin:passwordInput="false" --> + <default> + <key-style + latin:styleName="nonPasswordSymbolKeyStyle" + latin:enabled="true" /> + </default> + </switch> </merge> diff --git a/java/res/xml-xlarge/kbd_symbols_shift.xml b/java/res/xml-xlarge/kbd_symbols_shift.xml index f7cf24a3f0..1f5513b83b 100644 --- a/java/res/xml-xlarge/kbd_symbols_shift.xml +++ b/java/res/xml-xlarge/kbd_symbols_shift.xml @@ -46,21 +46,28 @@ <Key latin:keyLabel="|" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="•" latin:popupCharacters="♪,♥,â™ ,♦,♣" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="√" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="Ï€" latin:popupCharacters="Î " /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="÷" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="×" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="§" latin:popupCharacters="¶" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="Δ" /> <Key latin:keyStyle="deleteKeyStyle" @@ -76,19 +83,25 @@ latin:keyWidth="11.167%p" latin:keyEdgeFlags="left" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="£" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="¢" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="€" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="Â¥" /> <Key latin:keyLabel="^" latin:popupCharacters="↑,↓,â†,→" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="°" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="±" latin:popupCharacters="∞" /> <Key @@ -110,20 +123,26 @@ <Key latin:keyLabel="\\" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="©" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="®" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="â„¢" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="â„…" /> <Key latin:keyLabel="[" /> <Key latin:keyLabel="]" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="¡" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="¿" /> <Key latin:keyStyle="moreKeyStyle" diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java index 89208dd5d2..df64ad5af3 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java @@ -103,7 +103,7 @@ import java.util.List; */ public class KeyboardParser { - private static final String TAG = "KeyboardParser"; + private static final String TAG = KeyboardParser.class.getSimpleName(); private static final boolean DEBUG = false; // Keyboard XML Tags @@ -279,8 +279,8 @@ public class KeyboardParser { checkEndTag(TAG_KEY, parser); } else { Key key = new Key(mResources, row, mCurrentX, mCurrentY, parser, mKeyStyles); - if (DEBUG) Log.d(TAG, String.format("<%s keyLabel=%s code=%d popupCharacters=%s />", - TAG_KEY, key.mLabel, key.mCode, + if (DEBUG) Log.d(TAG, String.format("<%s%s keyLabel=%s code=%d popupCharacters=%s />", + TAG_KEY, (key.mEnabled ? "" : " disabled"), key.mLabel, key.mCode, Arrays.toString(key.mPopupCharacters))); checkEndTag(TAG_KEY, parser); keys.add(key); diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java index d4c5e579ba..7fee022e00 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java @@ -26,6 +26,7 @@ import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Canvas; +import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Align; import android.graphics.PorterDuff; @@ -705,8 +706,13 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { } else { paint.setColor(mKeyTextColor); } - // Set a drop shadow for the text - paint.setShadowLayer(mShadowRadius, 0, 0, mShadowColor); + if (key.mEnabled) { + // Set a drop shadow for the text + paint.setShadowLayer(mShadowRadius, 0, 0, mShadowColor); + } else { + // Make label invisible + paint.setColor(Color.TRANSPARENT); + } canvas.drawText(label, positionX, baseline, paint); // Turn off drop shadow paint.setShadowLayer(0, 0, 0, 0); -- GitLab