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

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

Merge "Add shared abstract test class for action label test" into lmp-dev

parents cc5050d7 cd6f5ae5
Loading
Loading
Loading
Loading
+156 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2014 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.inputmethod.keyboard;

import android.content.res.Resources;
import android.text.InputType;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodSubtype;

import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.utils.RunInLocale;
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;

import java.util.Locale;

abstract class KeyboardLayoutSetActionLabelBase extends KeyboardLayoutSetTestsBase {
    public void testActionUnspecified() {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
            final String tag = "unspecifiled "
                    + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            doTestActionKeyIcon(tag, subtype, EditorInfo.IME_ACTION_UNSPECIFIED,
                    KeyboardIconsSet.NAME_ENTER_KEY);
        }
    }

    public void testActionNone() {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
            final String tag = "none " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            doTestActionKeyIcon(tag, subtype, EditorInfo.IME_ACTION_NONE,
                    KeyboardIconsSet.NAME_ENTER_KEY);
        }
    }

    public void testActionSearch() {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
            final String tag = "search " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            doTestActionKeyIcon(tag, subtype, EditorInfo.IME_ACTION_SEARCH,
                    KeyboardIconsSet.NAME_SEARCH_KEY);
        }
    }

    public abstract void testActionGo();
    public abstract void testActionSend();
    public abstract void testActionNext();
    public abstract void testActionDone();
    public abstract void testActionPrevious();

    public void testActionCustom() {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
            final String tag = "custom " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            final CharSequence customLabel = "customLabel";
            final EditorInfo editorInfo = new EditorInfo();
            editorInfo.imeOptions = EditorInfo.IME_ACTION_UNSPECIFIED;
            editorInfo.actionLabel = customLabel;
            doTestActionKeyLabel(tag, subtype, editorInfo, customLabel);
        }
    }

    private static void doTestActionKey(final String tag, final KeyboardLayoutSet layoutSet,
            final int elementId, final CharSequence label, final int iconId) {
        final Keyboard keyboard = layoutSet.getKeyboard(elementId);
        final Key enterKey = keyboard.getKey(Constants.CODE_ENTER);
        assertNotNull(tag + " enter key on " + keyboard.mId, enterKey);
        assertEquals(tag + " enter label " + enterKey, label, enterKey.getLabel());
        assertEquals(tag + " enter icon " + enterKey, iconId, enterKey.getIconId());
    }

    protected void doTestActionKeyLabelResId(final String tag, final InputMethodSubtype subtype,
            final int actionId, final int labelResId) {
        final Locale labelLocale = subtype.getLocale().equals(SubtypeLocaleUtils.NO_LANGUAGE)
                ? null : SubtypeLocaleUtils.getSubtypeLocale(subtype);
        doTestActionKeyLabelResIdInLocale(tag, subtype, actionId, labelLocale, labelResId);
    }

    protected void doTestActionKeyLabelResIdInLocale(final String tag,
            final InputMethodSubtype subtype, final int actionId, final Locale labelLocale,
            final int labelResId) {
        final EditorInfo editorInfo = new EditorInfo();
        editorInfo.imeOptions = actionId;
        final RunInLocale<String> job = new RunInLocale<String>() {
            @Override
            protected String job(final Resources res) {
                return res.getString(labelResId);
            }
        };
        final String label = job.runInLocale(getContext().getResources(), labelLocale);
        doTestActionKeyLabel(tag, subtype, editorInfo, label);
    }

    protected void doTestActionKeyLabel(final String tag, final InputMethodSubtype subtype,
            final EditorInfo editorInfo, final CharSequence label) {
        // Test text layouts.
        editorInfo.inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_NORMAL;
        final KeyboardLayoutSet layoutSet = createKeyboardLayoutSet(subtype, editorInfo);
        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_ALPHABET,
                label, KeyboardIconsSet.ICON_UNDEFINED);
        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_SYMBOLS,
                label, KeyboardIconsSet.ICON_UNDEFINED);
        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_SYMBOLS_SHIFTED,
                label, KeyboardIconsSet.ICON_UNDEFINED);
        // Test phone number layouts.
        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_PHONE,
                label, KeyboardIconsSet.ICON_UNDEFINED);
        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_PHONE_SYMBOLS,
                label, KeyboardIconsSet.ICON_UNDEFINED);
        // Test normal number layout.
        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_NUMBER,
                label, KeyboardIconsSet.ICON_UNDEFINED);
        // Test number password layouts.
        editorInfo.inputType =
                InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD;
        final KeyboardLayoutSet passwordSet = createKeyboardLayoutSet(subtype, editorInfo);
        doTestActionKey(tag, passwordSet, KeyboardId.ELEMENT_NUMBER,
                label, KeyboardIconsSet.ICON_UNDEFINED);
    }

    protected void doTestActionKeyIcon(final String tag, final InputMethodSubtype subtype,
            final int actionId, final String iconName) {
        final int iconId = KeyboardIconsSet.getIconId(iconName);
        final EditorInfo editorInfo = new EditorInfo();
        editorInfo.imeOptions = actionId;
        // Test text layouts.
        editorInfo.inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_NORMAL;
        final KeyboardLayoutSet layoutSet = createKeyboardLayoutSet(subtype, editorInfo);
        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_ALPHABET, null /* label */, iconId);
        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_SYMBOLS, null /* label */, iconId);
        doTestActionKey(
                tag, layoutSet, KeyboardId.ELEMENT_SYMBOLS_SHIFTED, null /* label */, iconId);
        // Test phone number layouts.
        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_PHONE, null /* label */, iconId);
        doTestActionKey(
                tag, layoutSet, KeyboardId.ELEMENT_PHONE_SYMBOLS, null /* label */, iconId);
        // Test normal number layout.
        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_NUMBER, null /* label */, iconId);
        // Test number password layout.
        editorInfo.inputType =
                InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD;
        final KeyboardLayoutSet passwordSet = createKeyboardLayoutSet(subtype, editorInfo);
        doTestActionKey(tag, passwordSet, KeyboardId.ELEMENT_NUMBER, null /* label */, iconId);
    }
}
+16 −53
Original line number Original line Diff line number Diff line
@@ -30,61 +30,27 @@ import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
import java.util.Locale;
import java.util.Locale;


