| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.content.browser.input; | 5 package org.chromium.content.browser.input; |
| 6 | 6 |
| 7 import android.content.Context; | 7 import android.content.Context; |
| 8 import android.os.IBinder; | 8 import android.os.IBinder; |
| 9 import android.os.ResultReceiver; | 9 import android.os.ResultReceiver; |
| 10 import android.test.suitebuilder.annotation.MediumTest; | 10 import android.test.suitebuilder.annotation.MediumTest; |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 mConnection.setComposingText("tes", 1); | 71 mConnection.setComposingText("tes", 1); |
| 72 assertEquals(0, mWrapper.getUpdateSelectionCallCount()); | 72 assertEquals(0, mWrapper.getUpdateSelectionCallCount()); |
| 73 mConnection.endBatchEdit(); | 73 mConnection.endBatchEdit(); |
| 74 mConnection.setComposingText("test", 1); | 74 mConnection.setComposingText("test", 1); |
| 75 assertEquals(0, mWrapper.getUpdateSelectionCallCount()); | 75 assertEquals(0, mWrapper.getUpdateSelectionCallCount()); |
| 76 mConnection.endBatchEdit(); | 76 mConnection.endBatchEdit(); |
| 77 assertEquals(1, mWrapper.getUpdateSelectionCallCount()); | 77 assertEquals(1, mWrapper.getUpdateSelectionCallCount()); |
| 78 mWrapper.verifyUpdateSelectionCall(0, 4, 4, 0 ,4); | 78 mWrapper.verifyUpdateSelectionCall(0, 4, 4, 0 ,4); |
| 79 } | 79 } |
| 80 | 80 |
| 81 @MediumTest | |
| 82 @Feature({"TextInput", "Main"}) | |
| 83 public void testDismissInputMethodWindowAfterFinishingTyping() throws Throwa
ble { | |
| 84 assertEquals(false, mWrapper.isHidden()); | |
| 85 | |
| 86 mConnection.performEditorAction(EditorInfo.IME_ACTION_NEXT); | |
| 87 assertEquals(false, mWrapper.isHidden()); | |
| 88 mWrapper.showSoftInput(null, 0, null); | |
| 89 | |
| 90 mConnection.performEditorAction(EditorInfo.IME_ACTION_SEND); | |
| 91 assertEquals(false, mWrapper.isHidden()); | |
| 92 mWrapper.showSoftInput(null, 0, null); | |
| 93 | |
| 94 mConnection.performEditorAction(EditorInfo.IME_ACTION_GO); | |
| 95 assertEquals(true, mWrapper.isHidden()); | |
| 96 mWrapper.showSoftInput(null, 0, null); | |
| 97 | |
| 98 mConnection.performEditorAction(EditorInfo.IME_ACTION_DONE); | |
| 99 assertEquals(true, mWrapper.isHidden()); | |
| 100 mWrapper.showSoftInput(null, 0, null); | |
| 101 | |
| 102 mConnection.performEditorAction(EditorInfo.IME_ACTION_SEARCH); | |
| 103 assertEquals(true, mWrapper.isHidden()); | |
| 104 mWrapper.showSoftInput(null, 0, null); | |
| 105 } | |
| 106 | |
| 107 private static class TestImeAdapter extends ImeAdapter { | 81 private static class TestImeAdapter extends ImeAdapter { |
| 108 public TestImeAdapter(InputMethodManagerWrapper wrapper, ImeAdapterDeleg
ate embedder) { | 82 public TestImeAdapter(InputMethodManagerWrapper wrapper, ImeAdapterDeleg
ate embedder) { |
| 109 super(wrapper, embedder); | 83 super(wrapper, embedder); |
| 110 } | 84 } |
| 111 } | 85 } |
| 112 | 86 |
| 113 private static class TestInputMethodManagerWrapper extends InputMethodManage
rWrapper { | 87 private static class TestInputMethodManagerWrapper extends InputMethodManage
rWrapper { |
| 114 private final ArrayList<ImeState> mUpdates = new ArrayList<ImeState>(); | 88 private final ArrayList<ImeState> mUpdates = new ArrayList<ImeState>(); |
| 115 private boolean hidden = false; | |
| 116 | 89 |
| 117 public TestInputMethodManagerWrapper(Context context) { | 90 public TestInputMethodManagerWrapper(Context context) { |
| 118 super(context); | 91 super(context); |
| 119 } | 92 } |
| 120 | 93 |
| 121 @Override | 94 @Override |
| 122 public void restartInput(View view) {} | 95 public void restartInput(View view) {} |
| 123 | 96 |
| 124 @Override | 97 @Override |
| 125 public void showSoftInput(View view, int flags, ResultReceiver resultRec
eiver) { | 98 public void showSoftInput(View view, int flags, ResultReceiver resultRec
eiver) {} |
| 126 hidden = false; | |
| 127 } | |
| 128 | 99 |
| 129 @Override | 100 @Override |
| 130 public boolean isActive(View view) { | 101 public boolean isActive(View view) { |
| 131 return true; | 102 return true; |
| 132 } | 103 } |
| 133 | 104 |
| 134 @Override | 105 @Override |
| 135 public boolean hideSoftInputFromWindow(IBinder windowToken, int flags, | 106 public boolean hideSoftInputFromWindow(IBinder windowToken, int flags, |
| 136 ResultReceiver resultReceiver) { | 107 ResultReceiver resultReceiver) { |
| 137 hidden = true; | |
| 138 return true; | 108 return true; |
| 139 } | 109 } |
| 140 | 110 |
| 141 @Override | 111 @Override |
| 142 public void updateSelection(View view, int selStart, int selEnd, | 112 public void updateSelection(View view, int selStart, int selEnd, |
| 143 int candidatesStart, int candidatesEnd) { | 113 int candidatesStart, int candidatesEnd) { |
| 144 mUpdates.add(new ImeState("", selStart, selEnd, candidatesStart, candi
datesEnd)); | 114 mUpdates.add(new ImeState("", selStart, selEnd, candidatesStart, candi
datesEnd)); |
| 145 } | 115 } |
| 146 | 116 |
| 147 public int getUpdateSelectionCallCount() { | 117 public int getUpdateSelectionCallCount() { |
| 148 return mUpdates.size(); | 118 return mUpdates.size(); |
| 149 } | 119 } |
| 150 | 120 |
| 151 public void verifyUpdateSelectionCall(int index, int selectionStart, int
selectionEnd, | 121 public void verifyUpdateSelectionCall(int index, int selectionStart, int
selectionEnd, |
| 152 int compositionStart, int compositionEnd) { | 122 int compositionStart, int compositionEnd) { |
| 153 ImeState state = mUpdates.get(index); | 123 ImeState state = mUpdates.get(index); |
| 154 assertEquals("Selection start did not match", selectionStart, state.
selectionStart); | 124 assertEquals("Selection start did not match", selectionStart, state.
selectionStart); |
| 155 assertEquals("Selection end did not match", selectionEnd, state.sele
ctionEnd); | 125 assertEquals("Selection end did not match", selectionEnd, state.sele
ctionEnd); |
| 156 assertEquals("Composition start did not match", compositionStart, | 126 assertEquals("Composition start did not match", compositionStart, |
| 157 state.compositionStart); | 127 state.compositionStart); |
| 158 assertEquals("Composition end did not match", compositionEnd, state.
compositionEnd); | 128 assertEquals("Composition end did not match", compositionEnd, state.
compositionEnd); |
| 159 } | 129 } |
| 160 | |
| 161 public boolean isHidden() { | |
| 162 return hidden; | |
| 163 } | |
| 164 } | 130 } |
| 165 | 131 |
| 166 private static class TestImeAdapterDelegate implements ImeAdapterDelegate { | 132 private static class TestImeAdapterDelegate implements ImeAdapterDelegate { |
| 167 @Override | 133 @Override |
| 168 public void onImeEvent(boolean isFinish) {} | 134 public void onImeEvent(boolean isFinish) {} |
| 169 | 135 |
| 170 @Override | 136 @Override |
| 171 public void onSetFieldValue() {} | 137 public void onSetFieldValue() {} |
| 172 | 138 |
| 173 @Override | 139 @Override |
| (...skipping 12 matching lines...) Expand all Loading... |
| 186 | 152 |
| 187 private static void assertCorrectState(String text, int selectionStart, int
selectionEnd, | 153 private static void assertCorrectState(String text, int selectionStart, int
selectionEnd, |
| 188 int compositionStart, int compositionEnd, ImeState actual) { | 154 int compositionStart, int compositionEnd, ImeState actual) { |
| 189 assertEquals("Text did not match", text, actual.text); | 155 assertEquals("Text did not match", text, actual.text); |
| 190 assertEquals("Selection start did not match", selectionStart, actual.sel
ectionStart); | 156 assertEquals("Selection start did not match", selectionStart, actual.sel
ectionStart); |
| 191 assertEquals("Selection end did not match", selectionEnd, actual.selecti
onEnd); | 157 assertEquals("Selection end did not match", selectionEnd, actual.selecti
onEnd); |
| 192 assertEquals("Composition start did not match", compositionStart, actual
.compositionStart); | 158 assertEquals("Composition start did not match", compositionStart, actual
.compositionStart); |
| 193 assertEquals("Composition end did not match", compositionEnd, actual.com
positionEnd); | 159 assertEquals("Composition end did not match", compositionEnd, actual.com
positionEnd); |
| 194 } | 160 } |
| 195 } | 161 } |
| OLD | NEW |