Loading core/java/com/android/internal/view/IInputConnectionWrapper.java +86 −59 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.internal.view; import com.android.internal.annotations.GuardedBy; import com.android.internal.os.SomeArgs; import android.annotation.NonNull; import android.annotation.Nullable; Loading Loading @@ -74,13 +75,6 @@ public abstract class IInputConnectionWrapper extends IInputContext.Stub { @GuardedBy("mLock") private boolean mFinished = false; static class SomeArgs { Object arg1; Object arg2; IInputContextCallback callback; int seq; } class MyHandler extends Handler { MyHandler(Looper looper) { super(looper); Loading Loading @@ -241,80 +235,100 @@ public abstract class IInputConnectionWrapper extends IInputContext.Stub { case DO_GET_TEXT_AFTER_CURSOR: { SomeArgs args = (SomeArgs)msg.obj; try { final IInputContextCallback callback = (IInputContextCallback) args.arg6; final int callbackSeq = args.argi6; InputConnection ic = getInputConnection(); if (ic == null || !isActive()) { Log.w(TAG, "getTextAfterCursor on inactive InputConnection"); args.callback.setTextAfterCursor(null, args.seq); callback.setTextAfterCursor(null, callbackSeq); return; } args.callback.setTextAfterCursor(ic.getTextAfterCursor( msg.arg1, msg.arg2), args.seq); callback.setTextAfterCursor(ic.getTextAfterCursor( msg.arg1, msg.arg2), callbackSeq); } catch (RemoteException e) { Log.w(TAG, "Got RemoteException calling setTextAfterCursor", e); } finally { args.recycle(); } return; } case DO_GET_TEXT_BEFORE_CURSOR: { SomeArgs args = (SomeArgs)msg.obj; try { final IInputContextCallback callback = (IInputContextCallback) args.arg6; final int callbackSeq = args.argi6; InputConnection ic = getInputConnection(); if (ic == null || !isActive()) { Log.w(TAG, "getTextBeforeCursor on inactive InputConnection"); args.callback.setTextBeforeCursor(null, args.seq); callback.setTextBeforeCursor(null, callbackSeq); return; } args.callback.setTextBeforeCursor(ic.getTextBeforeCursor( msg.arg1, msg.arg2), args.seq); callback.setTextBeforeCursor(ic.getTextBeforeCursor( msg.arg1, msg.arg2), callbackSeq); } catch (RemoteException e) { Log.w(TAG, "Got RemoteException calling setTextBeforeCursor", e); } finally { args.recycle(); } return; } case DO_GET_SELECTED_TEXT: { SomeArgs args = (SomeArgs)msg.obj; try { final IInputContextCallback callback = (IInputContextCallback) args.arg6; final int callbackSeq = args.argi6; InputConnection ic = getInputConnection(); if (ic == null || !isActive()) { Log.w(TAG, "getSelectedText on inactive InputConnection"); args.callback.setSelectedText(null, args.seq); callback.setSelectedText(null, callbackSeq); return; } args.callback.setSelectedText(ic.getSelectedText( msg.arg1), args.seq); callback.setSelectedText(ic.getSelectedText( msg.arg1), callbackSeq); } catch (RemoteException e) { Log.w(TAG, "Got RemoteException calling setSelectedText", e); } finally { args.recycle(); } return; } case DO_GET_CURSOR_CAPS_MODE: { SomeArgs args = (SomeArgs)msg.obj; try { final IInputContextCallback callback = (IInputContextCallback) args.arg6; final int callbackSeq = args.argi6; InputConnection ic = getInputConnection(); if (ic == null || !isActive()) { Log.w(TAG, "getCursorCapsMode on inactive InputConnection"); args.callback.setCursorCapsMode(0, args.seq); callback.setCursorCapsMode(0, callbackSeq); return; } args.callback.setCursorCapsMode(ic.getCursorCapsMode(msg.arg1), args.seq); callback.setCursorCapsMode(ic.getCursorCapsMode(msg.arg1), callbackSeq); } catch (RemoteException e) { Log.w(TAG, "Got RemoteException calling setCursorCapsMode", e); } finally { args.recycle(); } return; } case DO_GET_EXTRACTED_TEXT: { SomeArgs args = (SomeArgs)msg.obj; try { final IInputContextCallback callback = (IInputContextCallback) args.arg6; final int callbackSeq = args.argi6; InputConnection ic = getInputConnection(); if (ic == null || !isActive()) { Log.w(TAG, "getExtractedText on inactive InputConnection"); args.callback.setExtractedText(null, args.seq); callback.setExtractedText(null, callbackSeq); return; } args.callback.setExtractedText(ic.getExtractedText( (ExtractedTextRequest)args.arg1, msg.arg1), args.seq); callback.setExtractedText(ic.getExtractedText( (ExtractedTextRequest)args.arg1, msg.arg1), callbackSeq); } catch (RemoteException e) { Log.w(TAG, "Got RemoteException calling setExtractedText", e); } finally { args.recycle(); } return; } Loading Loading @@ -469,29 +483,37 @@ public abstract class IInputConnectionWrapper extends IInputContext.Stub { return; } case DO_PERFORM_PRIVATE_COMMAND: { final SomeArgs args = (SomeArgs) msg.obj; try { final String action = (String) args.arg1; final Bundle data = (Bundle) args.arg2; InputConnection ic = getInputConnection(); if (ic == null || !isActive()) { Log.w(TAG, "performPrivateCommand on inactive InputConnection"); return; } SomeArgs args = (SomeArgs)msg.obj; ic.performPrivateCommand((String)args.arg1, (Bundle)args.arg2); return; ic.performPrivateCommand(action, data); } finally { args.recycle(); } } case DO_REQUEST_UPDATE_CURSOR_ANCHOR_INFO: { SomeArgs args = (SomeArgs)msg.obj; try { final IInputContextCallback callback = (IInputContextCallback) args.arg6; final int callbackSeq = args.argi6; InputConnection ic = getInputConnection(); if (ic == null || !isActive()) { Log.w(TAG, "requestCursorAnchorInfo on inactive InputConnection"); args.callback.setRequestUpdateCursorAnchorInfoResult(false, args.seq); callback.setRequestUpdateCursorAnchorInfoResult(false, callbackSeq); return; } args.callback.setRequestUpdateCursorAnchorInfoResult( ic.requestCursorUpdates(msg.arg1), args.seq); callback.setRequestUpdateCursorAnchorInfoResult( ic.requestCursorUpdates(msg.arg1), callbackSeq); } catch (RemoteException e) { Log.w(TAG, "Got RemoteException calling requestCursorAnchorInfo", e); } finally { args.recycle(); } return; } Loading Loading @@ -529,24 +551,28 @@ public abstract class IInputConnectionWrapper extends IInputContext.Stub { final int flags = msg.arg1; SomeArgs args = (SomeArgs) msg.obj; try { final IInputContextCallback callback = (IInputContextCallback) args.arg6; final int callbackSeq = args.argi6; InputConnection ic = getInputConnection(); if (ic == null || !isActive()) { Log.w(TAG, "commitContent on inactive InputConnection"); args.callback.setCommitContentResult(false, args.seq); callback.setCommitContentResult(false, callbackSeq); return; } final InputContentInfo inputContentInfo = (InputContentInfo) args.arg1; if (inputContentInfo == null || !inputContentInfo.validate()) { Log.w(TAG, "commitContent with invalid inputContentInfo=" + inputContentInfo); args.callback.setCommitContentResult(false, args.seq); callback.setCommitContentResult(false, callbackSeq); return; } final boolean result = ic.commitContent(inputContentInfo, flags, (Bundle) args.arg2); args.callback.setCommitContentResult(result, args.seq); callback.setCommitContentResult(result, callbackSeq); } catch (RemoteException e) { Log.w(TAG, "Got RemoteException calling commitContent", e); } finally { args.recycle(); } return; } Loading @@ -566,36 +592,37 @@ public abstract class IInputConnectionWrapper extends IInputContext.Stub { return mH.obtainMessage(what, 0, 0, arg1); } Message obtainMessageISC(int what, int arg1, int seq, IInputContextCallback callback) { SomeArgs args = new SomeArgs(); args.callback = callback; args.seq = seq; Message obtainMessageISC(int what, int arg1, int callbackSeq, IInputContextCallback callback) { final SomeArgs args = SomeArgs.obtain(); args.arg6 = callback; args.argi6 = callbackSeq; return mH.obtainMessage(what, arg1, 0, args); } Message obtainMessageIISC(int what, int arg1, int arg2, int seq, IInputContextCallback callback) { SomeArgs args = new SomeArgs(); args.callback = callback; args.seq = seq; Message obtainMessageIISC(int what, int arg1, int arg2, int callbackSeq, IInputContextCallback callback) { final SomeArgs args = SomeArgs.obtain(); args.arg6 = callback; args.argi6 = callbackSeq; return mH.obtainMessage(what, arg1, arg2, args); } Message obtainMessageIOOSC(int what, int arg1, Object objArg1, Object objArg2, int seq, Message obtainMessageIOOSC(int what, int arg1, Object objArg1, Object objArg2, int callbackSeq, IInputContextCallback callback) { SomeArgs args = new SomeArgs(); final SomeArgs args = SomeArgs.obtain(); args.arg1 = objArg1; args.arg2 = objArg2; args.callback = callback; args.seq = seq; args.arg6 = callback; args.argi6 = callbackSeq; return mH.obtainMessage(what, arg1, 0, args); } Message obtainMessageIOSC(int what, int arg1, Object arg2, int seq, Message obtainMessageIOSC(int what, int arg1, Object arg2, int callbackSeq, IInputContextCallback callback) { SomeArgs args = new SomeArgs(); final SomeArgs args = SomeArgs.obtain(); args.arg1 = arg2; args.callback = callback; args.seq = seq; args.arg6 = callback; args.argi6 = callbackSeq; return mH.obtainMessage(what, arg1, 0, args); } Loading @@ -604,7 +631,7 @@ public abstract class IInputConnectionWrapper extends IInputContext.Stub { } Message obtainMessageOO(int what, Object arg1, Object arg2) { SomeArgs args = new SomeArgs(); final SomeArgs args = SomeArgs.obtain(); args.arg1 = arg1; args.arg2 = arg2; return mH.obtainMessage(what, 0, 0, args); Loading Loading
core/java/com/android/internal/view/IInputConnectionWrapper.java +86 −59 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.internal.view; import com.android.internal.annotations.GuardedBy; import com.android.internal.os.SomeArgs; import android.annotation.NonNull; import android.annotation.Nullable; Loading Loading @@ -74,13 +75,6 @@ public abstract class IInputConnectionWrapper extends IInputContext.Stub { @GuardedBy("mLock") private boolean mFinished = false; static class SomeArgs { Object arg1; Object arg2; IInputContextCallback callback; int seq; } class MyHandler extends Handler { MyHandler(Looper looper) { super(looper); Loading Loading @@ -241,80 +235,100 @@ public abstract class IInputConnectionWrapper extends IInputContext.Stub { case DO_GET_TEXT_AFTER_CURSOR: { SomeArgs args = (SomeArgs)msg.obj; try { final IInputContextCallback callback = (IInputContextCallback) args.arg6; final int callbackSeq = args.argi6; InputConnection ic = getInputConnection(); if (ic == null || !isActive()) { Log.w(TAG, "getTextAfterCursor on inactive InputConnection"); args.callback.setTextAfterCursor(null, args.seq); callback.setTextAfterCursor(null, callbackSeq); return; } args.callback.setTextAfterCursor(ic.getTextAfterCursor( msg.arg1, msg.arg2), args.seq); callback.setTextAfterCursor(ic.getTextAfterCursor( msg.arg1, msg.arg2), callbackSeq); } catch (RemoteException e) { Log.w(TAG, "Got RemoteException calling setTextAfterCursor", e); } finally { args.recycle(); } return; } case DO_GET_TEXT_BEFORE_CURSOR: { SomeArgs args = (SomeArgs)msg.obj; try { final IInputContextCallback callback = (IInputContextCallback) args.arg6; final int callbackSeq = args.argi6; InputConnection ic = getInputConnection(); if (ic == null || !isActive()) { Log.w(TAG, "getTextBeforeCursor on inactive InputConnection"); args.callback.setTextBeforeCursor(null, args.seq); callback.setTextBeforeCursor(null, callbackSeq); return; } args.callback.setTextBeforeCursor(ic.getTextBeforeCursor( msg.arg1, msg.arg2), args.seq); callback.setTextBeforeCursor(ic.getTextBeforeCursor( msg.arg1, msg.arg2), callbackSeq); } catch (RemoteException e) { Log.w(TAG, "Got RemoteException calling setTextBeforeCursor", e); } finally { args.recycle(); } return; } case DO_GET_SELECTED_TEXT: { SomeArgs args = (SomeArgs)msg.obj; try { final IInputContextCallback callback = (IInputContextCallback) args.arg6; final int callbackSeq = args.argi6; InputConnection ic = getInputConnection(); if (ic == null || !isActive()) { Log.w(TAG, "getSelectedText on inactive InputConnection"); args.callback.setSelectedText(null, args.seq); callback.setSelectedText(null, callbackSeq); return; } args.callback.setSelectedText(ic.getSelectedText( msg.arg1), args.seq); callback.setSelectedText(ic.getSelectedText( msg.arg1), callbackSeq); } catch (RemoteException e) { Log.w(TAG, "Got RemoteException calling setSelectedText", e); } finally { args.recycle(); } return; } case DO_GET_CURSOR_CAPS_MODE: { SomeArgs args = (SomeArgs)msg.obj; try { final IInputContextCallback callback = (IInputContextCallback) args.arg6; final int callbackSeq = args.argi6; InputConnection ic = getInputConnection(); if (ic == null || !isActive()) { Log.w(TAG, "getCursorCapsMode on inactive InputConnection"); args.callback.setCursorCapsMode(0, args.seq); callback.setCursorCapsMode(0, callbackSeq); return; } args.callback.setCursorCapsMode(ic.getCursorCapsMode(msg.arg1), args.seq); callback.setCursorCapsMode(ic.getCursorCapsMode(msg.arg1), callbackSeq); } catch (RemoteException e) { Log.w(TAG, "Got RemoteException calling setCursorCapsMode", e); } finally { args.recycle(); } return; } case DO_GET_EXTRACTED_TEXT: { SomeArgs args = (SomeArgs)msg.obj; try { final IInputContextCallback callback = (IInputContextCallback) args.arg6; final int callbackSeq = args.argi6; InputConnection ic = getInputConnection(); if (ic == null || !isActive()) { Log.w(TAG, "getExtractedText on inactive InputConnection"); args.callback.setExtractedText(null, args.seq); callback.setExtractedText(null, callbackSeq); return; } args.callback.setExtractedText(ic.getExtractedText( (ExtractedTextRequest)args.arg1, msg.arg1), args.seq); callback.setExtractedText(ic.getExtractedText( (ExtractedTextRequest)args.arg1, msg.arg1), callbackSeq); } catch (RemoteException e) { Log.w(TAG, "Got RemoteException calling setExtractedText", e); } finally { args.recycle(); } return; } Loading Loading @@ -469,29 +483,37 @@ public abstract class IInputConnectionWrapper extends IInputContext.Stub { return; } case DO_PERFORM_PRIVATE_COMMAND: { final SomeArgs args = (SomeArgs) msg.obj; try { final String action = (String) args.arg1; final Bundle data = (Bundle) args.arg2; InputConnection ic = getInputConnection(); if (ic == null || !isActive()) { Log.w(TAG, "performPrivateCommand on inactive InputConnection"); return; } SomeArgs args = (SomeArgs)msg.obj; ic.performPrivateCommand((String)args.arg1, (Bundle)args.arg2); return; ic.performPrivateCommand(action, data); } finally { args.recycle(); } } case DO_REQUEST_UPDATE_CURSOR_ANCHOR_INFO: { SomeArgs args = (SomeArgs)msg.obj; try { final IInputContextCallback callback = (IInputContextCallback) args.arg6; final int callbackSeq = args.argi6; InputConnection ic = getInputConnection(); if (ic == null || !isActive()) { Log.w(TAG, "requestCursorAnchorInfo on inactive InputConnection"); args.callback.setRequestUpdateCursorAnchorInfoResult(false, args.seq); callback.setRequestUpdateCursorAnchorInfoResult(false, callbackSeq); return; } args.callback.setRequestUpdateCursorAnchorInfoResult( ic.requestCursorUpdates(msg.arg1), args.seq); callback.setRequestUpdateCursorAnchorInfoResult( ic.requestCursorUpdates(msg.arg1), callbackSeq); } catch (RemoteException e) { Log.w(TAG, "Got RemoteException calling requestCursorAnchorInfo", e); } finally { args.recycle(); } return; } Loading Loading @@ -529,24 +551,28 @@ public abstract class IInputConnectionWrapper extends IInputContext.Stub { final int flags = msg.arg1; SomeArgs args = (SomeArgs) msg.obj; try { final IInputContextCallback callback = (IInputContextCallback) args.arg6; final int callbackSeq = args.argi6; InputConnection ic = getInputConnection(); if (ic == null || !isActive()) { Log.w(TAG, "commitContent on inactive InputConnection"); args.callback.setCommitContentResult(false, args.seq); callback.setCommitContentResult(false, callbackSeq); return; } final InputContentInfo inputContentInfo = (InputContentInfo) args.arg1; if (inputContentInfo == null || !inputContentInfo.validate()) { Log.w(TAG, "commitContent with invalid inputContentInfo=" + inputContentInfo); args.callback.setCommitContentResult(false, args.seq); callback.setCommitContentResult(false, callbackSeq); return; } final boolean result = ic.commitContent(inputContentInfo, flags, (Bundle) args.arg2); args.callback.setCommitContentResult(result, args.seq); callback.setCommitContentResult(result, callbackSeq); } catch (RemoteException e) { Log.w(TAG, "Got RemoteException calling commitContent", e); } finally { args.recycle(); } return; } Loading @@ -566,36 +592,37 @@ public abstract class IInputConnectionWrapper extends IInputContext.Stub { return mH.obtainMessage(what, 0, 0, arg1); } Message obtainMessageISC(int what, int arg1, int seq, IInputContextCallback callback) { SomeArgs args = new SomeArgs(); args.callback = callback; args.seq = seq; Message obtainMessageISC(int what, int arg1, int callbackSeq, IInputContextCallback callback) { final SomeArgs args = SomeArgs.obtain(); args.arg6 = callback; args.argi6 = callbackSeq; return mH.obtainMessage(what, arg1, 0, args); } Message obtainMessageIISC(int what, int arg1, int arg2, int seq, IInputContextCallback callback) { SomeArgs args = new SomeArgs(); args.callback = callback; args.seq = seq; Message obtainMessageIISC(int what, int arg1, int arg2, int callbackSeq, IInputContextCallback callback) { final SomeArgs args = SomeArgs.obtain(); args.arg6 = callback; args.argi6 = callbackSeq; return mH.obtainMessage(what, arg1, arg2, args); } Message obtainMessageIOOSC(int what, int arg1, Object objArg1, Object objArg2, int seq, Message obtainMessageIOOSC(int what, int arg1, Object objArg1, Object objArg2, int callbackSeq, IInputContextCallback callback) { SomeArgs args = new SomeArgs(); final SomeArgs args = SomeArgs.obtain(); args.arg1 = objArg1; args.arg2 = objArg2; args.callback = callback; args.seq = seq; args.arg6 = callback; args.argi6 = callbackSeq; return mH.obtainMessage(what, arg1, 0, args); } Message obtainMessageIOSC(int what, int arg1, Object arg2, int seq, Message obtainMessageIOSC(int what, int arg1, Object arg2, int callbackSeq, IInputContextCallback callback) { SomeArgs args = new SomeArgs(); final SomeArgs args = SomeArgs.obtain(); args.arg1 = arg2; args.callback = callback; args.seq = seq; args.arg6 = callback; args.argi6 = callbackSeq; return mH.obtainMessage(what, arg1, 0, args); } Loading @@ -604,7 +631,7 @@ public abstract class IInputConnectionWrapper extends IInputContext.Stub { } Message obtainMessageOO(int what, Object arg1, Object arg2) { SomeArgs args = new SomeArgs(); final SomeArgs args = SomeArgs.obtain(); args.arg1 = arg1; args.arg2 = arg2; return mH.obtainMessage(what, 0, 0, args); Loading