Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6e5dbdd5 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka Committed by Android (Google) Code Review
Browse files

Merge "Add null check to KeySpecParser"

parents 6a16fa1f d9c6b332
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -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;
        }
+3 −0
Original line number Diff line number Diff line
@@ -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(
+12 −0
Original line number Diff line number Diff line
@@ -16,6 +16,9 @@

package com.android.inputmethod.keyboard.internal;

import static com.android.inputmethod.keyboard.internal.KeyboardIconsSet.ICON_UNDEFINED;
import static com.android.inputmethod.latin.Constants.CODE_UNSPECIFIED;

import android.test.suitebuilder.annotation.SmallTest;

import com.android.inputmethod.latin.Constants;
@@ -40,4 +43,13 @@ public final class KeySpecParserTests extends KeySpecParserTestsBase {
                Constants.printableCode(expectedCode),
                Constants.printableCode(actualCode));
    }

    // TODO: Remove this method.
    // These should throw {@link KeySpecParserError} when Key.keyLabel attribute become mandatory.
    public void testEmptySpec() {
        assertParser("Null spec", null,
                null, null, ICON_UNDEFINED, CODE_UNSPECIFIED);
        assertParser("Empty spec", "",
                null, null, ICON_UNDEFINED, CODE_UNSPECIFIED);
    }
}
+0 −4
Original line number Diff line number Diff line
@@ -251,10 +251,6 @@ abstract class KeySpecParserTestsBase extends AndroidTestCase {
    }

    public void testFormatError() {
        assertParserError("Null spec", null, null,
                null, ICON_UNDEFINED, CODE_UNSPECIFIED);
        assertParserError("Empty spec", "", null,
                null, ICON_UNDEFINED, CODE_UNSPECIFIED);
        assertParserError("Single bar", "|",
                "|", null, ICON_UNDEFINED, '|');
        assertParserError("Empty label with outputText", "|a",
+11 −0
Original line number Diff line number Diff line
@@ -16,6 +16,9 @@

package com.android.inputmethod.keyboard.internal;

import static com.android.inputmethod.keyboard.internal.KeyboardIconsSet.ICON_UNDEFINED;
import static com.android.inputmethod.latin.Constants.CODE_UNSPECIFIED;

import android.test.suitebuilder.annotation.SmallTest;

import com.android.inputmethod.latin.Constants;
@@ -42,6 +45,14 @@ public final class MoreKeySpecTests extends KeySpecParserTestsBase {
                Constants.printableCode(spec.mCode));
    }

    // TODO: Move this method to {@link KeySpecParserBase}.
    public void testEmptySpec() {
        assertParserError("Null spec", null,
                null, null, ICON_UNDEFINED, CODE_UNSPECIFIED);
        assertParserError("Empty spec", "",
                null, null, ICON_UNDEFINED, CODE_UNSPECIFIED);
    }

    private static void assertArrayEquals(final String message, final Object[] expected,
            final Object[] actual) {
        if (expected == actual) {