Search in sources :

Example 1 with ControllerImpl

use of com.android.internal.inputmethod.InputMethodSubtypeSwitchingController.ControllerImpl in project android_frameworks_base by DirtyUnicorns.

the class InputMethodSubtypeSwitchingControllerTest method testControllerImplWithUserAction.

@SmallTest
public void testControllerImplWithUserAction() throws Exception {
    final List<ImeSubtypeListItem> enabledItems = createEnabledImeSubtypes();
    final ImeSubtypeListItem latinIme_en_US = enabledItems.get(0);
    final ImeSubtypeListItem latinIme_fr = enabledItems.get(1);
    final ImeSubtypeListItem switchingUnawarelatinIme_en_UK = enabledItems.get(2);
    final ImeSubtypeListItem switchingUnawarelatinIme_hi = enabledItems.get(3);
    final ImeSubtypeListItem subtypeUnawareIme = enabledItems.get(4);
    final ImeSubtypeListItem japaneseIme_ja_JP = enabledItems.get(5);
    final ImeSubtypeListItem switchUnawareJapaneseIme_ja_JP = enabledItems.get(6);
    final ControllerImpl controller = ControllerImpl.createFrom(null, /* currentInstance */
    enabledItems);
    // === switching-aware loop ===
    assertRotationOrder(controller, false, /* onlyCurrentIme */
    latinIme_en_US, latinIme_fr, japaneseIme_ja_JP);
    // Then notify that a user did something for latinIme_fr.
    onUserAction(controller, latinIme_fr);
    assertRotationOrder(controller, false, /* onlyCurrentIme */
    latinIme_fr, latinIme_en_US, japaneseIme_ja_JP);
    // Then notify that a user did something for latinIme_fr again.
    onUserAction(controller, latinIme_fr);
    assertRotationOrder(controller, false, /* onlyCurrentIme */
    latinIme_fr, latinIme_en_US, japaneseIme_ja_JP);
    // Then notify that a user did something for japaneseIme_ja_JP.
    onUserAction(controller, latinIme_fr);
    assertRotationOrder(controller, false, /* onlyCurrentIme */
    japaneseIme_ja_JP, latinIme_fr, latinIme_en_US);
    // Check onlyCurrentIme == true.
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    japaneseIme_ja_JP, null, null);
    assertRotationOrder(controller, true, /* onlyCurrentIme */
    latinIme_fr, latinIme_en_US);
    assertRotationOrder(controller, true, /* onlyCurrentIme */
    latinIme_en_US, latinIme_fr);
    // === switching-unaware loop ===
    assertRotationOrder(controller, false, /* onlyCurrentIme */
    switchingUnawarelatinIme_en_UK, switchingUnawarelatinIme_hi, subtypeUnawareIme, switchUnawareJapaneseIme_ja_JP);
    // User action should be ignored for switching unaware IMEs.
    onUserAction(controller, switchingUnawarelatinIme_hi);
    assertRotationOrder(controller, false, /* onlyCurrentIme */
    switchingUnawarelatinIme_en_UK, switchingUnawarelatinIme_hi, subtypeUnawareIme, switchUnawareJapaneseIme_ja_JP);
    // User action should be ignored for switching unaware IMEs.
    onUserAction(controller, switchUnawareJapaneseIme_ja_JP);
    assertRotationOrder(controller, false, /* onlyCurrentIme */
    switchingUnawarelatinIme_en_UK, switchingUnawarelatinIme_hi, subtypeUnawareIme, switchUnawareJapaneseIme_ja_JP);
    // Check onlyCurrentIme == true.
    assertRotationOrder(controller, true, /* onlyCurrentIme */
    switchingUnawarelatinIme_en_UK, switchingUnawarelatinIme_hi);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    subtypeUnawareIme, null, null);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    switchUnawareJapaneseIme_ja_JP, null, null);
    // Rotation order should be preserved when created with the same subtype list.
    final List<ImeSubtypeListItem> sameEnabledItems = createEnabledImeSubtypes();
    final ControllerImpl newController = ControllerImpl.createFrom(controller, sameEnabledItems);
    assertRotationOrder(newController, false, /* onlyCurrentIme */
    japaneseIme_ja_JP, latinIme_fr, latinIme_en_US);
    assertRotationOrder(newController, false, /* onlyCurrentIme */
    switchingUnawarelatinIme_en_UK, switchingUnawarelatinIme_hi, subtypeUnawareIme, switchUnawareJapaneseIme_ja_JP);
    // Rotation order should be initialized when created with a different subtype list.
    final List<ImeSubtypeListItem> differentEnabledItems = Arrays.asList(latinIme_en_US, latinIme_fr, switchingUnawarelatinIme_en_UK, switchUnawareJapaneseIme_ja_JP);
    final ControllerImpl anotherController = ControllerImpl.createFrom(controller, differentEnabledItems);
    assertRotationOrder(anotherController, false, /* onlyCurrentIme */
    latinIme_en_US, latinIme_fr);
    assertRotationOrder(anotherController, false, /* onlyCurrentIme */
    switchingUnawarelatinIme_en_UK, switchUnawareJapaneseIme_ja_JP);
}
Also used : ControllerImpl(com.android.internal.inputmethod.InputMethodSubtypeSwitchingController.ControllerImpl) ImeSubtypeListItem(com.android.internal.inputmethod.InputMethodSubtypeSwitchingController.ImeSubtypeListItem) SmallTest(android.test.suitebuilder.annotation.SmallTest)

