blob: 3a3e56d59e7e9cb8ecff2b3b2188576929c21e0d [file] [log] [blame]
/*
* 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;
}
}