Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit abc4b8f0 authored by Yohei Yukawa's avatar Yohei Yukawa
Browse files

Revert "InputConnectionWrapper never supports null target."

This reverts commit 90bd3636.

Seems that the semantics of InputConnectionWrapper#setTarget() is more
complicated than I thought.  At least the following cases have worked
fine.

  case 1:
    InputConnectionWrapper wrapper =
            new InputConnectionWrapper(null, false);
    wrapper.SetTarget(ic);
    ...

  case 2:
    InputConnectionWrapper wrapper =
            new InputConnectionWrapper(null, true);
    wrapper.SetTarget(ic);
    ...

  case 3:
    InputConnectionWrapper wrapper =
            new InputConnectionWrapper(ic, true);
    wrapper.SetTarget(null);
    wrapper.SetTarget(ic2);
    ...

The previous code did not intended to break existing code.  Let's revert
it we decide how to deal with above cases.

Bug: 27407697
Change-Id: I8bc84d484ab0b27a02e74f11110430f70646e69a
parent 82197c33
Loading
Loading
Loading
Loading
+4 −18
Original line number Diff line number Diff line
@@ -16,41 +16,27 @@

package android.view.inputmethod;

import android.annotation.NonNull;
import android.os.Bundle;
import android.os.Handler;
import android.view.KeyEvent;

import static com.android.internal.util.Preconditions.checkNotNull;

/**
 * <p>Wrapper class for proxying calls to another InputConnection.  Subclass
 * and have fun!
 */
public class InputConnectionWrapper implements InputConnection {
    @NonNull
    private InputConnection mTarget;
    final boolean mMutable;
    
    /**
     * Initializes the wrapper for the given {@link InputConnection}.
     * @param target the {@link InputConnection} to be wrapped.
     * @param mutable {@code true} if the wrapper is to be mutable.
     * @throws NullPointerException if {@code target} is {@code null}.
     */
    public InputConnectionWrapper(@NonNull InputConnection target, boolean mutable) {
        checkNotNull(target);
    public InputConnectionWrapper(InputConnection target, boolean mutable) {
        mMutable = mutable;
        mTarget = target;
    }

    /**
     * Change the target of the input connection.
     * @param target the {@link InputConnection} to be wrapped.
     * @throws NullPointerException if {@code target} is {@code null}.
     */
    public void setTarget(@NonNull InputConnection target) {
        checkNotNull(target);
    public void setTarget(InputConnection target) {
        if (mTarget != null && !mMutable) {
            throw new SecurityException("not mutable");
        }