Example 2 with ControllerImpl

use of com.android.internal.inputmethod.InputMethodSubtypeSwitchingController.ControllerImpl in project platform_frameworks_base by android.

the class InputMethodSubtypeSwitchingControllerTest method testControllerImpl.

@SmallTest
public void testControllerImpl() throws Exception {
    final List<ImeSubtypeListItem> disabledItems = createDisabledImeSubtypes();
    final ImeSubtypeListItem disabledIme_en_US = disabledItems.get(0);
    final ImeSubtypeListItem disabledIme_hi = disabledItems.get(1);
    final ImeSubtypeListItem disabledSwitchingUnawareIme = disabledItems.get(2);
    final ImeSubtypeListItem disabledSubtypeUnawareIme = disabledItems.get(3);
    final List<ImeSubtypeListItem> enabledItems = createEnabledImeSubtypes();
    final ImeSubtypeListItem latinIme_en_US = enabledItems.get(0);
    final ImeSubtypeListItem latinIme_fr = enabledItems.get(1);
    final ImeSubtypeListItem switchingUnawarelatinIme_en_UK = enabledItems.get(2);
    final ImeSubtypeListItem switchingUnawarelatinIme_hi = enabledItems.get(3);
    final ImeSubtypeListItem subtypeUnawareIme = enabledItems.get(4);
    final ImeSubtypeListItem japaneseIme_ja_JP = enabledItems.get(5);
    final ImeSubtypeListItem switchUnawareJapaneseIme_ja_JP = enabledItems.get(6);
    final ControllerImpl controller = ControllerImpl.createFrom(null, /* currentInstance */
    enabledItems);
    // switching-aware loop
    assertRotationOrder(controller, false, /* onlyCurrentIme */
    latinIme_en_US, latinIme_fr, japaneseIme_ja_JP);
    // switching-unaware loop
    assertRotationOrder(controller, false, /* onlyCurrentIme */
    switchingUnawarelatinIme_en_UK, switchingUnawarelatinIme_hi, subtypeUnawareIme, switchUnawareJapaneseIme_ja_JP);
    // test onlyCurrentIme == true
    assertRotationOrder(controller, true, /* onlyCurrentIme */
    latinIme_en_US, latinIme_fr);
    assertRotationOrder(controller, true, /* onlyCurrentIme */
    switchingUnawarelatinIme_en_UK, switchingUnawarelatinIme_hi);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    subtypeUnawareIme, null, null);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    japaneseIme_ja_JP, null, null);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    switchUnawareJapaneseIme_ja_JP, null, null);
    // Make sure that disabled IMEs are not accepted.
    assertNextInputMethod(controller, false, /* onlyCurrentIme */
    disabledIme_en_US, null, null);
    assertNextInputMethod(controller, false, /* onlyCurrentIme */
    disabledIme_hi, null, null);
    assertNextInputMethod(controller, false, /* onlyCurrentIme */
    disabledSwitchingUnawareIme, null, null);
    assertNextInputMethod(controller, false, /* onlyCurrentIme */
    disabledSubtypeUnawareIme, null, null);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    disabledIme_en_US, null, null);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    disabledIme_hi, null, null);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    disabledSwitchingUnawareIme, null, null);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    disabledSubtypeUnawareIme, null, null);
}
Also used : ControllerImpl(com.android.internal.inputmethod.InputMethodSubtypeSwitchingController.ControllerImpl) ImeSubtypeListItem(com.android.internal.inputmethod.InputMethodSubtypeSwitchingController.ImeSubtypeListItem) SmallTest(android.test.suitebuilder.annotation.SmallTest)