@MediumTest
@MediumTest
public class KeyboardLayoutSetActionLabelKlpTests extends KeyboardLayoutSetActionLabelLxxTests {
public class KeyboardLayoutSetActionLabelKlpTests extends KeyboardLayoutSetActionLabelBase {
    @Override
    @Override
    protected int getKeyboardThemeForTests() {
    protected int getKeyboardThemeForTests() {
        return KeyboardTheme.THEME_ID_KLP;
        return KeyboardTheme.THEME_ID_KLP;
    }
    }


    protected void doTestActionKeyLabel(final String tag, final InputMethodSubtype subtype,
            final int actionId, final int labelResId) {
        final Locale labelLocale = subtype.getLocale().equals(SubtypeLocaleUtils.NO_LANGUAGE)
                ? null : SubtypeLocaleUtils.getSubtypeLocale(subtype);
        doTestActionKeyLabel(tag, subtype, actionId, labelLocale, labelResId);
    }

    protected void doTestActionKeyLabel(final String tag, final InputMethodSubtype subtype,
            final int actionId, final Locale labelLocale, final int labelResId) {
        final EditorInfo editorInfo = new EditorInfo();
        editorInfo.imeOptions = actionId;
        final RunInLocale<String> job = new RunInLocale<String>() {
            @Override
            protected String job(final Resources res) {
                return res.getString(labelResId);
            }
        };
        final String label = job.runInLocale(getContext().getResources(), labelLocale);
        doTestActionKeyLabel(tag, subtype, editorInfo, label);
    }

    @Override
    public void testActionUnspecified() {
        super.testActionUnspecified();
    }

    @Override
    public void testActionNone() {
        super.testActionNone();
    }

