19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007-2008 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); you may not
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * use this file except in compliance with the License. You may obtain a copy of
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * License for the specific language governing permissions and limitations under
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage com.android.internal.view;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable;
21c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brownimport android.view.InputChannel;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Bundle of information returned by input method manager about a successful
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * binding to an input method.
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic final class InputBindResult implements Parcelable {
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String TAG = "InputBindResult";
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The input method service.
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final IInputMethodSession method;
34c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown
35c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown    /**
36c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown     * The input channel used to send input events to this IME.
37c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown     */
38c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown    public final InputChannel channel;
39c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The ID for this input method, as found in InputMethodInfo; null if
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * no input method will be bound.
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final String id;
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Sequence number of this binding.
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final int sequence;
503d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa
513d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa    /**
523d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa     * Sequence number of user action notification.
533d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa     */
543d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa    public final int userActionNotificationSequenceNumber;
553d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa
56c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown    public InputBindResult(IInputMethodSession _method, InputChannel _channel,
573d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa            String _id, int _sequence, int _userActionNotificationSequenceNumber) {
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        method = _method;
59c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown        channel = _channel;
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        id = _id;
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sequence = _sequence;
623d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa        userActionNotificationSequenceNumber = _userActionNotificationSequenceNumber;
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    InputBindResult(Parcel source) {
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        method = IInputMethodSession.Stub.asInterface(source.readStrongBinder());
67c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown        if (source.readInt() != 0) {
68c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown            channel = InputChannel.CREATOR.createFromParcel(source);
69c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown        } else {
70c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown            channel = null;
71c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown        }
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        id = source.readString();
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sequence = source.readInt();
743d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa        userActionNotificationSequenceNumber = source.readInt();
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
76c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String toString() {
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return "InputBindResult{" + method + " " + id
803d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa                + " sequence:" + sequence
813d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa                + " userActionNotificationSequenceNumber:" + userActionNotificationSequenceNumber
823d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa                + "}";
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Used to package this object into a {@link Parcel}.
87c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown     *
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param dest The {@link Parcel} to be written.
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param flags The flags used for parceling.
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
91c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown    @Override
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void writeToParcel(Parcel dest, int flags) {
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeStrongInterface(method);
94c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown        if (channel != null) {
95c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown            dest.writeInt(1);
961951ce86c21445ac191e4d2d95233f4f5c096b56Jeff Brown            channel.writeToParcel(dest, flags);
97c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown        } else {
98c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown            dest.writeInt(0);
99c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown        }
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeString(id);
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeInt(sequence);
1023d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa        dest.writeInt(userActionNotificationSequenceNumber);
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Used to make this class parcelable.
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
108c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown    public static final Parcelable.Creator<InputBindResult> CREATOR =
109c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown            new Parcelable.Creator<InputBindResult>() {
110c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown        @Override
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public InputBindResult createFromParcel(Parcel source) {
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return new InputBindResult(source);
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
115c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown        @Override
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public InputBindResult[] newArray(int size) {
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return new InputBindResult[size];
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    };
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
121c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown    @Override
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int describeContents() {
123c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown        return channel != null ? channel.describeContents() : 0;
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
126