Example 3 with ControllerImpl

use of com.android.internal.inputmethod.InputMethodSubtypeSwitchingController.ControllerImpl in project platform_frameworks_base by android.

the class InputMethodSubtypeSwitchingControllerTest method testControllerImplWithUserAction.

@SmallTest
public void testControllerImplWithUserAction() throws Exception {
    final List<ImeSubtypeListItem> enabledItems = createEnabledImeSubtypes();
    final ImeSubtypeListItem latinIme_en_US = enabledItems.get(0);
    final ImeSubtypeListItem latinIme_fr = enabledItems.get(1);
    final ImeSubtypeListItem switchingUnawarelatinIme_en_UK = enabledItems.get(2);
    final ImeSubtypeListItem switchingUnawarelatinIme_hi = enabledItems.get(3);
    final ImeSubtypeListItem subtypeUnawareIme = enabledItems.get(4);
    final ImeSubtypeListItem japaneseIme_ja_JP = enabledItems.get(5);
    final ImeSubtypeListItem switchUnawareJapaneseIme_ja_JP = enabledItems.get(6);
    final ControllerImpl controller = ControllerImpl.createFrom(null, /* currentInstance */
    enabledItems);
    // === switching-aware loop ===
    assertRotationOrder(controller, false, /* onlyCurrentIme */
    latinIme_en_US, latinIme_fr, japaneseIme_ja_JP);
    // Then notify that a user did something for latinIme_fr.
    onUserAction(controller, latinIme_fr);
    assertRotationOrder(controller, false, /* onlyCurrentIme */
    latinIme_fr, latinIme_en_US, japaneseIme_ja_JP);
    // Then notify that a user did something for latinIme_fr again.
    onUserAction(controller, latinIme_fr);
    assertRotationOrder(controller, false, /* onlyCurrentIme */
    latinIme_fr, latinIme_en_US, japaneseIme_ja_JP);
    // Then notify that a user did something for japaneseIme_ja_JP.
    onUserAction(controller, latinIme_fr);
    assertRotationOrder(controller, false, /* onlyCurrentIme */
    japaneseIme_ja_JP, latinIme_fr, latinIme_en_US);
    // Check onlyCurrentIme == true.
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    japaneseIme_ja_JP, null, null);
    assertRotationOrder(controller, true, /* onlyCurrentIme */
    latinIme_fr, latinIme_en_US);
    assertRotationOrder(controller, true, /* onlyCurrentIme */
    latinIme_en_US, latinIme_fr);
    // === switching-unaware loop ===
    assertRotationOrder(controller, false, /* onlyCurrentIme */
    switchingUnawarelatinIme_en_UK, switchingUnawarelatinIme_hi, subtypeUnawareIme, switchUnawareJapaneseIme_ja_JP);
    // User action should be ignored for switching unaware IMEs.
    onUserAction(controller, switchingUnawarelatinIme_hi);
    assertRotationOrder(controller, false, /* onlyCurrentIme */
    switchingUnawarelatinIme_en_UK, switchingUnawarelatinIme_hi, subtypeUnawareIme, switchUnawareJapaneseIme_ja_JP);
    // User action should be ignored for switching unaware IMEs.
    onUserAction(controller, switchUnawareJapaneseIme_ja_JP);
    assertRotationOrder(controller, false, /* onlyCurrentIme */
    switchingUnawarelatinIme_en_UK, switchingUnawarelatinIme_hi, subtypeUnawareIme, switchUnawareJapaneseIme_ja_JP);
    // Check onlyCurrentIme == true.
    assertRotationOrder(controller, true, /* onlyCurrentIme */
    switchingUnawarelatinIme_en_UK, switchingUnawarelatinIme_hi);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    subtypeUnawareIme, null, null);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    switchUnawareJapaneseIme_ja_JP, null, null);
    // Rotation order should be preserved when created with the same subtype list.
    final List<ImeSubtypeListItem> sameEnabledItems = createEnabledImeSubtypes();
    final ControllerImpl newController = ControllerImpl.createFrom(controller, sameEnabledItems);
    assertRotationOrder(newController, false, /* onlyCurrentIme */
    japaneseIme_ja_JP, latinIme_fr, latinIme_en_US);
    assertRotationOrder(newController, false, /* onlyCurrentIme */
    switchingUnawarelatinIme_en_UK, switchingUnawarelatinIme_hi, subtypeUnawareIme, switchUnawareJapaneseIme_ja_JP);
    // Rotation order should be initialized when created with a different subtype list.
    final List<ImeSubtypeListItem> differentEnabledItems = Arrays.asList(latinIme_en_US, latinIme_fr, switchingUnawarelatinIme_en_UK, switchUnawareJapaneseIme_ja_JP);
    final ControllerImpl anotherController = ControllerImpl.createFrom(controller, differentEnabledItems);
    assertRotationOrder(anotherController, false, /* onlyCurrentIme */
    latinIme_en_US, latinIme_fr);
    assertRotationOrder(anotherController, false, /* onlyCurrentIme */
    switchingUnawarelatinIme_en_UK, switchUnawareJapaneseIme_ja_JP);
}
Also used : ControllerImpl(com.android.internal.inputmethod.InputMethodSubtypeSwitchingController.ControllerImpl) ImeSubtypeListItem(com.android.internal.inputmethod.InputMethodSubtypeSwitchingController.ImeSubtypeListItem) SmallTest(android.test.suitebuilder.annotation.SmallTest)

