Skip to content
Snippets Groups Projects
Commit 02a534d1 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka Committed by Android (Google) Code Review
Browse files

Merge "Treat a sole "|" as a special case of key label"

parents 6e5dbdd5 f7d8b8fc
No related branches found
No related tags found
No related merge requests found
...@@ -84,14 +84,18 @@ public final class KeySpecParser { ...@@ -84,14 +84,18 @@ public final class KeySpecParser {
} }
private static int indexOfLabelEnd(final String keySpec) { private static int indexOfLabelEnd(final String keySpec) {
final int length = keySpec.length();
if (keySpec.indexOf(BACKSLASH) < 0) { if (keySpec.indexOf(BACKSLASH) < 0) {
final int labelEnd = keySpec.indexOf(VERTICAL_BAR); final int labelEnd = keySpec.indexOf(VERTICAL_BAR);
if (labelEnd == 0) { 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"); throw new KeySpecParserError("Empty label");
} }
return labelEnd; return labelEnd;
} }
final int length = keySpec.length();
for (int pos = 0; pos < length; pos++) { for (int pos = 0; pos < length; pos++) {
final char c = keySpec.charAt(pos); final char c = keySpec.charAt(pos);
if (c == BACKSLASH && pos + 1 < length) { if (c == BACKSLASH && pos + 1 < length) {
......
...@@ -101,7 +101,9 @@ abstract class KeySpecParserTestsBase extends AndroidTestCase { ...@@ -101,7 +101,9 @@ abstract class KeySpecParserTestsBase extends AndroidTestCase {
"a", null, ICON_UNDEFINED, 'a'); "a", null, ICON_UNDEFINED, 'a');
assertParser("Single surrogate", SURROGATE_PAIR1, assertParser("Single surrogate", SURROGATE_PAIR1,
SURROGATE_PAIR1, null, ICON_UNDEFINED, SURROGATE_CODE1); 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, '|'); "|", null, ICON_UNDEFINED, '|');
assertParser("Single escaped escape", "\\\\", assertParser("Single escaped escape", "\\\\",
"\\", null, ICON_UNDEFINED, '\\'); "\\", null, ICON_UNDEFINED, '\\');
...@@ -251,8 +253,6 @@ abstract class KeySpecParserTestsBase extends AndroidTestCase { ...@@ -251,8 +253,6 @@ abstract class KeySpecParserTestsBase extends AndroidTestCase {
} }
public void testFormatError() { public void testFormatError() {
assertParserError("Single bar", "|",
"|", null, ICON_UNDEFINED, '|');
assertParserError("Empty label with outputText", "|a", assertParserError("Empty label with outputText", "|a",
null, "a", ICON_UNDEFINED, CODE_UNSPECIFIED); null, "a", ICON_UNDEFINED, CODE_UNSPECIFIED);
assertParserError("Empty label with code", "|" + CODE_SETTINGS, assertParserError("Empty label with code", "|" + CODE_SETTINGS,
...@@ -261,8 +261,6 @@ abstract class KeySpecParserTestsBase extends AndroidTestCase { ...@@ -261,8 +261,6 @@ abstract class KeySpecParserTestsBase extends AndroidTestCase {
"a", null, ICON_UNDEFINED, CODE_UNSPECIFIED); "a", null, ICON_UNDEFINED, CODE_UNSPECIFIED);
assertParserError("Empty outputText with icon", ICON_SETTINGS + "|", assertParserError("Empty outputText with icon", ICON_SETTINGS + "|",
null, null, mSettingsIconId, CODE_UNSPECIFIED); null, null, mSettingsIconId, CODE_UNSPECIFIED);
assertParserError("Empty icon and code", "|",
null, null, ICON_UNDEFINED, CODE_UNSPECIFIED);
assertParserError("Icon without code", ICON_SETTINGS, assertParserError("Icon without code", ICON_SETTINGS,
null, null, mSettingsIconId, CODE_UNSPECIFIED); null, null, mSettingsIconId, CODE_UNSPECIFIED);
assertParserError("Non existing icon", ICON_NON_EXISTING + "|abc", assertParserError("Non existing icon", ICON_NON_EXISTING + "|abc",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment