diff options
author | 2014-02-05 15:17:51 +0900 | |
---|---|---|
committer | 2014-02-05 17:57:44 +0900 | |
commit | f7d8b8fcbcfe137c1c25ca7ea5bd83f856f06b9e (patch) | |
tree | 84fe1619701cc03e81317b8d279b1a70f9f4d97a | |
parent | d9c6b332090c90e4d4840e62fe3eb45c834b2e14 (diff) | |
download | latinime-f7d8b8fcbcfe137c1c25ca7ea5bd83f856f06b9e.tar.gz latinime-f7d8b8fcbcfe137c1c25ca7ea5bd83f856f06b9e.tar.xz latinime-f7d8b8fcbcfe137c1c25ca7ea5bd83f856f06b9e.zip |
Treat a sole "|" as a special case of key label
Change-Id: Ia72c31d15c891fa522935ba9792e88fd5d8ce7f7
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java | 6 | ||||
-rw-r--r-- | tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTestsBase.java | 8 |
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", |