Example 4 with ControllerImpl

use of com.android.internal.inputmethod.InputMethodSubtypeSwitchingController.ControllerImpl in project android_frameworks_base by crdroidandroid.

the class InputMethodSubtypeSwitchingControllerTest method testControllerImpl.

@SmallTest
public void testControllerImpl() throws Exception {
    final List<ImeSubtypeListItem> disabledItems = createDisabledImeSubtypes();
    final ImeSubtypeListItem disabledIme_en_US = disabledItems.get(0);
    final ImeSubtypeListItem disabledIme_hi = disabledItems.get(1);
    final ImeSubtypeListItem disabledSwitchingUnawareIme = disabledItems.get(2);
    final ImeSubtypeListItem disabledSubtypeUnawareIme = disabledItems.get(3);
    final List<ImeSubtypeListItem> enabledItems = createEnabledImeSubtypes();
    final ImeSubtypeListItem latinIme_en_US = enabledItems.get(0);
    final ImeSubtypeListItem latinIme_fr = enabledItems.get(1);
    final ImeSubtypeListItem switchingUnawarelatinIme_en_UK = enabledItems.get(2);
    final ImeSubtypeListItem switchingUnawarelatinIme_hi = enabledItems.get(3);
    final ImeSubtypeListItem subtypeUnawareIme = enabledItems.get(4);
    final ImeSubtypeListItem japaneseIme_ja_JP = enabledItems.get(5);
    final ImeSubtypeListItem switchUnawareJapaneseIme_ja_JP = enabledItems.get(6);
    final ControllerImpl controller = ControllerImpl.createFrom(null, /* currentInstance */
    enabledItems);
    // switching-aware loop
    assertRotationOrder(controller, false, /* onlyCurrentIme */
    latinIme_en_US, latinIme_fr, japaneseIme_ja_JP);
    // switching-unaware loop
    assertRotationOrder(controller, false, /* onlyCurrentIme */
    switchingUnawarelatinIme_en_UK, switchingUnawarelatinIme_hi, subtypeUnawareIme, switchUnawareJapaneseIme_ja_JP);
    // test onlyCurrentIme == true
    assertRotationOrder(controller, true, /* onlyCurrentIme */
    latinIme_en_US, latinIme_fr);
    assertRotationOrder(controller, true, /* onlyCurrentIme */
    switchingUnawarelatinIme_en_UK, switchingUnawarelatinIme_hi);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    subtypeUnawareIme, null, null);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    japaneseIme_ja_JP, null, null);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    switchUnawareJapaneseIme_ja_JP, null, null);
    // Make sure that disabled IMEs are not accepted.
    assertNextInputMethod(controller, false, /* onlyCurrentIme */
    disabledIme_en_US, null, null);
    assertNextInputMethod(controller, false, /* onlyCurrentIme */
    disabledIme_hi, null, null);
    assertNextInputMethod(controller, false, /* onlyCurrentIme */
    disabledSwitchingUnawareIme, null, null);
    assertNextInputMethod(controller, false, /* onlyCurrentIme */
    disabledSubtypeUnawareIme, null, null);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    disabledIme_en_US, null, null);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    disabledIme_hi, null, null);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    disabledSwitchingUnawareIme, null, null);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    disabledSubtypeUnawareIme, null, null);
}
Also used : ControllerImpl(com.android.internal.inputmethod.InputMethodSubtypeSwitchingController.ControllerImpl) ImeSubtypeListItem(com.android.internal.inputmethod.InputMethodSubtypeSwitchingController.ImeSubtypeListItem) SmallTest(android.test.suitebuilder.annotation.SmallTest)

