Loading core/java/android/view/inputmethod/RemoteInputConnectionImpl.java +15 −30 Original line number Diff line number Diff line Loading @@ -43,7 +43,6 @@ import android.view.KeyEvent; import android.view.View; import android.view.ViewRootImpl; import com.android.internal.annotations.GuardedBy; import com.android.internal.infra.AndroidFuture; import com.android.internal.inputmethod.IRemoteAccessibilityInputConnection; import com.android.internal.inputmethod.IRemoteInputConnection; Loading @@ -54,6 +53,7 @@ import java.lang.annotation.Retention; import java.lang.ref.WeakReference; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; import java.util.function.Supplier; Loading Loading @@ -158,18 +158,13 @@ final class RemoteInputConnectionImpl extends IRemoteInputConnection.Stub { boolean cancellable(); } @GuardedBy("mLock") @Nullable private InputConnection mInputConnection; @NonNull private final AtomicReference<InputConnection> mInputConnectionRef; @NonNull private final Looper mLooper; private final Handler mH; private final Object mLock = new Object(); @GuardedBy("mLock") private boolean mFinished = false; private final InputMethodManager mParentInputMethodManager; private final WeakReference<View> mServedView; Loading @@ -185,7 +180,7 @@ final class RemoteInputConnectionImpl extends IRemoteInputConnection.Stub { RemoteInputConnectionImpl(@NonNull Looper looper, @NonNull InputConnection inputConnection, @NonNull InputMethodManager inputMethodManager, @Nullable View servedView) { mInputConnection = inputConnection; mInputConnectionRef = new AtomicReference<>(inputConnection); mLooper = looper; mH = new Handler(mLooper); mParentInputMethodManager = inputMethodManager; Loading @@ -197,9 +192,7 @@ final class RemoteInputConnectionImpl extends IRemoteInputConnection.Stub { */ @Nullable public InputConnection getInputConnection() { synchronized (mLock) { return mInputConnection; } return mInputConnectionRef.get(); } /** Loading @@ -215,9 +208,7 @@ final class RemoteInputConnectionImpl extends IRemoteInputConnection.Stub { * {@link InputConnection#closeConnection()} as a result of {@link #deactivate()}. */ private boolean isFinished() { synchronized (mLock) { return mFinished; } return mInputConnectionRef.get() == null; } private boolean isActive() { Loading Loading @@ -386,10 +377,7 @@ final class RemoteInputConnectionImpl extends IRemoteInputConnection.Stub { // TODO(b/199934664): See if we can remove this by providing a default impl. } } finally { synchronized (mLock) { mInputConnection = null; mFinished = true; } mInputConnectionRef.set(null); Trace.traceEnd(Trace.TRACE_TAG_INPUT); } Loading Loading @@ -441,7 +429,6 @@ final class RemoteInputConnectionImpl extends IRemoteInputConnection.Stub { public String toString() { return "RemoteInputConnectionImpl{" + "connection=" + getInputConnection() + " finished=" + isFinished() + " mParentInputMethodManager.isActive()=" + mParentInputMethodManager.isActive() + " mServedView=" + mServedView.get() + "}"; Loading @@ -455,16 +442,14 @@ final class RemoteInputConnectionImpl extends IRemoteInputConnection.Stub { * {@link DumpableInputConnection#dumpDebug(ProtoOutputStream, long)}. */ public void dumpDebug(ProtoOutputStream proto, long fieldId) { synchronized (mLock) { final InputConnection ic = mInputConnectionRef.get(); // Check that the call is initiated in the target thread of the current InputConnection // {@link InputConnection#getHandler} since the messages to IInputConnectionWrapper are // executed on this thread. Otherwise the messages are dispatched to the correct thread // in IInputConnectionWrapper, but this is not wanted while dumpng, for performance // in IInputConnectionWrapper, but this is not wanted while dumping, for performance // reasons. if ((mInputConnection instanceof DumpableInputConnection) && mLooper.isCurrentThread()) { ((DumpableInputConnection) mInputConnection).dumpDebug(proto, fieldId); } if ((ic instanceof DumpableInputConnection) && mLooper.isCurrentThread()) { ((DumpableInputConnection) ic).dumpDebug(proto, fieldId); } } Loading Loading
core/java/android/view/inputmethod/RemoteInputConnectionImpl.java +15 −30 Original line number Diff line number Diff line Loading @@ -43,7 +43,6 @@ import android.view.KeyEvent; import android.view.View; import android.view.ViewRootImpl; import com.android.internal.annotations.GuardedBy; import com.android.internal.infra.AndroidFuture; import com.android.internal.inputmethod.IRemoteAccessibilityInputConnection; import com.android.internal.inputmethod.IRemoteInputConnection; Loading @@ -54,6 +53,7 @@ import java.lang.annotation.Retention; import java.lang.ref.WeakReference; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; import java.util.function.Supplier; Loading Loading @@ -158,18 +158,13 @@ final class RemoteInputConnectionImpl extends IRemoteInputConnection.Stub { boolean cancellable(); } @GuardedBy("mLock") @Nullable private InputConnection mInputConnection; @NonNull private final AtomicReference<InputConnection> mInputConnectionRef; @NonNull private final Looper mLooper; private final Handler mH; private final Object mLock = new Object(); @GuardedBy("mLock") private boolean mFinished = false; private final InputMethodManager mParentInputMethodManager; private final WeakReference<View> mServedView; Loading @@ -185,7 +180,7 @@ final class RemoteInputConnectionImpl extends IRemoteInputConnection.Stub { RemoteInputConnectionImpl(@NonNull Looper looper, @NonNull InputConnection inputConnection, @NonNull InputMethodManager inputMethodManager, @Nullable View servedView) { mInputConnection = inputConnection; mInputConnectionRef = new AtomicReference<>(inputConnection); mLooper = looper; mH = new Handler(mLooper); mParentInputMethodManager = inputMethodManager; Loading @@ -197,9 +192,7 @@ final class RemoteInputConnectionImpl extends IRemoteInputConnection.Stub { */ @Nullable public InputConnection getInputConnection() { synchronized (mLock) { return mInputConnection; } return mInputConnectionRef.get(); } /** Loading @@ -215,9 +208,7 @@ final class RemoteInputConnectionImpl extends IRemoteInputConnection.Stub { * {@link InputConnection#closeConnection()} as a result of {@link #deactivate()}. */ private boolean isFinished() { synchronized (mLock) { return mFinished; } return mInputConnectionRef.get() == null; } private boolean isActive() { Loading Loading @@ -386,10 +377,7 @@ final class RemoteInputConnectionImpl extends IRemoteInputConnection.Stub { // TODO(b/199934664): See if we can remove this by providing a default impl. } } finally { synchronized (mLock) { mInputConnection = null; mFinished = true; } mInputConnectionRef.set(null); Trace.traceEnd(Trace.TRACE_TAG_INPUT); } Loading Loading @@ -441,7 +429,6 @@ final class RemoteInputConnectionImpl extends IRemoteInputConnection.Stub { public String toString() { return "RemoteInputConnectionImpl{" + "connection=" + getInputConnection() + " finished=" + isFinished() + " mParentInputMethodManager.isActive()=" + mParentInputMethodManager.isActive() + " mServedView=" + mServedView.get() + "}"; Loading @@ -455,16 +442,14 @@ final class RemoteInputConnectionImpl extends IRemoteInputConnection.Stub { * {@link DumpableInputConnection#dumpDebug(ProtoOutputStream, long)}. */ public void dumpDebug(ProtoOutputStream proto, long fieldId) { synchronized (mLock) { final InputConnection ic = mInputConnectionRef.get(); // Check that the call is initiated in the target thread of the current InputConnection // {@link InputConnection#getHandler} since the messages to IInputConnectionWrapper are // executed on this thread. Otherwise the messages are dispatched to the correct thread // in IInputConnectionWrapper, but this is not wanted while dumpng, for performance // in IInputConnectionWrapper, but this is not wanted while dumping, for performance // reasons. if ((mInputConnection instanceof DumpableInputConnection) && mLooper.isCurrentThread()) { ((DumpableInputConnection) mInputConnection).dumpDebug(proto, fieldId); } if ((ic instanceof DumpableInputConnection) && mLooper.isCurrentThread()) { ((DumpableInputConnection) ic).dumpDebug(proto, fieldId); } } Loading