summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Yohei Yukawa <yukawa@google.com> 2021-05-04 11:50:53 -0700
committer Yohei Yukawa <yukawa@google.com> 2021-05-21 18:14:26 +0000
commit898b28fecc21117b33235d60c2095c2a8ad413fa (patch)
tree983511fec7d9a9d2c249f6259f0d78966b112d0c
parent44c499d853e3fd2619b05d21f9fbdd50802e9b6f (diff)
Remove CursorAnchorInfo#createForAdditionalParentMatrix()
This CL logically reverts my previous CL [1], which added an @hide method CursorAnchorInfo#createForAdditionalParentMatrix() as a preparation to support CursorAnchorInfo API on ActivityView. Now that InputMethodManager#reportActivityView() is removed [2], we also do not need this @hide method any more too. Note also that CursorAnchorInfo is now fully tested in CTS rather than FrameworksCoreTests [3]. Thus it's fine with removing CursorAnchorInfoTest.java from FrameworksCoreTests. [1]: Ic7f9057623ffc61ec7a6121735dc39adecf4649d e4410a135ba4fbafa6594181eff50fe5145194b3 [2]: Idd60d96a39f827197d189beb5de016446576d9cd 44c499d853e3fd2619b05d21f9fbdd50802e9b6f [3]: Ib758bddff34b4722b39c94e7ad4e8f8da2bb8b92 c4ef1d6ec22dc2af2ed339fd4e78075903783be0 Bug: 115693908 Bug: 179161778 Test: atest CtsInputMethodTestCases:CursorAnchorInfoTest Change-Id: I0a05453eeed863db5bfe4b965ab4bcbad67f2783
-rw-r--r--core/java/android/view/inputmethod/CursorAnchorInfo.java100
-rw-r--r--core/tests/coretests/src/android/view/inputmethod/CursorAnchorInfoTest.java64
2 files changed, 20 insertions, 144 deletions
diff --git a/core/java/android/view/inputmethod/CursorAnchorInfo.java b/core/java/android/view/inputmethod/CursorAnchorInfo.java
index c8c1d8745273..fbc947071c99 100644
--- a/core/java/android/view/inputmethod/CursorAnchorInfo.java
+++ b/core/java/android/view/inputmethod/CursorAnchorInfo.java
@@ -389,7 +389,7 @@ public final class CursorAnchorInfo implements Parcelable {
"required when positional parameters are specified.");
}
}
- return CursorAnchorInfo.create(this);
+ return new CursorAnchorInfo(this);
}
/**
@@ -413,90 +413,30 @@ public final class CursorAnchorInfo implements Parcelable {
}
}
- private static CursorAnchorInfo create(Builder builder) {
- final SparseRectFArray characterBoundsArray =
- builder.mCharacterBoundsArrayBuilder != null
- ? builder.mCharacterBoundsArrayBuilder.build()
- : null;
- final float[] matrixValues = new float[9];
+ private CursorAnchorInfo(final Builder builder) {
+ mSelectionStart = builder.mSelectionStart;
+ mSelectionEnd = builder.mSelectionEnd;
+ mComposingTextStart = builder.mComposingTextStart;
+ mComposingText = builder.mComposingText;
+ mInsertionMarkerFlags = builder.mInsertionMarkerFlags;
+ mInsertionMarkerHorizontal = builder.mInsertionMarkerHorizontal;
+ mInsertionMarkerTop = builder.mInsertionMarkerTop;
+ mInsertionMarkerBaseline = builder.mInsertionMarkerBaseline;
+ mInsertionMarkerBottom = builder.mInsertionMarkerBottom;
+ mCharacterBoundsArray = builder.mCharacterBoundsArrayBuilder != null
+ ? builder.mCharacterBoundsArrayBuilder.build() : null;
+ mMatrixValues = new float[9];
if (builder.mMatrixInitialized) {
- System.arraycopy(builder.mMatrixValues, 0, matrixValues, 0, 9);
+ System.arraycopy(builder.mMatrixValues, 0, mMatrixValues, 0, 9);
} else {
- Matrix.IDENTITY_MATRIX.getValues(matrixValues);
+ Matrix.IDENTITY_MATRIX.getValues(mMatrixValues);
}
- return new CursorAnchorInfo(builder.mSelectionStart, builder.mSelectionEnd,
- builder.mComposingTextStart, builder.mComposingText, builder.mInsertionMarkerFlags,
- builder.mInsertionMarkerHorizontal, builder.mInsertionMarkerTop,
- builder.mInsertionMarkerBaseline, builder.mInsertionMarkerBottom,
- characterBoundsArray, matrixValues);
- }
-
- private CursorAnchorInfo(int selectionStart, int selectionEnd, int composingTextStart,
- @Nullable CharSequence composingText, int insertionMarkerFlags,
- float insertionMarkerHorizontal, float insertionMarkerTop,
- float insertionMarkerBaseline, float insertionMarkerBottom,
- @Nullable SparseRectFArray characterBoundsArray, @NonNull float[] matrixValues) {
- mSelectionStart = selectionStart;
- mSelectionEnd = selectionEnd;
- mComposingTextStart = composingTextStart;
- mComposingText = composingText;
- mInsertionMarkerFlags = insertionMarkerFlags;
- mInsertionMarkerHorizontal = insertionMarkerHorizontal;
- mInsertionMarkerTop = insertionMarkerTop;
- mInsertionMarkerBaseline = insertionMarkerBaseline;
- mInsertionMarkerBottom = insertionMarkerBottom;
- mCharacterBoundsArray = characterBoundsArray;
- mMatrixValues = matrixValues;
-
// To keep hash function simple, we only use some complex objects for hash.
- int hashCode = Objects.hashCode(mComposingText);
- hashCode *= 31;
- hashCode += Arrays.hashCode(matrixValues);
- mHashCode = hashCode;
- }
-
- /**
- * Creates a new instance of {@link CursorAnchorInfo} by applying {@code parentMatrix} to
- * the coordinate transformation matrix.
- *
- * @param original {@link CursorAnchorInfo} to be cloned from.
- * @param parentMatrix {@link Matrix} to be applied to {@code original.getMatrix()}
- * @return A new instance of {@link CursorAnchorInfo} whose {@link CursorAnchorInfo#getMatrix()}
- * returns {@code parentMatrix * original.getMatrix()}.
- * @hide
- */
- public static CursorAnchorInfo createForAdditionalParentMatrix(CursorAnchorInfo original,
- @NonNull Matrix parentMatrix) {
- return new CursorAnchorInfo(original.mSelectionStart, original.mSelectionEnd,
- original.mComposingTextStart, original.mComposingText,
- original.mInsertionMarkerFlags, original.mInsertionMarkerHorizontal,
- original.mInsertionMarkerTop, original.mInsertionMarkerBaseline,
- original.mInsertionMarkerBottom, original.mCharacterBoundsArray,
- computeMatrixValues(parentMatrix, original));
- }
-
- /**
- * Returns a float array that represents {@link Matrix} elements for
- * {@code parentMatrix * info.getMatrix()}.
- *
- * @param parentMatrix {@link Matrix} to be multiplied.
- * @param info {@link CursorAnchorInfo} to provide {@link Matrix} to be multiplied.
- * @return {@code parentMatrix * info.getMatrix()}.
- */
- private static float[] computeMatrixValues(@NonNull Matrix parentMatrix,
- @NonNull CursorAnchorInfo info) {
- if (parentMatrix.isIdentity()) {
- return info.mMatrixValues;
- }
-
- final Matrix newMatrix = new Matrix();
- newMatrix.setValues(info.mMatrixValues);
- newMatrix.postConcat(parentMatrix);
-
- final float[] matrixValues = new float[9];
- newMatrix.getValues(matrixValues);
- return matrixValues;
+ int hash = Objects.hashCode(mComposingText);
+ hash *= 31;
+ hash += Arrays.hashCode(mMatrixValues);
+ mHashCode = hash;
}
/**
diff --git a/core/tests/coretests/src/android/view/inputmethod/CursorAnchorInfoTest.java b/core/tests/coretests/src/android/view/inputmethod/CursorAnchorInfoTest.java
deleted file mode 100644
index 833530d76029..000000000000
--- a/core/tests/coretests/src/android/view/inputmethod/CursorAnchorInfoTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.view.inputmethod;
-
-import static org.junit.Assert.assertEquals;
-
-import android.graphics.Matrix;
-import android.view.inputmethod.CursorAnchorInfo.Builder;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@SmallTest
-@RunWith(AndroidJUnit4.class)
-public class CursorAnchorInfoTest {
- @Test
- public void testCreateForAdditionalParentMatrix() {
- final Matrix originalMatrix = new Matrix();
- originalMatrix.setTranslate(10.0f, 20.0f);
- final Builder builder = new Builder();
- builder.setMatrix(originalMatrix);
-
- final CursorAnchorInfo originalInstance = builder.build();
-
- assertEquals(originalMatrix, originalInstance.getMatrix());
-
- final Matrix additionalParentMatrix = new Matrix();
- additionalParentMatrix.setTranslate(1.0f, 2.0f);
-
- final Matrix newMatrix = new Matrix(originalMatrix);
- newMatrix.postConcat(additionalParentMatrix);
-
- builder.reset();
- builder.setMatrix(newMatrix);
- // An instance created by the standard Builder class.
- final CursorAnchorInfo newInstanceByBuilder = builder.build();
-
- // An instance created by an @hide method.
- final CursorAnchorInfo newInstanceByMethod =
- CursorAnchorInfo.createForAdditionalParentMatrix(
- originalInstance, additionalParentMatrix);
-
- assertEquals(newMatrix, newInstanceByBuilder.getMatrix());
- assertEquals(newMatrix, newInstanceByMethod.getMatrix());
- assertEquals(newInstanceByBuilder.hashCode(), newInstanceByMethod.hashCode());
- }
-}