| /* |
| * Copyright (C) 2007-2008 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 com.android.internal.view; |
| |
| import android.os.Parcel; |
| import android.os.Parcelable; |
| import android.view.InputChannel; |
| |
| /** |
| * Bundle of information returned by input method manager about a successful |
| * binding to an input method. |
| */ |
| public final class InputBindResult implements Parcelable { |
| static final String TAG = "InputBindResult"; |
| |
| /** |
| * The input method service. |
| */ |
| public final IInputMethodSession method; |
| |
| /** |
| * The input channel used to send input events to this IME. |
| */ |
| public final InputChannel channel; |
| |
| /** |
| * The ID for this input method, as found in InputMethodInfo; null if |
| * no input method will be bound. |
| */ |
| public final String id; |
| |
| /** |
| * Sequence number of this binding. |
| */ |
| public final int sequence; |
| |
| /** |
| * Sequence number of user action notification. |
| */ |
| public final int userActionNotificationSequenceNumber; |
| |
| public InputBindResult(IInputMethodSession _method, InputChannel _channel, |
| String _id, int _sequence, int _userActionNotificationSequenceNumber) { |
| method = _method; |
| channel = _channel; |
| id = _id; |
| sequence = _sequence; |
| userActionNotificationSequenceNumber = _userActionNotificationSequenceNumber; |
| } |
| |
| InputBindResult(Parcel source) { |
| method = IInputMethodSession.Stub.asInterface(source.readStrongBinder()); |
| if (source.readInt() != 0) { |
| channel = InputChannel.CREATOR.createFromParcel(source); |
| } else { |
| channel = null; |
| } |
| id = source.readString(); |
| sequence = source.readInt(); |
| userActionNotificationSequenceNumber = source.readInt(); |
| } |
| |
| @Override |
| public String toString() { |
| return "InputBindResult{" + method + " " + id |
| + " sequence:" + sequence |
| + " userActionNotificationSequenceNumber:" + userActionNotificationSequenceNumber |
| + "}"; |
| } |
| |
| /** |
| * Used to package this object into a {@link Parcel}. |
| * |
| * @param dest The {@link Parcel} to be written. |
| * @param flags The flags used for parceling. |
| */ |
| @Override |
| public void writeToParcel(Parcel dest, int flags) { |
| dest.writeStrongInterface(method); |
| if (channel != null) { |
| dest.writeInt(1); |
| channel.writeToParcel(dest, flags); |
| } else { |
| dest.writeInt(0); |
| } |
| dest.writeString(id); |
| dest.writeInt(sequence); |
| dest.writeInt(userActionNotificationSequenceNumber); |
| } |
| |
| /** |
| * Used to make this class parcelable. |
| */ |
| public static final Parcelable.Creator<InputBindResult> CREATOR = |
| new Parcelable.Creator<InputBindResult>() { |
| @Override |
| public InputBindResult createFromParcel(Parcel source) { |
| return new InputBindResult(source); |
| } |
| |
| @Override |
| public InputBindResult[] newArray(int size) { |
| return new InputBindResult[size]; |
| } |
| }; |
| |
| @Override |
| public int describeContents() { |
| return channel != null ? channel.describeContents() : 0; |
| } |
| } |