diff options
author | 2014-01-31 19:18:15 +0900 | |
---|---|---|
committer | 2014-02-05 17:49:26 +0900 | |
commit | d9c6b332090c90e4d4840e62fe3eb45c834b2e14 (patch) | |
tree | aeec13a3b8cfa8d8d8fe1fe4628f503bb6a1320e /java/src | |
parent | bc9514032abe85ff6c18d2af5802ad0ee11a2241 (diff) | |
download | latinime-d9c6b332090c90e4d4840e62fe3eb45c834b2e14.tar.gz latinime-d9c6b332090c90e4d4840e62fe3eb45c834b2e14.tar.xz latinime-d9c6b332090c90e4d4840e62fe3eb45c834b2e14.zip |
Add null check to KeySpecParser
Change-Id: Ic37db8cbf8f83f753d7381e1edba8eac1ef1ceb1
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java | 17 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/internal/MoreKeySpec.java | 3 |
2 files changed, 20 insertions, 0 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java b/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java index 292bf35cb..2a0dad678 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java @@ -120,6 +120,10 @@ public final class KeySpecParser { } public static String getLabel(final String keySpec) { + if (keySpec == null) { + // TODO: Throw {@link KeySpecParserError} once Key.keyLabel attribute becomes mandatory. + return null; + } if (hasIcon(keySpec)) { return null; } @@ -140,6 +144,10 @@ public final class KeySpecParser { } public static String getOutputText(final String keySpec) { + if (keySpec == null) { + // TODO: Throw {@link KeySpecParserError} once Key.keyLabel attribute becomes mandatory. + return null; + } final int labelEnd = indexOfLabelEnd(keySpec); if (hasCode(keySpec, labelEnd)) { return null; @@ -165,6 +173,10 @@ public final class KeySpecParser { } public static int getCode(final String keySpec, final KeyboardCodesSet codesSet) { + if (keySpec == null) { + // TODO: Throw {@link KeySpecParserError} once Key.keyLabel attribute becomes mandatory. + return CODE_UNSPECIFIED; + } final int labelEnd = indexOfLabelEnd(keySpec); if (hasCode(keySpec, labelEnd)) { checkDoubleLabelEnd(keySpec, labelEnd); @@ -187,6 +199,7 @@ public final class KeySpecParser { return (StringUtils.codePointCount(label) == 1) ? label.codePointAt(0) : CODE_OUTPUT_TEXT; } + // TODO: Make this method private once Key.code attribute is removed. public static int parseCode(final String text, final KeyboardCodesSet codesSet, final int defCode) { if (text == null) { @@ -202,6 +215,10 @@ public final class KeySpecParser { } public static int getIconId(final String keySpec) { + if (keySpec == null) { + // TODO: Throw {@link KeySpecParserError} once Key.keyLabel attribute becomes mandatory. + return KeyboardIconsSet.ICON_UNDEFINED; + } if (!hasIcon(keySpec)) { return KeyboardIconsSet.ICON_UNDEFINED; } diff --git a/java/src/com/android/inputmethod/keyboard/internal/MoreKeySpec.java b/java/src/com/android/inputmethod/keyboard/internal/MoreKeySpec.java index d3bc0c2b2..0551e9e98 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/MoreKeySpec.java +++ b/java/src/com/android/inputmethod/keyboard/internal/MoreKeySpec.java @@ -46,6 +46,9 @@ public final class MoreKeySpec { public MoreKeySpec(final String moreKeySpec, boolean needsToUpperCase, final Locale locale, final KeyboardCodesSet codesSet) { + if (TextUtils.isEmpty(moreKeySpec)) { + throw new KeySpecParser.KeySpecParserError("Empty more key spec"); + } mLabel = StringUtils.toUpperCaseOfStringForLocale( KeySpecParser.getLabel(moreKeySpec), needsToUpperCase, locale); final int code = StringUtils.toUpperCaseOfCodeForLocale( |