TestInputMethodManagerWrapper.java revision 68043e1e95eeb07d5cae7aca370b26518b0867d6
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccipackage org.chromium.content.browser.test.util;
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.os.IBinder;
8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)import android.os.ResultReceiver;
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.view.inputmethod.EditorInfo;
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)import android.view.inputmethod.InputConnection;
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.view.View;
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)import org.chromium.content.browser.ContentViewCore;
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.content.browser.input.InputMethodManagerWrapper;
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)public class TestInputMethodManagerWrapper extends InputMethodManagerWrapper {
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    private final ContentViewCore mContentViewCore;
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    private InputConnection mInputConnection;
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    private int mShowSoftInputCounter = 0;
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    private int mUpdateSelectionCounter = 0;
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    private EditorInfo mEditorInfo;
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    public TestInputMethodManagerWrapper(ContentViewCore contentViewCore) {
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)        super(null);
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mContentViewCore = contentViewCore;
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    @Override
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void restartInput(View view) {
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mEditorInfo = new EditorInfo();
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mInputConnection = mContentViewCore.onCreateInputConnection(mEditorInfo);
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    }
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    @Override
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void showSoftInput(View view, int flags, ResultReceiver resultReceiver) {
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        mShowSoftInputCounter++;
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)        if (mInputConnection != null) return;
38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)        mEditorInfo = new EditorInfo();
39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)        mInputConnection = mContentViewCore.onCreateInputConnection(mEditorInfo);
40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    }
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    @Override
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public boolean isActive(View view) {
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if (mInputConnection == null) return false;
45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        return true;
46868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    }
47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    @Override
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    public boolean hideSoftInputFromWindow(IBinder windowToken, int flags,
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci            ResultReceiver resultReceiver) {
51f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)        boolean retVal = mInputConnection == null;
52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)        mInputConnection = null;
53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)        return retVal;
54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    }
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    @Override
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void updateSelection(View view, int selStart, int selEnd,
58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            int candidatesStart, int candidatesEnd) {
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mUpdateSelectionCounter++;
60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    }
61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    public int getShowSoftInputCounter() {
63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)        return mShowSoftInputCounter;
64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    }
65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    public int getUpdateSelectionCounter() {
67f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)        return mUpdateSelectionCounter;
68f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    }
69f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
70f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    public EditorInfo getEditorInfo() {
71f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)        return mEditorInfo;
72f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    }
73f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
74f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
75f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)