MockKeyboardSwitcher.java revision e47bd3f4fbf38ae20c5b61fac563a3f6152037a3
1/* 2 * Copyright (C) 2012 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 5 * use this file except in compliance with the License. You may obtain a copy of 6 * the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 * License for the specific language governing permissions and limitations under 14 * the License. 15 */ 16 17package com.android.inputmethod.keyboard.internal; 18 19import com.android.inputmethod.keyboard.internal.KeyboardState.SwitchActions; 20 21public class MockKeyboardSwitcher implements KeyboardState.SwitchActions { 22 public static final String WORD_SEPARATORS = " ,."; 23 24 private static final int ALPHABET_UNSHIFTED = 0; 25 private static final int ALPHABET_MANUAL_SHIFTED = 1; 26 private static final int ALPHABET_AUTOMATIC_SHIFTED = 2; 27 private static final int ALPHABET_SHIFT_LOCKED = 3; 28 private static final int SYMBOLS_UNSHIFTED = 4; 29 private static final int SYMBOLS_SHIFTED = 5; 30 31 private int mLayout = ALPHABET_UNSHIFTED; 32 33 private boolean mAutoCapsMode = KeyboardStateTests.NO_AUTO_CAPS; 34 // Following InputConnection's behavior. Simulating InputType.TYPE_TEXT_FLAG_CAP_WORDS. 35 private boolean mAutoCapsState = true; 36 37 private final KeyboardState mState = new KeyboardState(this); 38 39 public boolean assertAlphabetNormal() { 40 return mLayout == ALPHABET_UNSHIFTED; 41 } 42 43 public boolean assertAlphabetManualShifted() { 44 return mLayout == ALPHABET_MANUAL_SHIFTED; 45 } 46 47 public boolean assertAlphabetAutomaticShifted() { 48 return mLayout == ALPHABET_AUTOMATIC_SHIFTED; 49 } 50 51 public boolean assertAlphabetShiftLocked() { 52 return mLayout == ALPHABET_SHIFT_LOCKED; 53 } 54 55 public boolean assertSymbolsNormal() { 56 return mLayout == SYMBOLS_UNSHIFTED; 57 } 58 59 public boolean assertSymbolsShifted() { 60 return mLayout == SYMBOLS_SHIFTED; 61 } 62 63 public void setAutoCapsMode(boolean autoCaps) { 64 mAutoCapsMode = autoCaps; 65 } 66 67 @Override 68 public void setAlphabetKeyboard() { 69 mLayout = ALPHABET_UNSHIFTED; 70 } 71 72 @Override 73 public void setShifted(int shiftMode) { 74 if (shiftMode == SwitchActions.UNSHIFT) { 75 mLayout = ALPHABET_UNSHIFTED; 76 } else if (shiftMode == SwitchActions.MANUAL_SHIFT) { 77 mLayout = ALPHABET_MANUAL_SHIFTED; 78 } else if (shiftMode == SwitchActions.AUTOMATIC_SHIFT) { 79 mLayout = ALPHABET_AUTOMATIC_SHIFTED; 80 } 81 } 82 83 @Override 84 public void setShiftLocked(boolean shiftLocked) { 85 if (shiftLocked) { 86 mLayout = ALPHABET_SHIFT_LOCKED; 87 } else { 88 mLayout = ALPHABET_UNSHIFTED; 89 } 90 } 91 92 @Override 93 public void setSymbolsKeyboard() { 94 mLayout = SYMBOLS_UNSHIFTED; 95 } 96 97 @Override 98 public void setSymbolsShiftedKeyboard() { 99 mLayout = SYMBOLS_SHIFTED; 100 } 101 102 @Override 103 public void requestUpdatingShiftState() { 104 mState.onUpdateShiftState(mAutoCapsMode && mAutoCapsState); 105 } 106 107 public void toggleShift() { 108 mState.onToggleShift(); 109 } 110 111 public void toggleCapsLock() { 112 mState.onToggleCapsLock(); 113 } 114 115 public void toggleAlphabetAndSymbols() { 116 mState.onToggleAlphabetAndSymbols(); 117 } 118 119 public void updateShiftState() { 120 mState.onUpdateShiftState(mAutoCapsMode && mAutoCapsState); 121 } 122 123 public void loadKeyboard(String layoutSwitchBackSymbols, 124 boolean hasDistinctMultitouch) { 125 mState.onLoadKeyboard(layoutSwitchBackSymbols, hasDistinctMultitouch); 126 } 127 128 public void onPressShift(boolean withSliding) { 129 mState.onPressShift(withSliding); 130 } 131 132 public void onReleaseShift(boolean withSliding) { 133 mState.onReleaseShift(withSliding); 134 } 135 136 public void onPressSymbol() { 137 mState.onPressSymbol(); 138 } 139 140 public void onReleaseSymbol() { 141 mState.onReleaseSymbol(); 142 } 143 144 public void onOtherKeyPressed() { 145 mState.onOtherKeyPressed(); 146 } 147 148 public void onCodeInput(int code, boolean isSinglePointer) { 149 mAutoCapsState = (WORD_SEPARATORS.indexOf(code) >= 0); 150 mState.onCodeInput(code, isSinglePointer, mAutoCapsMode && mAutoCapsState); 151 } 152 153 public void onCancelInput(boolean isSinglePointer) { 154 mState.onCancelInput(isSinglePointer); 155 } 156}