/*
 * Copyright (C) 2007 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 android.os.Bundle;
import android.os.Handler;
import android.view.KeyEvent;

Wrapper class for proxying calls to another InputConnection. Subclass and have fun!

/** * <p>Wrapper class for proxying calls to another InputConnection. Subclass and have fun! */
public class InputConnectionWrapper implements InputConnection { private InputConnection mTarget; final boolean mMutable; @InputConnectionInspector.MissingMethodFlags private int mMissingMethodFlags;
Initializes a wrapper.

Caveat: Although the system can accept (InputConnection) null in some places, you cannot emulate such a behavior by non-null InputConnectionWrapper that has null in target.

Params:
  • target – the InputConnection to be proxied.
  • mutable – set true to protect this object from being reconfigured to target another InputConnection. Note that this is ignored while the target is null.
/** * Initializes a wrapper. * * <p><b>Caveat:</b> Although the system can accept {@code (InputConnection) null} in some * places, you cannot emulate such a behavior by non-null {@link InputConnectionWrapper} that * has {@code null} in {@code target}.</p> * @param target the {@link InputConnection} to be proxied. * @param mutable set {@code true} to protect this object from being reconfigured to target * another {@link InputConnection}. Note that this is ignored while the target is {@code null}. */
public InputConnectionWrapper(InputConnection target, boolean mutable) { mMutable = mutable; mTarget = target; mMissingMethodFlags = InputConnectionInspector.getMissingMethodFlags(target); }
Change the target of the input connection.

Caveat: Although the system can accept (InputConnection) null in some places, you cannot emulate such a behavior by non-null InputConnectionWrapper that has null in target.

Params:
Throws:
/** * Change the target of the input connection. * * <p><b>Caveat:</b> Although the system can accept {@code (InputConnection) null} in some * places, you cannot emulate such a behavior by non-null {@link InputConnectionWrapper} that * has {@code null} in {@code target}.</p> * @param target the {@link InputConnection} to be proxied. * @throws SecurityException when this wrapper has non-null target and is immutable. */
public void setTarget(InputConnection target) { if (mTarget != null && !mMutable) { throw new SecurityException("not mutable"); } mTarget = target; mMissingMethodFlags = InputConnectionInspector.getMissingMethodFlags(target); }
@hide
/** * @hide */
@InputConnectionInspector.MissingMethodFlags public int getMissingMethodFlags() { return mMissingMethodFlags; }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public CharSequence getTextBeforeCursor(int n, int flags) { return mTarget.getTextBeforeCursor(n, flags); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public CharSequence getTextAfterCursor(int n, int flags) { return mTarget.getTextAfterCursor(n, flags); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public CharSequence getSelectedText(int flags) { return mTarget.getSelectedText(flags); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public int getCursorCapsMode(int reqModes) { return mTarget.getCursorCapsMode(reqModes); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public ExtractedText getExtractedText(ExtractedTextRequest request, int flags) { return mTarget.getExtractedText(request, flags); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public boolean deleteSurroundingTextInCodePoints(int beforeLength, int afterLength) { return mTarget.deleteSurroundingTextInCodePoints(beforeLength, afterLength); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public boolean deleteSurroundingText(int beforeLength, int afterLength) { return mTarget.deleteSurroundingText(beforeLength, afterLength); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public boolean setComposingText(CharSequence text, int newCursorPosition) { return mTarget.setComposingText(text, newCursorPosition); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public boolean setComposingRegion(int start, int end) { return mTarget.setComposingRegion(start, end); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public boolean finishComposingText() { return mTarget.finishComposingText(); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public boolean commitText(CharSequence text, int newCursorPosition) { return mTarget.commitText(text, newCursorPosition); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public boolean commitCompletion(CompletionInfo text) { return mTarget.commitCompletion(text); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public boolean commitCorrection(CorrectionInfo correctionInfo) { return mTarget.commitCorrection(correctionInfo); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public boolean setSelection(int start, int end) { return mTarget.setSelection(start, end); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public boolean performEditorAction(int editorAction) { return mTarget.performEditorAction(editorAction); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public boolean performContextMenuAction(int id) { return mTarget.performContextMenuAction(id); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public boolean beginBatchEdit() { return mTarget.beginBatchEdit(); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public boolean endBatchEdit() { return mTarget.endBatchEdit(); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public boolean sendKeyEvent(KeyEvent event) { return mTarget.sendKeyEvent(event); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public boolean clearMetaKeyStates(int states) { return mTarget.clearMetaKeyStates(states); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public boolean reportFullscreenMode(boolean enabled) { return mTarget.reportFullscreenMode(enabled); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public boolean performPrivateCommand(String action, Bundle data) { return mTarget.performPrivateCommand(action, data); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public boolean requestCursorUpdates(int cursorUpdateMode) { return mTarget.requestCursorUpdates(cursorUpdateMode); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public Handler getHandler() { return mTarget.getHandler(); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public void closeConnection() { mTarget.closeConnection(); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws NullPointerException if the target is {@code null}. */
@Override public boolean commitContent(InputContentInfo inputContentInfo, int flags, Bundle opts) { return mTarget.commitContent(inputContentInfo, flags, opts); } }