Loading core/java/android/view/inputmethod/IInputMethodManagerGlobalInvoker.java +0 −14 Original line number Diff line number Diff line Loading @@ -452,20 +452,6 @@ final class IInputMethodManagerGlobalInvoker { } } @AnyThread static void reportVirtualDisplayGeometryAsync(@NonNull IInputMethodClient client, int childDisplayId, @Nullable float[] matrixValues) { final IInputMethodManager service = getService(); if (service == null) { return; } try { service.reportVirtualDisplayGeometryAsync(client, childDisplayId, matrixValues); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } @AnyThread static void reportPerceptibleAsync(@NonNull IBinder windowToken, boolean perceptible) { final IInputMethodManager service = getService(); Loading core/java/android/view/inputmethod/InputMethodManager.java +1 −101 Original line number Diff line number Diff line Loading @@ -60,7 +60,6 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Matrix; import android.graphics.Rect; import android.hardware.display.DisplayManager; import android.inputmethodservice.InputMethodService; Loading Loading @@ -572,18 +571,6 @@ public final class InputMethodManager { @GuardedBy("mH") private CursorAnchorInfo mCursorAnchorInfo = null; /** * A special {@link Matrix} that can be provided by the system when this instance is running * inside a virtual display. * * <p>If this is non-{@code null}, {@link #updateCursorAnchorInfo(View, CursorAnchorInfo)} * should be adjusted with this {@link Matrix}.</p> * * <p>{@code null} when not used.</p> */ @GuardedBy("mH") private Matrix mVirtualDisplayToScreenMatrix = null; // ----------------------------------------------------------- /** Loading Loading @@ -670,7 +657,6 @@ public final class InputMethodManager { private static final int MSG_BIND_ACCESSIBILITY_SERVICE = 11; private static final int MSG_UNBIND_ACCESSIBILITY_SERVICE = 12; private static final int MSG_SET_INTERACTIVE = 13; private static final int MSG_UPDATE_VIRTUAL_DISPLAY_TO_SCREEN_MATRIX = 30; private static final int MSG_ON_SHOW_REQUESTED = 31; /** Loading Loading @@ -1037,7 +1023,6 @@ public final class InputMethodManager { mCurMethod = res.method; // for @UnsupportedAppUsage mCurBindState = new BindState(res); mCurId = res.id; // for @UnsupportedAppUsage mVirtualDisplayToScreenMatrix = res.getVirtualDisplayToScreenMatrix(); } startInputInner(StartInputReason.BOUND_TO_IMMS, null, 0, 0, 0); return; Loading Loading @@ -1245,43 +1230,6 @@ public final class InputMethodManager { } return; } case MSG_UPDATE_VIRTUAL_DISPLAY_TO_SCREEN_MATRIX: { final float[] matrixValues = (float[]) msg.obj; final int bindSequence = msg.arg1; synchronized (mH) { if (getBindSequenceLocked() != bindSequence) { return; } if (matrixValues == null || mVirtualDisplayToScreenMatrix == null) { // Either InputBoundResult#mVirtualDisplayToScreenMatrixValues is null // OR this app is unbound from the parent VirtualDisplay. In this case, // calling updateCursorAnchorInfo() isn't safe. Only clear the matrix. mVirtualDisplayToScreenMatrix = null; return; } final float[] currentValues = new float[9]; mVirtualDisplayToScreenMatrix.getValues(currentValues); if (Arrays.equals(currentValues, matrixValues)) { return; } mVirtualDisplayToScreenMatrix.setValues(matrixValues); if (mCursorAnchorInfo == null || !isImeSessionAvailableLocked() || mServedInputConnection == null) { return; } if (!mServedInputConnection.isCursorAnchorInfoMonitoring()) { return; } // Since the host VirtualDisplay is moved, we need to issue // IMS#updateCursorAnchorInfo() again. mCurBindState.mImeSession.updateCursorAnchorInfo( CursorAnchorInfo.createForAdditionalParentMatrix( mCursorAnchorInfo, mVirtualDisplayToScreenMatrix)); } return; } case MSG_ON_SHOW_REQUESTED: { synchronized (mH) { if (mImeInsetsConsumer != null) { Loading Loading @@ -1359,12 +1307,6 @@ public final class InputMethodManager { .sendToTarget(); } @Override public void updateVirtualDisplayToScreenMatrix(int bindSequence, float[] matrixValues) { mH.obtainMessage(MSG_UPDATE_VIRTUAL_DISPLAY_TO_SCREEN_MATRIX, bindSequence, 0, matrixValues).sendToTarget(); } @Override public void setImeTraceEnabled(boolean enabled) { ImeTracing.getInstance().setEnabled(enabled); Loading Loading @@ -1958,7 +1900,6 @@ public final class InputMethodManager { @UnsupportedAppUsage @GuardedBy("mH") void finishInputLocked() { mVirtualDisplayToScreenMatrix = null; View clearedView = null; mNextServedView = null; if (mServedView != null) { Loading Loading @@ -2839,7 +2780,6 @@ public final class InputMethodManager { + InputMethodDebug.startInputFlagsToString(startInputFlags)); return false; } mVirtualDisplayToScreenMatrix = res.getVirtualDisplayToScreenMatrix(); if (res.id != null) { updateInputChannelLocked(res.channel); mCurMethod = res.method; // for @UnsupportedAppUsage Loading Loading @@ -3400,13 +3340,7 @@ public final class InputMethodManager { return; } if (DEBUG) Log.v(TAG, "updateCursorAnchorInfo: " + cursorAnchorInfo); if (mVirtualDisplayToScreenMatrix != null) { mCurBindState.mImeSession.updateCursorAnchorInfo( CursorAnchorInfo.createForAdditionalParentMatrix( cursorAnchorInfo, mVirtualDisplayToScreenMatrix)); } else { mCurBindState.mImeSession.updateCursorAnchorInfo(cursorAnchorInfo); } mCursorAnchorInfo = cursorAnchorInfo; } } Loading Loading @@ -4019,40 +3953,6 @@ public final class InputMethodManager { mRequestCursorUpdateDisplayIdCheck.set(enabled); } /** * An internal API for {@link android.hardware.display.VirtualDisplay} to report where its * embedded virtual display is placed. * * @param childDisplayId Display ID of the embedded virtual display. * @param matrix {@link Matrix} to convert virtual display screen coordinates to * the host screen coordinates. {@code null} to clear the relationship. * @hide */ public void reportVirtualDisplayGeometry(int childDisplayId, @Nullable Matrix matrix) { final float[] matrixValues; if (matrix == null) { matrixValues = null; } else { matrixValues = new float[9]; matrix.getValues(matrixValues); } IInputMethodManagerGlobalInvoker.reportVirtualDisplayGeometryAsync(mClient, childDisplayId, matrixValues); } /** * An internal API that returns if the current display has a transformation matrix to apply. * * @return {@code true} if {@link Matrix} to convert virtual display screen coordinates to * the host screen coordinates is set. * @hide */ public boolean hasVirtualDisplayToScreenMatrix() { synchronized (mH) { return mVirtualDisplayToScreenMatrix != null; } } /** * Force switch to the last used input method and subtype. If the last input method didn't have * any subtypes, the framework will simply switch to the last input method with no subtype Loading core/java/android/view/inputmethod/RemoteInputConnectionImpl.java +1 −2 Original line number Diff line number Diff line Loading @@ -1107,8 +1107,7 @@ final class RemoteInputConnectionImpl extends IRemoteInputConnection.Stub { return false; } if (mParentInputMethodManager.mRequestCursorUpdateDisplayIdCheck.get() && mParentInputMethodManager.getDisplayId() != imeDisplayId && !mParentInputMethodManager.hasVirtualDisplayToScreenMatrix()) { && mParentInputMethodManager.getDisplayId() != imeDisplayId) { // requestCursorUpdates() is not currently supported across displays. return false; } Loading core/java/com/android/internal/inputmethod/IInputMethodClient.aidl +0 −1 Original line number Diff line number Diff line Loading @@ -31,7 +31,6 @@ oneway interface IInputMethodClient { void setInteractive(boolean active, boolean fullscreen); void scheduleStartInputIfNecessary(boolean fullscreen); void reportFullscreenMode(boolean fullscreen); void updateVirtualDisplayToScreenMatrix(int bindSequence, in float[] matrixValues); void setImeTraceEnabled(boolean enabled); void throwExceptionFromSystem(String message); } core/java/com/android/internal/inputmethod/InputBindResult.java +1 −30 Original line number Diff line number Diff line Loading @@ -19,11 +19,9 @@ package com.android.internal.inputmethod; import static java.lang.annotation.RetentionPolicy.SOURCE; import android.annotation.IntDef; import android.annotation.Nullable; import android.content.ComponentName; import android.content.Intent; import android.content.ServiceConnection; import android.graphics.Matrix; import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; Loading Loading @@ -205,28 +203,11 @@ public final class InputBindResult implements Parcelable { */ public final int sequence; @Nullable private final float[] mVirtualDisplayToScreenMatrixValues; /** * {@code true} if the IME explicitly specifies {@code suppressesSpellChecker="true"}. */ public final boolean isInputMethodSuppressingSpellChecker; /** * @return {@link Matrix} that corresponds to {@link #mVirtualDisplayToScreenMatrixValues}. * {@code null} if {@link #mVirtualDisplayToScreenMatrixValues} is {@code null}. */ @Nullable public Matrix getVirtualDisplayToScreenMatrix() { if (mVirtualDisplayToScreenMatrixValues == null) { return null; } final Matrix matrix = new Matrix(); matrix.setValues(mVirtualDisplayToScreenMatrixValues); return matrix; } /** * Creates a new instance of {@link InputBindResult}. * Loading @@ -246,7 +227,6 @@ public final class InputBindResult implements Parcelable { IInputMethodSession method, SparseArray<IAccessibilityInputMethodSession> accessibilitySessions, InputChannel channel, String id, int sequence, @Nullable Matrix virtualDisplayToScreenMatrix, boolean isInputMethodSuppressingSpellChecker) { this.result = result; this.method = method; Loading @@ -254,12 +234,6 @@ public final class InputBindResult implements Parcelable { this.channel = channel; this.id = id; this.sequence = sequence; if (virtualDisplayToScreenMatrix == null) { mVirtualDisplayToScreenMatrixValues = null; } else { mVirtualDisplayToScreenMatrixValues = new float[9]; virtualDisplayToScreenMatrix.getValues(mVirtualDisplayToScreenMatrixValues); } this.isInputMethodSuppressingSpellChecker = isInputMethodSuppressingSpellChecker; } Loading Loading @@ -287,7 +261,6 @@ public final class InputBindResult implements Parcelable { } id = source.readString(); sequence = source.readInt(); mVirtualDisplayToScreenMatrixValues = source.createFloatArray(); isInputMethodSuppressingSpellChecker = source.readBoolean(); } Loading @@ -298,7 +271,6 @@ public final class InputBindResult implements Parcelable { public String toString() { return "InputBindResult{result=" + getResultString() + " method=" + method + " id=" + id + " sequence=" + sequence + " virtualDisplayToScreenMatrix=" + getVirtualDisplayToScreenMatrix() + " isInputMethodSuppressingSpellChecker=" + isInputMethodSuppressingSpellChecker + "}"; } Loading Loading @@ -330,7 +302,6 @@ public final class InputBindResult implements Parcelable { } dest.writeString(id); dest.writeInt(sequence); dest.writeFloatArray(mVirtualDisplayToScreenMatrixValues); dest.writeBoolean(isInputMethodSuppressingSpellChecker); } Loading Loading @@ -400,7 +371,7 @@ public final class InputBindResult implements Parcelable { } private static InputBindResult error(@ResultCode int result) { return new InputBindResult(result, null, null, null, null, -1, null, false); return new InputBindResult(result, null, null, null, null, -1, false); } /** Loading Loading
core/java/android/view/inputmethod/IInputMethodManagerGlobalInvoker.java +0 −14 Original line number Diff line number Diff line Loading @@ -452,20 +452,6 @@ final class IInputMethodManagerGlobalInvoker { } } @AnyThread static void reportVirtualDisplayGeometryAsync(@NonNull IInputMethodClient client, int childDisplayId, @Nullable float[] matrixValues) { final IInputMethodManager service = getService(); if (service == null) { return; } try { service.reportVirtualDisplayGeometryAsync(client, childDisplayId, matrixValues); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } @AnyThread static void reportPerceptibleAsync(@NonNull IBinder windowToken, boolean perceptible) { final IInputMethodManager service = getService(); Loading
core/java/android/view/inputmethod/InputMethodManager.java +1 −101 Original line number Diff line number Diff line Loading @@ -60,7 +60,6 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Matrix; import android.graphics.Rect; import android.hardware.display.DisplayManager; import android.inputmethodservice.InputMethodService; Loading Loading @@ -572,18 +571,6 @@ public final class InputMethodManager { @GuardedBy("mH") private CursorAnchorInfo mCursorAnchorInfo = null; /** * A special {@link Matrix} that can be provided by the system when this instance is running * inside a virtual display. * * <p>If this is non-{@code null}, {@link #updateCursorAnchorInfo(View, CursorAnchorInfo)} * should be adjusted with this {@link Matrix}.</p> * * <p>{@code null} when not used.</p> */ @GuardedBy("mH") private Matrix mVirtualDisplayToScreenMatrix = null; // ----------------------------------------------------------- /** Loading Loading @@ -670,7 +657,6 @@ public final class InputMethodManager { private static final int MSG_BIND_ACCESSIBILITY_SERVICE = 11; private static final int MSG_UNBIND_ACCESSIBILITY_SERVICE = 12; private static final int MSG_SET_INTERACTIVE = 13; private static final int MSG_UPDATE_VIRTUAL_DISPLAY_TO_SCREEN_MATRIX = 30; private static final int MSG_ON_SHOW_REQUESTED = 31; /** Loading Loading @@ -1037,7 +1023,6 @@ public final class InputMethodManager { mCurMethod = res.method; // for @UnsupportedAppUsage mCurBindState = new BindState(res); mCurId = res.id; // for @UnsupportedAppUsage mVirtualDisplayToScreenMatrix = res.getVirtualDisplayToScreenMatrix(); } startInputInner(StartInputReason.BOUND_TO_IMMS, null, 0, 0, 0); return; Loading Loading @@ -1245,43 +1230,6 @@ public final class InputMethodManager { } return; } case MSG_UPDATE_VIRTUAL_DISPLAY_TO_SCREEN_MATRIX: { final float[] matrixValues = (float[]) msg.obj; final int bindSequence = msg.arg1; synchronized (mH) { if (getBindSequenceLocked() != bindSequence) { return; } if (matrixValues == null || mVirtualDisplayToScreenMatrix == null) { // Either InputBoundResult#mVirtualDisplayToScreenMatrixValues is null // OR this app is unbound from the parent VirtualDisplay. In this case, // calling updateCursorAnchorInfo() isn't safe. Only clear the matrix. mVirtualDisplayToScreenMatrix = null; return; } final float[] currentValues = new float[9]; mVirtualDisplayToScreenMatrix.getValues(currentValues); if (Arrays.equals(currentValues, matrixValues)) { return; } mVirtualDisplayToScreenMatrix.setValues(matrixValues); if (mCursorAnchorInfo == null || !isImeSessionAvailableLocked() || mServedInputConnection == null) { return; } if (!mServedInputConnection.isCursorAnchorInfoMonitoring()) { return; } // Since the host VirtualDisplay is moved, we need to issue // IMS#updateCursorAnchorInfo() again. mCurBindState.mImeSession.updateCursorAnchorInfo( CursorAnchorInfo.createForAdditionalParentMatrix( mCursorAnchorInfo, mVirtualDisplayToScreenMatrix)); } return; } case MSG_ON_SHOW_REQUESTED: { synchronized (mH) { if (mImeInsetsConsumer != null) { Loading Loading @@ -1359,12 +1307,6 @@ public final class InputMethodManager { .sendToTarget(); } @Override public void updateVirtualDisplayToScreenMatrix(int bindSequence, float[] matrixValues) { mH.obtainMessage(MSG_UPDATE_VIRTUAL_DISPLAY_TO_SCREEN_MATRIX, bindSequence, 0, matrixValues).sendToTarget(); } @Override public void setImeTraceEnabled(boolean enabled) { ImeTracing.getInstance().setEnabled(enabled); Loading Loading @@ -1958,7 +1900,6 @@ public final class InputMethodManager { @UnsupportedAppUsage @GuardedBy("mH") void finishInputLocked() { mVirtualDisplayToScreenMatrix = null; View clearedView = null; mNextServedView = null; if (mServedView != null) { Loading Loading @@ -2839,7 +2780,6 @@ public final class InputMethodManager { + InputMethodDebug.startInputFlagsToString(startInputFlags)); return false; } mVirtualDisplayToScreenMatrix = res.getVirtualDisplayToScreenMatrix(); if (res.id != null) { updateInputChannelLocked(res.channel); mCurMethod = res.method; // for @UnsupportedAppUsage Loading Loading @@ -3400,13 +3340,7 @@ public final class InputMethodManager { return; } if (DEBUG) Log.v(TAG, "updateCursorAnchorInfo: " + cursorAnchorInfo); if (mVirtualDisplayToScreenMatrix != null) { mCurBindState.mImeSession.updateCursorAnchorInfo( CursorAnchorInfo.createForAdditionalParentMatrix( cursorAnchorInfo, mVirtualDisplayToScreenMatrix)); } else { mCurBindState.mImeSession.updateCursorAnchorInfo(cursorAnchorInfo); } mCursorAnchorInfo = cursorAnchorInfo; } } Loading Loading @@ -4019,40 +3953,6 @@ public final class InputMethodManager { mRequestCursorUpdateDisplayIdCheck.set(enabled); } /** * An internal API for {@link android.hardware.display.VirtualDisplay} to report where its * embedded virtual display is placed. * * @param childDisplayId Display ID of the embedded virtual display. * @param matrix {@link Matrix} to convert virtual display screen coordinates to * the host screen coordinates. {@code null} to clear the relationship. * @hide */ public void reportVirtualDisplayGeometry(int childDisplayId, @Nullable Matrix matrix) { final float[] matrixValues; if (matrix == null) { matrixValues = null; } else { matrixValues = new float[9]; matrix.getValues(matrixValues); } IInputMethodManagerGlobalInvoker.reportVirtualDisplayGeometryAsync(mClient, childDisplayId, matrixValues); } /** * An internal API that returns if the current display has a transformation matrix to apply. * * @return {@code true} if {@link Matrix} to convert virtual display screen coordinates to * the host screen coordinates is set. * @hide */ public boolean hasVirtualDisplayToScreenMatrix() { synchronized (mH) { return mVirtualDisplayToScreenMatrix != null; } } /** * Force switch to the last used input method and subtype. If the last input method didn't have * any subtypes, the framework will simply switch to the last input method with no subtype Loading
core/java/android/view/inputmethod/RemoteInputConnectionImpl.java +1 −2 Original line number Diff line number Diff line Loading @@ -1107,8 +1107,7 @@ final class RemoteInputConnectionImpl extends IRemoteInputConnection.Stub { return false; } if (mParentInputMethodManager.mRequestCursorUpdateDisplayIdCheck.get() && mParentInputMethodManager.getDisplayId() != imeDisplayId && !mParentInputMethodManager.hasVirtualDisplayToScreenMatrix()) { && mParentInputMethodManager.getDisplayId() != imeDisplayId) { // requestCursorUpdates() is not currently supported across displays. return false; } Loading
core/java/com/android/internal/inputmethod/IInputMethodClient.aidl +0 −1 Original line number Diff line number Diff line Loading @@ -31,7 +31,6 @@ oneway interface IInputMethodClient { void setInteractive(boolean active, boolean fullscreen); void scheduleStartInputIfNecessary(boolean fullscreen); void reportFullscreenMode(boolean fullscreen); void updateVirtualDisplayToScreenMatrix(int bindSequence, in float[] matrixValues); void setImeTraceEnabled(boolean enabled); void throwExceptionFromSystem(String message); }
core/java/com/android/internal/inputmethod/InputBindResult.java +1 −30 Original line number Diff line number Diff line Loading @@ -19,11 +19,9 @@ package com.android.internal.inputmethod; import static java.lang.annotation.RetentionPolicy.SOURCE; import android.annotation.IntDef; import android.annotation.Nullable; import android.content.ComponentName; import android.content.Intent; import android.content.ServiceConnection; import android.graphics.Matrix; import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; Loading Loading @@ -205,28 +203,11 @@ public final class InputBindResult implements Parcelable { */ public final int sequence; @Nullable private final float[] mVirtualDisplayToScreenMatrixValues; /** * {@code true} if the IME explicitly specifies {@code suppressesSpellChecker="true"}. */ public final boolean isInputMethodSuppressingSpellChecker; /** * @return {@link Matrix} that corresponds to {@link #mVirtualDisplayToScreenMatrixValues}. * {@code null} if {@link #mVirtualDisplayToScreenMatrixValues} is {@code null}. */ @Nullable public Matrix getVirtualDisplayToScreenMatrix() { if (mVirtualDisplayToScreenMatrixValues == null) { return null; } final Matrix matrix = new Matrix(); matrix.setValues(mVirtualDisplayToScreenMatrixValues); return matrix; } /** * Creates a new instance of {@link InputBindResult}. * Loading @@ -246,7 +227,6 @@ public final class InputBindResult implements Parcelable { IInputMethodSession method, SparseArray<IAccessibilityInputMethodSession> accessibilitySessions, InputChannel channel, String id, int sequence, @Nullable Matrix virtualDisplayToScreenMatrix, boolean isInputMethodSuppressingSpellChecker) { this.result = result; this.method = method; Loading @@ -254,12 +234,6 @@ public final class InputBindResult implements Parcelable { this.channel = channel; this.id = id; this.sequence = sequence; if (virtualDisplayToScreenMatrix == null) { mVirtualDisplayToScreenMatrixValues = null; } else { mVirtualDisplayToScreenMatrixValues = new float[9]; virtualDisplayToScreenMatrix.getValues(mVirtualDisplayToScreenMatrixValues); } this.isInputMethodSuppressingSpellChecker = isInputMethodSuppressingSpellChecker; } Loading Loading @@ -287,7 +261,6 @@ public final class InputBindResult implements Parcelable { } id = source.readString(); sequence = source.readInt(); mVirtualDisplayToScreenMatrixValues = source.createFloatArray(); isInputMethodSuppressingSpellChecker = source.readBoolean(); } Loading @@ -298,7 +271,6 @@ public final class InputBindResult implements Parcelable { public String toString() { return "InputBindResult{result=" + getResultString() + " method=" + method + " id=" + id + " sequence=" + sequence + " virtualDisplayToScreenMatrix=" + getVirtualDisplayToScreenMatrix() + " isInputMethodSuppressingSpellChecker=" + isInputMethodSuppressingSpellChecker + "}"; } Loading Loading @@ -330,7 +302,6 @@ public final class InputBindResult implements Parcelable { } dest.writeString(id); dest.writeInt(sequence); dest.writeFloatArray(mVirtualDisplayToScreenMatrixValues); dest.writeBoolean(isInputMethodSuppressingSpellChecker); } Loading Loading @@ -400,7 +371,7 @@ public final class InputBindResult implements Parcelable { } private static InputBindResult error(@ResultCode int result) { return new InputBindResult(result, null, null, null, null, -1, null, false); return new InputBindResult(result, null, null, null, null, -1, false); } /** Loading