    @Override
    @Override
    public void testActionGo() {
    public void testActionGo() {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
            final String tag = "go " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            final String tag = "go " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            doTestActionKeyLabel(tag, subtype, EditorInfo.IME_ACTION_GO, R.string.label_go_key);
            doTestActionKeyLabelResId(tag, subtype, EditorInfo.IME_ACTION_GO,
                    R.string.label_go_key);
        }
        }
    }
    }


    @Override
    public void testActionSearch() {
        super.testActionSearch();
    }

    @Override
    @Override
    public void testActionSend() {
    public void testActionSend() {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
            final String tag = "send " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            final String tag = "send " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            doTestActionKeyLabel(tag, subtype, EditorInfo.IME_ACTION_SEND, R.string.label_send_key);
            doTestActionKeyLabelResId(tag, subtype, EditorInfo.IME_ACTION_SEND,
                    R.string.label_send_key);
        }
        }
    }
    }


@@ -92,7 +58,8 @@ public class KeyboardLayoutSetActionLabelKlpTests extends KeyboardLayoutSetActio
    public void testActionNext() {
    public void testActionNext() {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
            final String tag = "next " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            final String tag = "next " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            doTestActionKeyLabel(tag, subtype, EditorInfo.IME_ACTION_NEXT, R.string.label_next_key);
            doTestActionKeyLabelResId(tag, subtype, EditorInfo.IME_ACTION_NEXT,
                    R.string.label_next_key);
        }
        }
    }
    }


@@ -100,7 +67,8 @@ public class KeyboardLayoutSetActionLabelKlpTests extends KeyboardLayoutSetActio
    public void testActionDone() {
    public void testActionDone() {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
            final String tag = "done " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            final String tag = "done " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            doTestActionKeyLabel(tag, subtype, EditorInfo.IME_ACTION_DONE, R.string.label_done_key);
            doTestActionKeyLabelResId(tag, subtype, EditorInfo.IME_ACTION_DONE,
                    R.string.label_done_key);
        }
        }
    }
    }


@@ -108,14 +76,9 @@ public class KeyboardLayoutSetActionLabelKlpTests extends KeyboardLayoutSetActio
    public void testActionPrevious() {
    public void testActionPrevious() {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
            final String tag = "previous " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            final String tag = "previous " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            doTestActionKeyLabel(
            doTestActionKeyLabelResId(tag, subtype, EditorInfo.IME_ACTION_PREVIOUS,
                    tag, subtype, EditorInfo.IME_ACTION_PREVIOUS, R.string.label_previous_key);
                    R.string.label_previous_key);
        }
        }
        }

    @Override
    public void testActionCustom() {
        super.testActionCustom();
    }
    }


    // Working variable to simulate system locale changing.
    // Working variable to simulate system locale changing.
@@ -137,17 +100,17 @@ public class KeyboardLayoutSetActionLabelKlpTests extends KeyboardLayoutSetActio
                        EditorInfo.IME_ACTION_UNSPECIFIED, KeyboardIconsSet.NAME_ENTER_KEY);
                        EditorInfo.IME_ACTION_UNSPECIFIED, KeyboardIconsSet.NAME_ENTER_KEY);
                doTestActionKeyIcon(tag + " none", subtype,
                doTestActionKeyIcon(tag + " none", subtype,
                        EditorInfo.IME_ACTION_NONE, KeyboardIconsSet.NAME_ENTER_KEY);
                        EditorInfo.IME_ACTION_NONE, KeyboardIconsSet.NAME_ENTER_KEY);
                doTestActionKeyLabel(tag + " go", subtype,
                doTestActionKeyLabelResIdInLocale(tag + " go", subtype,
                        EditorInfo.IME_ACTION_GO, labelLocale, R.string.label_go_key);
                        EditorInfo.IME_ACTION_GO, labelLocale, R.string.label_go_key);
                doTestActionKeyIcon(tag + " search", subtype,
                doTestActionKeyIcon(tag + " search", subtype,
                        EditorInfo.IME_ACTION_SEARCH, KeyboardIconsSet.NAME_SEARCH_KEY);
                        EditorInfo.IME_ACTION_SEARCH, KeyboardIconsSet.NAME_SEARCH_KEY);
                doTestActionKeyLabel(tag + " send", subtype,
                doTestActionKeyLabelResIdInLocale(tag + " send", subtype,
                        EditorInfo.IME_ACTION_SEND, labelLocale, R.string.label_send_key);
                        EditorInfo.IME_ACTION_SEND, labelLocale, R.string.label_send_key);
                doTestActionKeyLabel(tag + " next", subtype,
                doTestActionKeyLabelResIdInLocale(tag + " next", subtype,
                        EditorInfo.IME_ACTION_NEXT, labelLocale, R.string.label_next_key);
                        EditorInfo.IME_ACTION_NEXT, labelLocale, R.string.label_next_key);
                doTestActionKeyLabel(tag + " done", subtype,
                doTestActionKeyLabelResIdInLocale(tag + " done", subtype,
                        EditorInfo.IME_ACTION_DONE, labelLocale, R.string.label_done_key);
                        EditorInfo.IME_ACTION_DONE, labelLocale, R.string.label_done_key);
                doTestActionKeyLabel(tag + " previous", subtype,
                doTestActionKeyLabelResIdInLocale(tag + " previous", subtype,
                        EditorInfo.IME_ACTION_PREVIOUS, labelLocale, R.string.label_previous_key);
                        EditorInfo.IME_ACTION_PREVIOUS, labelLocale, R.string.label_previous_key);
                return null;
                return null;
            }
            }