Example 5 with ControllerImpl

use of com.android.internal.inputmethod.InputMethodSubtypeSwitchingController.ControllerImpl in project android_frameworks_base by AOSPA.

the class InputMethodSubtypeSwitchingControllerTest method testControllerImpl.

@SmallTest
public void testControllerImpl() throws Exception {
    final List<ImeSubtypeListItem> disabledItems = createDisabledImeSubtypes();
    final ImeSubtypeListItem disabledIme_en_US = disabledItems.get(0);
    final ImeSubtypeListItem disabledIme_hi = disabledItems.get(1);
    final ImeSubtypeListItem disabledSwitchingUnawareIme = disabledItems.get(2);
    final ImeSubtypeListItem disabledSubtypeUnawareIme = disabledItems.get(3);
    final List<ImeSubtypeListItem> enabledItems = createEnabledImeSubtypes();
    final ImeSubtypeListItem latinIme_en_US = enabledItems.get(0);
    final ImeSubtypeListItem latinIme_fr = enabledItems.get(1);
    final ImeSubtypeListItem switchingUnawarelatinIme_en_UK = enabledItems.get(2);
    final ImeSubtypeListItem switchingUnawarelatinIme_hi = enabledItems.get(3);
    final ImeSubtypeListItem subtypeUnawareIme = enabledItems.get(4);
    final ImeSubtypeListItem japaneseIme_ja_JP = enabledItems.get(5);
    final ImeSubtypeListItem switchUnawareJapaneseIme_ja_JP = enabledItems.get(6);
    final ControllerImpl controller = ControllerImpl.createFrom(null, /* currentInstance */
    enabledItems);
    // switching-aware loop
    assertRotationOrder(controller, false, /* onlyCurrentIme */
    latinIme_en_US, latinIme_fr, japaneseIme_ja_JP);
    // switching-unaware loop
    assertRotationOrder(controller, false, /* onlyCurrentIme */
    switchingUnawarelatinIme_en_UK, switchingUnawarelatinIme_hi, subtypeUnawareIme, switchUnawareJapaneseIme_ja_JP);
    // test onlyCurrentIme == true
    assertRotationOrder(controller, true, /* onlyCurrentIme */
    latinIme_en_US, latinIme_fr);
    assertRotationOrder(controller, true, /* onlyCurrentIme */
    switchingUnawarelatinIme_en_UK, switchingUnawarelatinIme_hi);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    subtypeUnawareIme, null, null);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    japaneseIme_ja_JP, null, null);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    switchUnawareJapaneseIme_ja_JP, null, null);
    // Make sure that disabled IMEs are not accepted.
    assertNextInputMethod(controller, false, /* onlyCurrentIme */
    disabledIme_en_US, null, null);
    assertNextInputMethod(controller, false, /* onlyCurrentIme */
    disabledIme_hi, null, null);
    assertNextInputMethod(controller, false, /* onlyCurrentIme */
    disabledSwitchingUnawareIme, null, null);
    assertNextInputMethod(controller, false, /* onlyCurrentIme */
    disabledSubtypeUnawareIme, null, null);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    disabledIme_en_US, null, null);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    disabledIme_hi, null, null);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    disabledSwitchingUnawareIme, null, null);
    assertNextInputMethod(controller, true, /* onlyCurrentIme */
    disabledSubtypeUnawareIme, null, null);
}
Also used : ControllerImpl(com.android.internal.inputmethod.InputMethodSubtypeSwitchingController.ControllerImpl) ImeSubtypeListItem(com.android.internal.inputmethod.InputMethodSubtypeSwitchingController.ImeSubtypeListItem) SmallTest(android.test.suitebuilder.annotation.SmallTest)

Aggregations

SmallTest (android.test.suitebuilder.annotation.SmallTest)10 ControllerImpl (com.android.internal.inputmethod.InputMethodSubtypeSwitchingController.ControllerImpl)10 ImeSubtypeListItem (com.android.internal.inputmethod.InputMethodSubtypeSwitchingController.ImeSubtypeListItem)10