aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java6
-rw-r--r--tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTestsBase.java8
2 files changed, 8 insertions, 6 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java b/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java
index 2a0dad678..2925a4b76 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java
@@ -84,14 +84,18 @@ public final class KeySpecParser {
}
private static int indexOfLabelEnd(final String keySpec) {
+ final int length = keySpec.length();
if (keySpec.indexOf(BACKSLASH) < 0) {
final int labelEnd = keySpec.indexOf(VERTICAL_BAR);
if (labelEnd == 0) {
+ if (length == 1) {
+ // Treat a sole vertical bar as a special case of key label.
+ return -1;
+ }
throw new KeySpecParserError("Empty label");
}
return labelEnd;
}
- final int length = keySpec.length();
for (int pos = 0; pos < length; pos++) {
final char c = keySpec.charAt(pos);
if (c == BACKSLASH && pos + 1 < length) {
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTestsBase.java b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTestsBase.java
index a02d40299..cb640b3f8 100644
--- a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTestsBase.java
+++ b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTestsBase.java
@@ -101,7 +101,9 @@ abstract class KeySpecParserTestsBase extends AndroidTestCase {
"a", null, ICON_UNDEFINED, 'a');
assertParser("Single surrogate", SURROGATE_PAIR1,
SURROGATE_PAIR1, null, ICON_UNDEFINED, SURROGATE_CODE1);
- assertParser("Single escaped bar", "\\|",
+ assertParser("Sole vertical bar", "|",
+ "|", null, ICON_UNDEFINED, '|');
+ assertParser("Single escaped vertical bar", "\\|",
"|", null, ICON_UNDEFINED, '|');
assertParser("Single escaped escape", "\\\\",
"\\", null, ICON_UNDEFINED, '\\');
@@ -251,8 +253,6 @@ abstract class KeySpecParserTestsBase extends AndroidTestCase {
}
public void testFormatError() {
- assertParserError("Single bar", "|",
- "|", null, ICON_UNDEFINED, '|');
assertParserError("Empty label with outputText", "|a",
null, "a", ICON_UNDEFINED, CODE_UNSPECIFIED);
assertParserError("Empty label with code", "|" + CODE_SETTINGS,
@@ -261,8 +261,6 @@ abstract class KeySpecParserTestsBase extends AndroidTestCase {
"a", null, ICON_UNDEFINED, CODE_UNSPECIFIED);
assertParserError("Empty outputText with icon", ICON_SETTINGS + "|",
null, null, mSettingsIconId, CODE_UNSPECIFIED);
- assertParserError("Empty icon and code", "|",
- null, null, ICON_UNDEFINED, CODE_UNSPECIFIED);
assertParserError("Icon without code", ICON_SETTINGS,
null, null, mSettingsIconId, CODE_UNSPECIFIED);
assertParserError("Non existing icon", ICON_NON_EXISTING + "|abc",