+7 −101
Original line number Original line Diff line number Diff line
@@ -17,99 +17,20 @@
package com.android.inputmethod.keyboard;
package com.android.inputmethod.keyboard;


import android.test.suitebuilder.annotation.MediumTest;
import android.test.suitebuilder.annotation.MediumTest;
import android.text.InputType;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodSubtype;
import android.view.inputmethod.InputMethodSubtype;


import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;


@MediumTest
@MediumTest
public class KeyboardLayoutSetActionLabelLxxTests extends KeyboardLayoutSetTestsBase {
public class KeyboardLayoutSetActionLabelLxxTests extends KeyboardLayoutSetActionLabelBase {
    @Override
    @Override
    protected int getKeyboardThemeForTests() {
    protected int getKeyboardThemeForTests() {
        return KeyboardTheme.THEME_ID_LXX_DARK;
        return KeyboardTheme.THEME_ID_LXX_LIGHT;
    }

    private static void doTestActionKey(final String tag, final KeyboardLayoutSet layoutSet,
            final int elementId, final CharSequence label, final int iconId) {
        final Keyboard keyboard = layoutSet.getKeyboard(elementId);
        final Key enterKey = keyboard.getKey(Constants.CODE_ENTER);
        assertNotNull(tag + " enter key on " + keyboard.mId, enterKey);
        assertEquals(tag + " enter label " + enterKey, label, enterKey.getLabel());
        assertEquals(tag + " enter icon " + enterKey, iconId, enterKey.getIconId());
    }

    protected void doTestActionKeyLabel(final String tag, final InputMethodSubtype subtype,
            final EditorInfo editorInfo, final CharSequence label) {
        // Test text layouts.
        editorInfo.inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_NORMAL;
        final KeyboardLayoutSet layoutSet = createKeyboardLayoutSet(subtype, editorInfo);
        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_ALPHABET,
                label, KeyboardIconsSet.ICON_UNDEFINED);
        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_SYMBOLS,
                label, KeyboardIconsSet.ICON_UNDEFINED);
        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_SYMBOLS_SHIFTED,
                label, KeyboardIconsSet.ICON_UNDEFINED);
        // Test phone number layouts.
        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_PHONE,
                label, KeyboardIconsSet.ICON_UNDEFINED);
        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_PHONE_SYMBOLS,
                label, KeyboardIconsSet.ICON_UNDEFINED);
        // Test normal number layout.
        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_NUMBER,
                label, KeyboardIconsSet.ICON_UNDEFINED);
        // Test number password layouts.
        editorInfo.inputType =
                InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD;
        final KeyboardLayoutSet passwordSet = createKeyboardLayoutSet(subtype, editorInfo);
        doTestActionKey(tag, passwordSet, KeyboardId.ELEMENT_NUMBER,
                label, KeyboardIconsSet.ICON_UNDEFINED);
    }

    protected void doTestActionKeyIcon(final String tag, final InputMethodSubtype subtype,
            final int actionId, final String iconName) {
        final int iconId = KeyboardIconsSet.getIconId(iconName);
        final EditorInfo editorInfo = new EditorInfo();
        editorInfo.imeOptions = actionId;
        // Test text layouts.
        editorInfo.inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_NORMAL;
        final KeyboardLayoutSet layoutSet = createKeyboardLayoutSet(subtype, editorInfo);
        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_ALPHABET, null /* label */, iconId);
        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_SYMBOLS, null /* label */, iconId);
        doTestActionKey(
                tag, layoutSet, KeyboardId.ELEMENT_SYMBOLS_SHIFTED, null /* label */, iconId);
        // Test phone number layouts.
        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_PHONE, null /* label */, iconId);
        doTestActionKey(
                tag, layoutSet, KeyboardId.ELEMENT_PHONE_SYMBOLS, null /* label */, iconId);
        // Test normal number layout.
        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_NUMBER, null /* label */, iconId);
        // Test number password layout.
        editorInfo.inputType =
                InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD;
        final KeyboardLayoutSet passwordSet = createKeyboardLayoutSet(subtype, editorInfo);
        doTestActionKey(tag, passwordSet, KeyboardId.ELEMENT_NUMBER, null /* label */, iconId);
    }

    public void testActionUnspecified() {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
            final String tag = "unspecifiled "
                    + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            doTestActionKeyIcon(tag, subtype, EditorInfo.IME_ACTION_UNSPECIFIED,
                    KeyboardIconsSet.NAME_ENTER_KEY);
        }
    }

    public void testActionNone() {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
            final String tag = "none " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            doTestActionKeyIcon(tag, subtype, EditorInfo.IME_ACTION_NONE,
                    KeyboardIconsSet.NAME_ENTER_KEY);
        }
    }
    }


    @Override
    public void testActionGo() {
    public void testActionGo() {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
            final String tag = "go " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            final String tag = "go " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
@@ -118,14 +39,7 @@ public class KeyboardLayoutSetActionLabelLxxTests extends KeyboardLayoutSetTests
        }
        }
    }
    }


    public void testActionSearch() {
    @Override
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
            final String tag = "search " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            doTestActionKeyIcon(tag, subtype, EditorInfo.IME_ACTION_SEARCH,
                    KeyboardIconsSet.NAME_SEARCH_KEY);
        }
    }

    public void testActionSend() {
    public void testActionSend() {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
            final String tag = "send " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            final String tag = "send " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
@@ -134,6 +48,7 @@ public class KeyboardLayoutSetActionLabelLxxTests extends KeyboardLayoutSetTests
        }
        }
    }
    }


    @Override
    public void testActionNext() {
    public void testActionNext() {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
            final String tag = "next " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            final String tag = "next " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
@@ -142,6 +57,7 @@ public class KeyboardLayoutSetActionLabelLxxTests extends KeyboardLayoutSetTests
        }
        }
    }
    }


    @Override
    public void testActionDone() {
    public void testActionDone() {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
            final String tag = "done " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            final String tag = "done " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
@@ -150,6 +66,7 @@ public class KeyboardLayoutSetActionLabelLxxTests extends KeyboardLayoutSetTests
        }
        }
    }
    }


    @Override
    public void testActionPrevious() {
    public void testActionPrevious() {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
            final String tag = "previous " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            final String tag = "previous " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
@@ -157,15 +74,4 @@ public class KeyboardLayoutSetActionLabelLxxTests extends KeyboardLayoutSetTests
                    KeyboardIconsSet.NAME_PREVIOUS_KEY);
                    KeyboardIconsSet.NAME_PREVIOUS_KEY);
        }
        }
    }
    }

    public void testActionCustom() {
        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
            final String tag = "custom " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
            final CharSequence customLabel = "customLabel";
            final EditorInfo editorInfo = new EditorInfo();
            editorInfo.imeOptions = EditorInfo.IME_ACTION_UNSPECIFIED;
            editorInfo.actionLabel = customLabel;
            doTestActionKeyLabel(tag, subtype, editorInfo, customLabel);
        }
    }
}
}