OLD | NEW |
| (Empty) |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 package org.chromium.content.browser.input; | |
6 | |
7 import android.test.suitebuilder.annotation.SmallTest; | |
8 import android.view.inputmethod.EditorInfo; | |
9 | |
10 import org.chromium.content.browser.ContentViewCore; | |
11 import org.chromium.content.browser.test.util.TestInputMethodManagerWrapper; | |
12 import org.chromium.content_shell_apk.ContentShellTestBase; | |
13 import org.chromium.ui.base.ime.TextInputType; | |
14 | |
15 /** | |
16 * Tests that when InputConnection is recreated, the text is still retained. | |
17 */ | |
18 public class RecreateInputConnectionTest extends ContentShellTestBase { | |
19 private ContentViewCore mContentViewCore; | |
20 private TestImeAdapter mImeAdapter; | |
21 private TestInputMethodManagerWrapper mInputMethodManagerWrapper; | |
22 | |
23 private static class TestImeAdapter extends ImeAdapter { | |
24 public TestImeAdapter( | |
25 InputMethodManagerWrapper immw, ImeAdapterDelegate imeAdapterDel
egate) { | |
26 super(immw, imeAdapterDelegate); | |
27 } | |
28 @Override | |
29 public boolean hasTextInputType() { | |
30 return true; | |
31 } | |
32 } | |
33 | |
34 @Override | |
35 public void setUp() throws Exception { | |
36 super.setUp(); | |
37 mContentViewCore = new ContentViewCore(getActivity()); | |
38 mContentViewCore.createContentViewAndroidDelegate(); | |
39 mContentViewCore.setContainerView(getActivity().getActiveShell().getCont
entView()); | |
40 mInputMethodManagerWrapper = new TestInputMethodManagerWrapper(mContentV
iewCore); | |
41 mImeAdapter = new TestImeAdapter(mInputMethodManagerWrapper, | |
42 new TestImeAdapterDelegate(mContentViewCore.getContainerView()))
; | |
43 mImeAdapter.setInputMethodManagerWrapperForTest( | |
44 new TestInputMethodManagerWrapper(mContentViewCore)); | |
45 mContentViewCore.setImeAdapterForTest(mImeAdapter); | |
46 } | |
47 | |
48 /** | |
49 * When creating a new InputConnection (e.g. after switching software keyboa
rd), make sure the | |
50 * text content in the Editable is not lost. | |
51 */ | |
52 @SmallTest | |
53 @RerunWithUpdatedContainerView | |
54 public void testRecreateInputConnection() throws Exception { | |
55 EditorInfo info = new EditorInfo(); | |
56 | |
57 mImeAdapter.setInputTypeForTest(TextInputType.TEXT); | |
58 mContentViewCore.onCreateInputConnection(info); | |
59 AdapterInputConnection inputConnection = mImeAdapter.getInputConnectionF
orTest(); | |
60 inputConnection.updateState("Is this text restored?", 0, 0, 0, 0, true); | |
61 | |
62 String text = mContentViewCore.getImeAdapterForTest().getEditable().toSt
ring(); | |
63 assertEquals("Check if the initial text is stored.", "Is this text resto
red?", text); | |
64 | |
65 // Create a new InputConnection. | |
66 EditorInfo info2 = new EditorInfo(); | |
67 mContentViewCore.onCreateInputConnection(info2); | |
68 | |
69 String newtext = mContentViewCore.getImeAdapterForTest().getEditable().t
oString(); | |
70 assertEquals("Check if the string is restored.", "Is this text restored?
", newtext); | |
71 } | |
72 } | |
OLD | NEW |