| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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.annotation.TargetApi; | 7 import android.annotation.TargetApi; |
| 8 import android.graphics.Matrix; | 8 import android.graphics.Matrix; |
| 9 import android.graphics.RectF; | 9 import android.graphics.RectF; |
| 10 import android.os.Build; | 10 import android.os.Build; |
| 11 import android.test.InstrumentationTestCase; | 11 import android.test.InstrumentationTestCase; |
| 12 import android.test.suitebuilder.annotation.SmallTest; | 12 import android.test.suitebuilder.annotation.SmallTest; |
| 13 import android.text.TextUtils; | 13 import android.text.TextUtils; |
| 14 import android.view.View; | 14 import android.view.View; |
| 15 import android.view.inputmethod.CursorAnchorInfo; | 15 import android.view.inputmethod.CursorAnchorInfo; |
| 16 import android.view.inputmethod.InputConnection; |
| 16 | 17 |
| 17 import org.chromium.base.test.util.Feature; | 18 import org.chromium.base.test.util.Feature; |
| 18 import org.chromium.base.test.util.MinAndroidSdkLevel; | 19 import org.chromium.base.test.util.MinAndroidSdkLevel; |
| 19 import org.chromium.content.browser.RenderCoordinates; | 20 import org.chromium.content.browser.RenderCoordinates; |
| 20 import org.chromium.content.browser.test.util.TestInputMethodManagerWrapper; | 21 import org.chromium.content.browser.test.util.TestInputMethodManagerWrapper; |
| 21 | 22 |
| 22 /** | 23 /** |
| 23 * Test for {@link CursorAnchorInfoController}. | 24 * Test for {@link CursorAnchorInfoController}. |
| 24 */ | 25 */ |
| 25 @MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP) | 26 @MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP) |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 133 TestComposingTextDelegate composingTextDelegate = new TestComposingTextD
elegate(); | 134 TestComposingTextDelegate composingTextDelegate = new TestComposingTextD
elegate(); |
| 134 CursorAnchorInfoController controller = CursorAnchorInfoController.creat
eForTest( | 135 CursorAnchorInfoController controller = CursorAnchorInfoController.creat
eForTest( |
| 135 immw, composingTextDelegate, viewDelegate); | 136 immw, composingTextDelegate, viewDelegate); |
| 136 View view = null; | 137 View view = null; |
| 137 | 138 |
| 138 viewDelegate.locationX = 0; | 139 viewDelegate.locationX = 0; |
| 139 viewDelegate.locationY = 0; | 140 viewDelegate.locationY = 0; |
| 140 | 141 |
| 141 assertFalse( | 142 assertFalse( |
| 142 "IC#onRequestCursorUpdates() must be rejected if the focused nod
e is not editable.", | 143 "IC#onRequestCursorUpdates() must be rejected if the focused nod
e is not editable.", |
| 143 controller.onRequestCursorUpdates( | 144 controller.onRequestCursorUpdates(InputConnection.CURSOR_UPDATE_
MONITOR, view)); |
| 144 false /* immediate request */, true /* monitor request *
/, view)); | |
| 145 | 145 |
| 146 // Make sure that the focused node is considered to be non-editable by d
efault. | 146 // Make sure that the focused node is considered to be non-editable by d
efault. |
| 147 controller.setCompositionCharacterBounds(new float[] {0.0f, 1.0f, 2.0f,
3.0f}, view); | 147 controller.setCompositionCharacterBounds(new float[] {0.0f, 1.0f, 2.0f,
3.0f}); |
| 148 composingTextDelegate.updateTextAndSelection(controller, "0", 0, 1, 0, 1
); | 148 composingTextDelegate.updateTextAndSelection(controller, "0", 0, 1, 0, 1
); |
| 149 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), | 149 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), |
| 150 true, true, 2.0f, 0.0f, 3.0f, view); | 150 true, true, 2.0f, 0.0f, 3.0f, view); |
| 151 assertEquals(0, immw.getUpdateCursorAnchorInfoCounter()); | 151 assertEquals(0, immw.getUpdateCursorAnchorInfoCounter()); |
| 152 | 152 |
| 153 controller.focusedNodeChanged(false); | 153 controller.focusedNodeChanged(false); |
| 154 composingTextDelegate.clearTextAndSelection(controller); | 154 composingTextDelegate.clearTextAndSelection(controller); |
| 155 | 155 |
| 156 // Make sure that the controller does not crash even if it is called whi
le the focused node | 156 // Make sure that the controller does not crash even if it is called whi
le the focused node |
| 157 // is not editable. | 157 // is not editable. |
| 158 controller.setCompositionCharacterBounds(new float[] {30.0f, 1.0f, 32.0f
, 3.0f}, view); | 158 controller.setCompositionCharacterBounds(new float[] {30.0f, 1.0f, 32.0f
, 3.0f}); |
| 159 composingTextDelegate.updateTextAndSelection(controller, "1", 0, 1, 0, 1
); | 159 composingTextDelegate.updateTextAndSelection(controller, "1", 0, 1, 0, 1
); |
| 160 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 100.0f), | 160 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 100.0f), |
| 161 true, true, 2.0f, 0.0f, 3.0f, view); | 161 true, true, 2.0f, 0.0f, 3.0f, view); |
| 162 assertEquals(0, immw.getUpdateCursorAnchorInfoCounter()); | 162 assertEquals(0, immw.getUpdateCursorAnchorInfoCounter()); |
| 163 } | 163 } |
| 164 | 164 |
| 165 @SmallTest | 165 @SmallTest |
| 166 @Feature({"Input-Text-IME"}) | 166 @Feature({"Input-Text-IME"}) |
| 167 public void testImmediateMode() { | 167 public void testImmediateMode() { |
| 168 TestInputMethodManagerWrapper immw = new TestInputMethodManagerWrapper(n
ull); | 168 TestInputMethodManagerWrapper immw = new TestInputMethodManagerWrapper(n
ull); |
| 169 TestViewDelegate viewDelegate = new TestViewDelegate(); | 169 TestViewDelegate viewDelegate = new TestViewDelegate(); |
| 170 TestComposingTextDelegate composingTextDelegate = new TestComposingTextD
elegate(); | 170 TestComposingTextDelegate composingTextDelegate = new TestComposingTextD
elegate(); |
| 171 CursorAnchorInfoController controller = CursorAnchorInfoController.creat
eForTest( | 171 CursorAnchorInfoController controller = CursorAnchorInfoController.creat
eForTest( |
| 172 immw, composingTextDelegate, viewDelegate); | 172 immw, composingTextDelegate, viewDelegate); |
| 173 View view = null; | 173 View view = null; |
| 174 viewDelegate.locationX = 0; | 174 viewDelegate.locationX = 0; |
| 175 viewDelegate.locationY = 0; | 175 viewDelegate.locationY = 0; |
| 176 | 176 |
| 177 controller.focusedNodeChanged(true); | 177 controller.focusedNodeChanged(true); |
| 178 composingTextDelegate.clearTextAndSelection(controller); | 178 composingTextDelegate.clearTextAndSelection(controller); |
| 179 | 179 |
| 180 // Make sure that #updateCursorAnchorInfo() is not be called until the m
atrix info becomes | 180 // Make sure that #updateCursorAnchorInfo() is not be called until the m
atrix info becomes |
| 181 // available with #onUpdateFrameInfo(). | 181 // available with #onUpdateFrameInfo(). |
| 182 assertTrue(controller.onRequestCursorUpdates( | 182 assertTrue(controller.onRequestCursorUpdates(InputConnection.CURSOR_UPDA
TE_IMMEDIATE, |
| 183 true /* immediate request */, false /* monitor request */, view)
); | 183 view)); |
| 184 controller.setCompositionCharacterBounds(new float[] {0.0f, 1.0f, 2.0f,
3.0f}, view); | 184 controller.setCompositionCharacterBounds(new float[] {0.0f, 1.0f, 2.0f,
3.0f}); |
| 185 composingTextDelegate.updateTextAndSelection(controller, "0", 0, 1, 0, 1
); | 185 composingTextDelegate.updateTextAndSelection(controller, "0", 0, 1, 0, 1
); |
| 186 assertEquals(0, immw.getUpdateCursorAnchorInfoCounter()); | 186 assertEquals(0, immw.getUpdateCursorAnchorInfoCounter()); |
| 187 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), | 187 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), |
| 188 true, true, 2.0f, 0.0f, 3.0f, view); | 188 true, true, 2.0f, 0.0f, 3.0f, view); |
| 189 assertEquals(1, immw.getUpdateCursorAnchorInfoCounter()); | 189 assertEquals(1, immw.getUpdateCursorAnchorInfoCounter()); |
| 190 assertScaleAndTranslate(1.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo()
); | 190 assertScaleAndTranslate(1.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo()
); |
| 191 assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
0.0f, 3.0f, | 191 assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
0.0f, 3.0f, |
| 192 3.0f, immw.getLastCursorAnchorInfo()); | 192 3.0f, immw.getLastCursorAnchorInfo()); |
| 193 assertEquals(new RectF(0.0f, 1.0f, 2.0f, 3.0f), | 193 assertEquals(new RectF(0.0f, 1.0f, 2.0f, 3.0f), |
| 194 immw.getLastCursorAnchorInfo().getCharacterBounds(0)); | 194 immw.getLastCursorAnchorInfo().getCharacterBounds(0)); |
| 195 assertEquals(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, | 195 assertEquals(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, |
| 196 immw.getLastCursorAnchorInfo().getCharacterBoundsFlags(0)); | 196 immw.getLastCursorAnchorInfo().getCharacterBoundsFlags(0)); |
| 197 assertComposingText("0", 0, immw.getLastCursorAnchorInfo()); | 197 assertComposingText("0", 0, immw.getLastCursorAnchorInfo()); |
| 198 assertSelection(0, 1, immw.getLastCursorAnchorInfo()); | 198 assertSelection(0, 1, immw.getLastCursorAnchorInfo()); |
| 199 immw.clearLastCursorAnchorInfo(); | 199 immw.clearLastCursorAnchorInfo(); |
| 200 | 200 |
| 201 // Make sure that 2nd call of #onUpdateFrameInfo() is ignored. | 201 // Make sure that 2nd call of #onUpdateFrameInfo() is ignored. |
| 202 controller.onUpdateFrameInfo(createRenderCoordinates(2.0f, 0.0f), | 202 controller.onUpdateFrameInfo(createRenderCoordinates(2.0f, 0.0f), |
| 203 true, true, 2.0f, 0.0f, 3.0f, view); | 203 true, true, 2.0f, 0.0f, 3.0f, view); |
| 204 assertEquals(1, immw.getUpdateCursorAnchorInfoCounter()); | 204 assertEquals(1, immw.getUpdateCursorAnchorInfoCounter()); |
| 205 | 205 |
| 206 // Make sure that #onUpdateFrameInfo() is immediately called because the
matrix info is | 206 // Make sure that #onUpdateFrameInfo() is immediately called because the
matrix info is |
| 207 // already available. | 207 // already available. |
| 208 assertTrue(controller.onRequestCursorUpdates( | 208 assertTrue(controller.onRequestCursorUpdates(InputConnection.CURSOR_UPDA
TE_IMMEDIATE, |
| 209 true /* immediate request */, false /* monitor request */, view)
); | 209 view)); |
| 210 assertEquals(2, immw.getUpdateCursorAnchorInfoCounter()); | 210 assertEquals(2, immw.getUpdateCursorAnchorInfoCounter()); |
| 211 assertScaleAndTranslate(2.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo()
); | 211 assertScaleAndTranslate(2.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo()
); |
| 212 assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
0.0f, 3.0f, | 212 assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
0.0f, 3.0f, |
| 213 3.0f, immw.getLastCursorAnchorInfo()); | 213 3.0f, immw.getLastCursorAnchorInfo()); |
| 214 assertEquals(new RectF(0.0f, 1.0f, 2.0f, 3.0f), | 214 assertEquals(new RectF(0.0f, 1.0f, 2.0f, 3.0f), |
| 215 immw.getLastCursorAnchorInfo().getCharacterBounds(0)); | 215 immw.getLastCursorAnchorInfo().getCharacterBounds(0)); |
| 216 assertEquals(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, | 216 assertEquals(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, |
| 217 immw.getLastCursorAnchorInfo().getCharacterBoundsFlags(0)); | 217 immw.getLastCursorAnchorInfo().getCharacterBoundsFlags(0)); |
| 218 assertComposingText("0", 0, immw.getLastCursorAnchorInfo()); | 218 assertComposingText("0", 0, immw.getLastCursorAnchorInfo()); |
| 219 assertSelection(0, 1, immw.getLastCursorAnchorInfo()); | 219 assertSelection(0, 1, immw.getLastCursorAnchorInfo()); |
| 220 immw.clearLastCursorAnchorInfo(); | 220 immw.clearLastCursorAnchorInfo(); |
| 221 | 221 |
| 222 // Make sure that CURSOR_UPDATE_IMMEDIATE and CURSOR_UPDATE_MONITOR can
be specified at | 222 // Make sure that CURSOR_UPDATE_IMMEDIATE and CURSOR_UPDATE_MONITOR can
be specified at |
| 223 // the same time. | 223 // the same time. |
| 224 assertTrue(controller.onRequestCursorUpdates( | 224 assertTrue(controller.onRequestCursorUpdates( |
| 225 true /* immediate request*/, true /* monitor request */, view)); | 225 InputConnection.CURSOR_UPDATE_IMMEDIATE | InputConnection.CURSOR
_UPDATE_MONITOR, |
| 226 view)); |
| 226 assertEquals(3, immw.getUpdateCursorAnchorInfoCounter()); | 227 assertEquals(3, immw.getUpdateCursorAnchorInfoCounter()); |
| 227 assertScaleAndTranslate(2.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo()
); | 228 assertScaleAndTranslate(2.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo()
); |
| 228 immw.clearLastCursorAnchorInfo(); | 229 immw.clearLastCursorAnchorInfo(); |
| 229 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), | 230 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), |
| 230 true, true, 2.0f, 0.0f, 3.0f, view); | 231 true, true, 2.0f, 0.0f, 3.0f, view); |
| 231 assertEquals(4, immw.getUpdateCursorAnchorInfoCounter()); | 232 assertEquals(4, immw.getUpdateCursorAnchorInfoCounter()); |
| 232 assertScaleAndTranslate(1.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo()
); | 233 assertScaleAndTranslate(1.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo()
); |
| 233 assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
0.0f, 3.0f, | 234 assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
0.0f, 3.0f, |
| 234 3.0f, immw.getLastCursorAnchorInfo()); | 235 3.0f, immw.getLastCursorAnchorInfo()); |
| 235 assertEquals(new RectF(0.0f, 1.0f, 2.0f, 3.0f), | 236 assertEquals(new RectF(0.0f, 1.0f, 2.0f, 3.0f), |
| 236 immw.getLastCursorAnchorInfo().getCharacterBounds(0)); | 237 immw.getLastCursorAnchorInfo().getCharacterBounds(0)); |
| 237 assertEquals(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, | 238 assertEquals(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, |
| 238 immw.getLastCursorAnchorInfo().getCharacterBoundsFlags(0)); | 239 immw.getLastCursorAnchorInfo().getCharacterBoundsFlags(0)); |
| 239 assertComposingText("0", 0, immw.getLastCursorAnchorInfo()); | 240 assertComposingText("0", 0, immw.getLastCursorAnchorInfo()); |
| 240 assertSelection(0, 1, immw.getLastCursorAnchorInfo()); | 241 assertSelection(0, 1, immw.getLastCursorAnchorInfo()); |
| 241 immw.clearLastCursorAnchorInfo(); | 242 immw.clearLastCursorAnchorInfo(); |
| 242 | 243 |
| 243 // Make sure that CURSOR_UPDATE_IMMEDIATE is cleared if the focused node
becomes | 244 // Make sure that CURSOR_UPDATE_IMMEDIATE is cleared if the focused node
becomes |
| 244 // non-editable. | 245 // non-editable. |
| 245 controller.focusedNodeChanged(false); | 246 controller.focusedNodeChanged(false); |
| 246 controller.focusedNodeChanged(true); | 247 controller.focusedNodeChanged(true); |
| 247 composingTextDelegate.clearTextAndSelection(controller); | 248 composingTextDelegate.clearTextAndSelection(controller); |
| 248 assertTrue(controller.onRequestCursorUpdates( | 249 assertTrue(controller.onRequestCursorUpdates(InputConnection.CURSOR_UPDA
TE_IMMEDIATE, |
| 249 true /* immediate request */, false /* monitor request */, view)
); | 250 view)); |
| 250 controller.focusedNodeChanged(false); | 251 controller.focusedNodeChanged(false); |
| 251 composingTextDelegate.clearTextAndSelection(controller); | 252 composingTextDelegate.clearTextAndSelection(controller); |
| 252 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 100.0f), | 253 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 100.0f), |
| 253 true, true, 2.0f, 0.0f, 3.0f, view); | 254 true, true, 2.0f, 0.0f, 3.0f, view); |
| 254 assertEquals(4, immw.getUpdateCursorAnchorInfoCounter()); | 255 assertEquals(4, immw.getUpdateCursorAnchorInfoCounter()); |
| 255 | 256 |
| 256 // Make sure that CURSOR_UPDATE_IMMEDIATE can be enabled again. | 257 // Make sure that CURSOR_UPDATE_IMMEDIATE can be enabled again. |
| 257 controller.focusedNodeChanged(true); | 258 controller.focusedNodeChanged(true); |
| 258 composingTextDelegate.clearTextAndSelection(controller); | 259 composingTextDelegate.clearTextAndSelection(controller); |
| 259 assertTrue(controller.onRequestCursorUpdates( | 260 assertTrue(controller.onRequestCursorUpdates(InputConnection.CURSOR_UPDA
TE_IMMEDIATE, |
| 260 true /* immediate request */, false /* monitor request */, view)
); | 261 view)); |
| 261 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), | 262 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), |
| 262 true, true, 2.0f, 0.0f, 3.0f, view); | 263 true, true, 2.0f, 0.0f, 3.0f, view); |
| 263 assertEquals(5, immw.getUpdateCursorAnchorInfoCounter()); | 264 assertEquals(5, immw.getUpdateCursorAnchorInfoCounter()); |
| 264 assertScaleAndTranslate(1.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo()
); | 265 assertScaleAndTranslate(1.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo()
); |
| 265 assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
0.0f, 3.0f, | 266 assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
0.0f, 3.0f, |
| 266 3.0f, immw.getLastCursorAnchorInfo()); | 267 3.0f, immw.getLastCursorAnchorInfo()); |
| 267 assertEquals(null, immw.getLastCursorAnchorInfo().getCharacterBounds(0))
; | 268 assertEquals(null, immw.getLastCursorAnchorInfo().getCharacterBounds(0))
; |
| 268 assertEquals(0, immw.getLastCursorAnchorInfo().getCharacterBoundsFlags(0
)); | 269 assertEquals(0, immw.getLastCursorAnchorInfo().getCharacterBoundsFlags(0
)); |
| 269 assertComposingText(null, -1, immw.getLastCursorAnchorInfo()); | 270 assertComposingText(null, -1, immw.getLastCursorAnchorInfo()); |
| 270 assertSelection(-1, -1, immw.getLastCursorAnchorInfo()); | 271 assertSelection(-1, -1, immw.getLastCursorAnchorInfo()); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 281 immw, composingTextDelegate, viewDelegate); | 282 immw, composingTextDelegate, viewDelegate); |
| 282 View view = null; | 283 View view = null; |
| 283 viewDelegate.locationX = 0; | 284 viewDelegate.locationX = 0; |
| 284 viewDelegate.locationY = 0; | 285 viewDelegate.locationY = 0; |
| 285 | 286 |
| 286 controller.focusedNodeChanged(true); | 287 controller.focusedNodeChanged(true); |
| 287 composingTextDelegate.clearTextAndSelection(controller); | 288 composingTextDelegate.clearTextAndSelection(controller); |
| 288 | 289 |
| 289 // Make sure that #updateCursorAnchorInfo() is not be called until the m
atrix info becomes | 290 // Make sure that #updateCursorAnchorInfo() is not be called until the m
atrix info becomes |
| 290 // available with #onUpdateFrameInfo(). | 291 // available with #onUpdateFrameInfo(). |
| 291 assertTrue(controller.onRequestCursorUpdates( | 292 assertTrue(controller.onRequestCursorUpdates(InputConnection.CURSOR_UPDA
TE_MONITOR, view)); |
| 292 false /* immediate request */, true /* monitor request */, view)
); | 293 controller.setCompositionCharacterBounds(new float[] {0.0f, 1.0f, 2.0f,
3.0f}); |
| 293 controller.setCompositionCharacterBounds(new float[] {0.0f, 1.0f, 2.0f,
3.0f}, view); | |
| 294 composingTextDelegate.updateTextAndSelection(controller, "0", 0, 1, 0, 1
); | 294 composingTextDelegate.updateTextAndSelection(controller, "0", 0, 1, 0, 1
); |
| 295 assertEquals(0, immw.getUpdateCursorAnchorInfoCounter()); | 295 assertEquals(0, immw.getUpdateCursorAnchorInfoCounter()); |
| 296 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), | 296 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), |
| 297 true, true, 2.0f, 0.0f, 3.0f, view); | 297 true, true, 2.0f, 0.0f, 3.0f, view); |
| 298 assertEquals(1, immw.getUpdateCursorAnchorInfoCounter()); | 298 assertEquals(1, immw.getUpdateCursorAnchorInfoCounter()); |
| 299 assertScaleAndTranslate(1.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo()
); | 299 assertScaleAndTranslate(1.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo()
); |
| 300 assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
0.0f, 3.0f, | 300 assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
0.0f, 3.0f, |
| 301 3.0f, immw.getLastCursorAnchorInfo()); | 301 3.0f, immw.getLastCursorAnchorInfo()); |
| 302 assertEquals(new RectF(0.0f, 1.0f, 2.0f, 3.0f), | 302 assertEquals(new RectF(0.0f, 1.0f, 2.0f, 3.0f), |
| 303 immw.getLastCursorAnchorInfo().getCharacterBounds(0)); | 303 immw.getLastCursorAnchorInfo().getCharacterBounds(0)); |
| 304 assertEquals(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, | 304 assertEquals(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, |
| 305 immw.getLastCursorAnchorInfo().getCharacterBoundsFlags(0)); | 305 immw.getLastCursorAnchorInfo().getCharacterBoundsFlags(0)); |
| 306 assertComposingText("0", 0, immw.getLastCursorAnchorInfo()); | 306 assertComposingText("0", 0, immw.getLastCursorAnchorInfo()); |
| 307 assertSelection(0, 1, immw.getLastCursorAnchorInfo()); | 307 assertSelection(0, 1, immw.getLastCursorAnchorInfo()); |
| 308 immw.clearLastCursorAnchorInfo(); | 308 immw.clearLastCursorAnchorInfo(); |
| 309 | 309 |
| 310 // Make sure that #updateCursorAnchorInfo() is not be called if any coor
dinate parameter is | 310 // Make sure that #updateCursorAnchorInfo() is not be called if any coor
dinate parameter is |
| 311 // changed for better performance. | 311 // changed for better performance. |
| 312 controller.setCompositionCharacterBounds(new float[] {0.0f, 1.0f, 2.0f,
3.0f}, view); | 312 controller.setCompositionCharacterBounds(new float[] {0.0f, 1.0f, 2.0f,
3.0f}); |
| 313 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), | 313 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), |
| 314 true, true, 2.0f, 0.0f, 3.0f, view); | 314 true, true, 2.0f, 0.0f, 3.0f, view); |
| 315 assertEquals(1, immw.getUpdateCursorAnchorInfoCounter()); | 315 assertEquals(1, immw.getUpdateCursorAnchorInfoCounter()); |
| 316 | 316 |
| 317 // Make sure that #updateCursorAnchorInfo() is called if #setComposition
CharacterBounds() | 317 // Make sure that #updateCursorAnchorInfo() is called if #setComposition
CharacterBounds() |
| 318 // is called with a different parameter. | 318 // is called with a different parameter. |
| 319 controller.setCompositionCharacterBounds(new float[] {30.0f, 1.0f, 32.0f
, 3.0f}, view); | 319 controller.setCompositionCharacterBounds(new float[] {30.0f, 1.0f, 32.0f
, 3.0f}); |
| 320 assertEquals(1, immw.getUpdateCursorAnchorInfoCounter()); | 320 assertEquals(1, immw.getUpdateCursorAnchorInfoCounter()); |
| 321 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), | 321 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), |
| 322 true, true, 2.0f, 0.0f, 3.0f, view); | 322 true, true, 2.0f, 0.0f, 3.0f, view); |
| 323 assertEquals(2, immw.getUpdateCursorAnchorInfoCounter()); | 323 assertEquals(2, immw.getUpdateCursorAnchorInfoCounter()); |
| 324 assertScaleAndTranslate(1.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo()
); | 324 assertScaleAndTranslate(1.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo()
); |
| 325 assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
0.0f, 3.0f, | 325 assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
0.0f, 3.0f, |
| 326 3.0f, immw.getLastCursorAnchorInfo()); | 326 3.0f, immw.getLastCursorAnchorInfo()); |
| 327 assertEquals(new RectF(30.0f, 1.0f, 32.0f, 3.0f), | 327 assertEquals(new RectF(30.0f, 1.0f, 32.0f, 3.0f), |
| 328 immw.getLastCursorAnchorInfo().getCharacterBounds(0)); | 328 immw.getLastCursorAnchorInfo().getCharacterBounds(0)); |
| 329 assertEquals(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, | 329 assertEquals(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 381 immw.getLastCursorAnchorInfo().getCharacterBoundsFlags(0)); | 381 immw.getLastCursorAnchorInfo().getCharacterBoundsFlags(0)); |
| 382 assertComposingText("1", 0, immw.getLastCursorAnchorInfo()); | 382 assertComposingText("1", 0, immw.getLastCursorAnchorInfo()); |
| 383 assertSelection(0, 1, immw.getLastCursorAnchorInfo()); | 383 assertSelection(0, 1, immw.getLastCursorAnchorInfo()); |
| 384 immw.clearLastCursorAnchorInfo(); | 384 immw.clearLastCursorAnchorInfo(); |
| 385 | 385 |
| 386 // Make sure that CURSOR_UPDATE_IMMEDIATE is cleared if the focused node
becomes | 386 // Make sure that CURSOR_UPDATE_IMMEDIATE is cleared if the focused node
becomes |
| 387 // non-editable. | 387 // non-editable. |
| 388 controller.focusedNodeChanged(false); | 388 controller.focusedNodeChanged(false); |
| 389 controller.focusedNodeChanged(true); | 389 controller.focusedNodeChanged(true); |
| 390 composingTextDelegate.clearTextAndSelection(controller); | 390 composingTextDelegate.clearTextAndSelection(controller); |
| 391 assertTrue(controller.onRequestCursorUpdates( | 391 assertTrue(controller.onRequestCursorUpdates(InputConnection.CURSOR_UPDA
TE_MONITOR, view)); |
| 392 false /* immediate request */, true /* monitor request */, view)
); | |
| 393 controller.focusedNodeChanged(false); | 392 controller.focusedNodeChanged(false); |
| 394 composingTextDelegate.clearTextAndSelection(controller); | 393 composingTextDelegate.clearTextAndSelection(controller); |
| 395 controller.setCompositionCharacterBounds(new float[] {0.0f, 1.0f, 2.0f,
3.0f}, view); | 394 controller.setCompositionCharacterBounds(new float[] {0.0f, 1.0f, 2.0f,
3.0f}); |
| 396 composingTextDelegate.updateTextAndSelection(controller, "0", 0, 1, 0, 1
); | 395 composingTextDelegate.updateTextAndSelection(controller, "0", 0, 1, 0, 1
); |
| 397 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), | 396 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), |
| 398 true, true, 2.0f, 0.0f, 3.0f, view); | 397 true, true, 2.0f, 0.0f, 3.0f, view); |
| 399 assertEquals(5, immw.getUpdateCursorAnchorInfoCounter()); | 398 assertEquals(5, immw.getUpdateCursorAnchorInfoCounter()); |
| 400 | 399 |
| 401 // Make sure that CURSOR_UPDATE_MONITOR can be enabled again. | 400 // Make sure that CURSOR_UPDATE_MONITOR can be enabled again. |
| 402 controller.focusedNodeChanged(true); | 401 controller.focusedNodeChanged(true); |
| 403 composingTextDelegate.clearTextAndSelection(controller); | 402 composingTextDelegate.clearTextAndSelection(controller); |
| 404 assertTrue(controller.onRequestCursorUpdates( | 403 assertTrue(controller.onRequestCursorUpdates(InputConnection.CURSOR_UPDA
TE_MONITOR, view)); |
| 405 false /* immediate request */, true /* monitor request */, view)
); | 404 controller.setCompositionCharacterBounds(new float[] {0.0f, 1.0f, 2.0f,
3.0f}); |
| 406 controller.setCompositionCharacterBounds(new float[] {0.0f, 1.0f, 2.0f,
3.0f}, view); | |
| 407 composingTextDelegate.updateTextAndSelection(controller, "0", 0, 1, 0, 1
); | 405 composingTextDelegate.updateTextAndSelection(controller, "0", 0, 1, 0, 1
); |
| 408 assertEquals(5, immw.getUpdateCursorAnchorInfoCounter()); | 406 assertEquals(5, immw.getUpdateCursorAnchorInfoCounter()); |
| 409 viewDelegate.locationX = 0; | 407 viewDelegate.locationX = 0; |
| 410 viewDelegate.locationY = 0; | 408 viewDelegate.locationY = 0; |
| 411 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), | 409 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), |
| 412 true, true, 2.0f, 0.0f, 3.0f, view); | 410 true, true, 2.0f, 0.0f, 3.0f, view); |
| 413 assertEquals(6, immw.getUpdateCursorAnchorInfoCounter()); | 411 assertEquals(6, immw.getUpdateCursorAnchorInfoCounter()); |
| 414 assertScaleAndTranslate(1.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo()
); | 412 assertScaleAndTranslate(1.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo()
); |
| 415 assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
0.0f, 3.0f, | 413 assertHasInsertionMarker(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, 2.0f,
0.0f, 3.0f, |
| 416 3.0f, immw.getLastCursorAnchorInfo()); | 414 3.0f, immw.getLastCursorAnchorInfo()); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 431 TestComposingTextDelegate composingTextDelegate = new TestComposingTextD
elegate(); | 429 TestComposingTextDelegate composingTextDelegate = new TestComposingTextD
elegate(); |
| 432 CursorAnchorInfoController controller = CursorAnchorInfoController.creat
eForTest( | 430 CursorAnchorInfoController controller = CursorAnchorInfoController.creat
eForTest( |
| 433 immw, composingTextDelegate, viewDelegate); | 431 immw, composingTextDelegate, viewDelegate); |
| 434 View view = null; | 432 View view = null; |
| 435 | 433 |
| 436 viewDelegate.locationX = 0; | 434 viewDelegate.locationX = 0; |
| 437 viewDelegate.locationY = 0; | 435 viewDelegate.locationY = 0; |
| 438 | 436 |
| 439 controller.focusedNodeChanged(true); | 437 controller.focusedNodeChanged(true); |
| 440 composingTextDelegate.clearTextAndSelection(controller); | 438 composingTextDelegate.clearTextAndSelection(controller); |
| 441 assertTrue(controller.onRequestCursorUpdates( | 439 assertTrue(controller.onRequestCursorUpdates(InputConnection.CURSOR_UPDA
TE_MONITOR, view)); |
| 442 false /* immediate request */, true /* monitor request */, view)
); | |
| 443 | 440 |
| 444 composingTextDelegate.updateTextAndSelection(controller, "01234", 1, 3,
1, 1); | 441 composingTextDelegate.updateTextAndSelection(controller, "01234", 1, 3,
1, 1); |
| 445 controller.setCompositionCharacterBounds(new float[] {0.0f, 1.0f, 2.0f,
3.0f, | 442 controller.setCompositionCharacterBounds(new float[] {0.0f, 1.0f, 2.0f,
3.0f, |
| 446 4.0f, 1.1f, 6.0f, 2.9f}, view); | 443 4.0f, 1.1f, 6.0f, 2.9f}); |
| 447 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), | 444 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), |
| 448 false, false, Float.NaN, Float.NaN, Float.NaN, view); | 445 false, false, Float.NaN, Float.NaN, Float.NaN, view); |
| 449 assertEquals(1, immw.getUpdateCursorAnchorInfoCounter()); | 446 assertEquals(1, immw.getUpdateCursorAnchorInfoCounter()); |
| 450 assertEquals(null, immw.getLastCursorAnchorInfo().getCharacterBounds(0))
; | 447 assertEquals(null, immw.getLastCursorAnchorInfo().getCharacterBounds(0))
; |
| 451 assertEquals(0, immw.getLastCursorAnchorInfo().getCharacterBoundsFlags(0
)); | 448 assertEquals(0, immw.getLastCursorAnchorInfo().getCharacterBoundsFlags(0
)); |
| 452 assertEquals(new RectF(0.0f, 1.0f, 2.0f, 3.0f), | 449 assertEquals(new RectF(0.0f, 1.0f, 2.0f, 3.0f), |
| 453 immw.getLastCursorAnchorInfo().getCharacterBounds(1)); | 450 immw.getLastCursorAnchorInfo().getCharacterBounds(1)); |
| 454 assertEquals(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, | 451 assertEquals(CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION, |
| 455 immw.getLastCursorAnchorInfo().getCharacterBoundsFlags(1)); | 452 immw.getLastCursorAnchorInfo().getCharacterBoundsFlags(1)); |
| 456 assertEquals(new RectF(4.0f, 1.1f, 6.0f, 2.9f), | 453 assertEquals(new RectF(4.0f, 1.1f, 6.0f, 2.9f), |
| (...skipping 14 matching lines...) Expand all Loading... |
| 471 TestComposingTextDelegate composingTextDelegate = new TestComposingTextD
elegate(); | 468 TestComposingTextDelegate composingTextDelegate = new TestComposingTextD
elegate(); |
| 472 CursorAnchorInfoController controller = CursorAnchorInfoController.creat
eForTest( | 469 CursorAnchorInfoController controller = CursorAnchorInfoController.creat
eForTest( |
| 473 immw, composingTextDelegate, viewDelegate); | 470 immw, composingTextDelegate, viewDelegate); |
| 474 View view = null; | 471 View view = null; |
| 475 | 472 |
| 476 viewDelegate.locationX = 0; | 473 viewDelegate.locationX = 0; |
| 477 viewDelegate.locationY = 0; | 474 viewDelegate.locationY = 0; |
| 478 | 475 |
| 479 controller.focusedNodeChanged(true); | 476 controller.focusedNodeChanged(true); |
| 480 composingTextDelegate.clearTextAndSelection(controller); | 477 composingTextDelegate.clearTextAndSelection(controller); |
| 481 assertTrue(controller.onRequestCursorUpdates( | 478 assertTrue(controller.onRequestCursorUpdates(InputConnection.CURSOR_UPDA
TE_MONITOR, view)); |
| 482 false /* immediate request */, true /* monitor request */, view)
); | |
| 483 | 479 |
| 484 composingTextDelegate.updateTextAndSelection(controller, "01234", 3, 3,
1, 1); | 480 composingTextDelegate.updateTextAndSelection(controller, "01234", 3, 3,
1, 1); |
| 485 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), | 481 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), |
| 486 false, false, Float.NaN, Float.NaN, Float.NaN, view); | 482 false, false, Float.NaN, Float.NaN, Float.NaN, view); |
| 487 assertEquals(1, immw.getUpdateCursorAnchorInfoCounter()); | 483 assertEquals(1, immw.getUpdateCursorAnchorInfoCounter()); |
| 488 assertEquals(null, immw.getLastCursorAnchorInfo().getCharacterBounds(0))
; | 484 assertEquals(null, immw.getLastCursorAnchorInfo().getCharacterBounds(0))
; |
| 489 assertEquals(0, immw.getLastCursorAnchorInfo().getCharacterBoundsFlags(0
)); | 485 assertEquals(0, immw.getLastCursorAnchorInfo().getCharacterBoundsFlags(0
)); |
| 490 assertEquals(null, immw.getLastCursorAnchorInfo().getCharacterBounds(1))
; | 486 assertEquals(null, immw.getLastCursorAnchorInfo().getCharacterBounds(1))
; |
| 491 assertEquals(0, immw.getLastCursorAnchorInfo().getCharacterBoundsFlags(1
)); | 487 assertEquals(0, immw.getLastCursorAnchorInfo().getCharacterBoundsFlags(1
)); |
| 492 assertEquals(null, immw.getLastCursorAnchorInfo().getCharacterBounds(2))
; | 488 assertEquals(null, immw.getLastCursorAnchorInfo().getCharacterBounds(2))
; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 504 public void testInsertionMarker() { | 500 public void testInsertionMarker() { |
| 505 TestInputMethodManagerWrapper immw = new TestInputMethodManagerWrapper(n
ull); | 501 TestInputMethodManagerWrapper immw = new TestInputMethodManagerWrapper(n
ull); |
| 506 TestViewDelegate viewDelegate = new TestViewDelegate(); | 502 TestViewDelegate viewDelegate = new TestViewDelegate(); |
| 507 TestComposingTextDelegate composingTextDelegate = new TestComposingTextD
elegate(); | 503 TestComposingTextDelegate composingTextDelegate = new TestComposingTextD
elegate(); |
| 508 CursorAnchorInfoController controller = CursorAnchorInfoController.creat
eForTest( | 504 CursorAnchorInfoController controller = CursorAnchorInfoController.creat
eForTest( |
| 509 immw, composingTextDelegate, viewDelegate); | 505 immw, composingTextDelegate, viewDelegate); |
| 510 View view = null; | 506 View view = null; |
| 511 | 507 |
| 512 controller.focusedNodeChanged(true); | 508 controller.focusedNodeChanged(true); |
| 513 composingTextDelegate.clearTextAndSelection(controller); | 509 composingTextDelegate.clearTextAndSelection(controller); |
| 514 assertTrue(controller.onRequestCursorUpdates( | 510 assertTrue(controller.onRequestCursorUpdates(InputConnection.CURSOR_UPDA
TE_MONITOR, view)); |
| 515 false /* immediate request */, true /* monitor request */, view)
); | |
| 516 | 511 |
| 517 // Test no insertion marker. | 512 // Test no insertion marker. |
| 518 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), | 513 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), |
| 519 false, false, Float.NaN, Float.NaN, Float.NaN, view); | 514 false, false, Float.NaN, Float.NaN, Float.NaN, view); |
| 520 assertEquals(1, immw.getUpdateCursorAnchorInfoCounter()); | 515 assertEquals(1, immw.getUpdateCursorAnchorInfoCounter()); |
| 521 assertHasNoInsertionMarker(immw.getLastCursorAnchorInfo()); | 516 assertHasNoInsertionMarker(immw.getLastCursorAnchorInfo()); |
| 522 immw.clearLastCursorAnchorInfo(); | 517 immw.clearLastCursorAnchorInfo(); |
| 523 | 518 |
| 524 // Test a visible insertion marker. | 519 // Test a visible insertion marker. |
| 525 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), | 520 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), |
| (...skipping 17 matching lines...) Expand all Loading... |
| 543 public void testMatrix() { | 538 public void testMatrix() { |
| 544 TestInputMethodManagerWrapper immw = new TestInputMethodManagerWrapper(n
ull); | 539 TestInputMethodManagerWrapper immw = new TestInputMethodManagerWrapper(n
ull); |
| 545 TestViewDelegate viewDelegate = new TestViewDelegate(); | 540 TestViewDelegate viewDelegate = new TestViewDelegate(); |
| 546 TestComposingTextDelegate composingTextDelegate = new TestComposingTextD
elegate(); | 541 TestComposingTextDelegate composingTextDelegate = new TestComposingTextD
elegate(); |
| 547 CursorAnchorInfoController controller = CursorAnchorInfoController.creat
eForTest( | 542 CursorAnchorInfoController controller = CursorAnchorInfoController.creat
eForTest( |
| 548 immw, composingTextDelegate, viewDelegate); | 543 immw, composingTextDelegate, viewDelegate); |
| 549 View view = null; | 544 View view = null; |
| 550 | 545 |
| 551 controller.focusedNodeChanged(true); | 546 controller.focusedNodeChanged(true); |
| 552 composingTextDelegate.clearTextAndSelection(controller); | 547 composingTextDelegate.clearTextAndSelection(controller); |
| 553 assertTrue(controller.onRequestCursorUpdates( | 548 assertTrue(controller.onRequestCursorUpdates(InputConnection.CURSOR_UPDA
TE_MONITOR, view)); |
| 554 false /* immediate request */, true /* monitor request */, view)
); | |
| 555 | 549 |
| 556 // Test no transformation | 550 // Test no transformation |
| 557 viewDelegate.locationX = 0; | 551 viewDelegate.locationX = 0; |
| 558 viewDelegate.locationY = 0; | 552 viewDelegate.locationY = 0; |
| 559 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), | 553 controller.onUpdateFrameInfo(createRenderCoordinates(1.0f, 0.0f), |
| 560 false, false, Float.NaN, Float.NaN, Float.NaN, view); | 554 false, false, Float.NaN, Float.NaN, Float.NaN, view); |
| 561 assertEquals(1, immw.getUpdateCursorAnchorInfoCounter()); | 555 assertEquals(1, immw.getUpdateCursorAnchorInfoCounter()); |
| 562 assertScaleAndTranslate(1.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo()
); | 556 assertScaleAndTranslate(1.0f, 0.0f, 0.0f, immw.getLastCursorAnchorInfo()
); |
| 563 immw.clearLastCursorAnchorInfo(); | 557 immw.clearLastCursorAnchorInfo(); |
| 564 | 558 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 586 // view origin == (10, 141) | 580 // view origin == (10, 141) |
| 587 viewDelegate.locationX = 10; | 581 viewDelegate.locationX = 10; |
| 588 viewDelegate.locationY = 141; | 582 viewDelegate.locationY = 141; |
| 589 controller.onUpdateFrameInfo(createRenderCoordinates(2.0f, 40.0f), | 583 controller.onUpdateFrameInfo(createRenderCoordinates(2.0f, 40.0f), |
| 590 false, false, Float.NaN, Float.NaN, Float.NaN, view); | 584 false, false, Float.NaN, Float.NaN, Float.NaN, view); |
| 591 assertEquals(4, immw.getUpdateCursorAnchorInfoCounter()); | 585 assertEquals(4, immw.getUpdateCursorAnchorInfoCounter()); |
| 592 assertScaleAndTranslate(2.0f, 10.0f, 181.0f, immw.getLastCursorAnchorInf
o()); | 586 assertScaleAndTranslate(2.0f, 10.0f, 181.0f, immw.getLastCursorAnchorInf
o()); |
| 593 immw.clearLastCursorAnchorInfo(); | 587 immw.clearLastCursorAnchorInfo(); |
| 594 } | 588 } |
| 595 } | 589 } |
| OLD | NEW |