MockKeyboardSwitcher.java revision 87e025da11703af65e7bb85670adac5b54e2a367
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 toggleCapsLock() {
108        mState.onToggleCapsLock();
109    }
110
111    public void updateShiftState() {
112        mState.onUpdateShiftState(mAutoCapsMode && mAutoCapsState);
113    }
114
115    public void loadKeyboard(String layoutSwitchBackSymbols,
116            boolean hasDistinctMultitouch) {
117        mState.onLoadKeyboard(layoutSwitchBackSymbols, hasDistinctMultitouch);
118    }
119
120    public void onPressShift(boolean withSliding) {
121        mState.onPressShift(withSliding);
122    }
123
124    public void onReleaseShift(boolean withSliding) {
125        mState.onReleaseShift(withSliding);
126    }
127
128    public void onPressSymbol() {
129        mState.onPressSymbol();
130    }
131
132    public void onReleaseSymbol() {
133        mState.onReleaseSymbol();
134    }
135
136    public void onOtherKeyPressed() {
137        mState.onOtherKeyPressed();
138    }
139
140    public void onCodeInput(int code, boolean isSinglePointer) {
141        mAutoCapsState = (WORD_SEPARATORS.indexOf(code) >= 0);
142        mState.onCodeInput(code, isSinglePointer, mAutoCapsMode && mAutoCapsState);
143    }
144
145    public void onCancelInput(boolean isSinglePointer) {
146        mState.onCancelInput(isSinglePointer);
147    }
148}