InputBindResult.java revision 2553e48886958039f038d4d10cfb0f7f22b3eb5b
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 192553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawaimport static java.lang.annotation.RetentionPolicy.SOURCE; 202553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa 212553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawaimport android.annotation.IntDef; 222553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawaimport android.content.ComponentName; 232553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawaimport android.content.Intent; 242553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawaimport android.content.ServiceConnection; 252553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawaimport android.os.IBinder; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable; 282553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawaimport android.os.UserHandle; 29c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brownimport android.view.InputChannel; 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 312553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawaimport java.lang.annotation.Retention; 322553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Bundle of information returned by input method manager about a successful 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * binding to an input method. 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic final class InputBindResult implements Parcelable { 382553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa 392553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa @Retention(SOURCE) 402553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa @IntDef({ 412553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa ResultCode.SUCCESS_WITH_IME_SESSION, 422553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa ResultCode.SUCCESS_WAITING_IME_SESSION, 432553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa ResultCode.SUCCESS_WAITING_IME_BINDING, 442553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa ResultCode.SUCCESS_REPORT_WINDOW_FOCUS_ONLY, 452553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa ResultCode.ERROR_NULL, 462553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa ResultCode.ERROR_NO_IME, 472553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa ResultCode.ERROR_INVALID_PACKAGE_NAME, 482553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa ResultCode.ERROR_SYSTEM_NOT_READY, 492553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa ResultCode.ERROR_IME_NOT_CONNECTED, 502553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa ResultCode.ERROR_INVALID_USER, 512553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa ResultCode.ERROR_NULL_EDITOR_INFO, 522553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa ResultCode.ERROR_NOT_IME_TARGET_WINDOW, 532553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa }) 542553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa public @interface ResultCode { 552553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 562553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Indicates that everything in this result object including {@link #method} is valid. 572553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 582553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa int SUCCESS_WITH_IME_SESSION = 0; 592553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 602553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Indicates that this is a temporary binding until the 612553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * {@link android.inputmethodservice.InputMethodService} (IMS) establishes a valid session 622553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * to {@link com.android.server.InputMethodManagerService} (IMMS). 632553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * 642553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * <p>Note that in this state the IMS is already bound to IMMS but the logical session 652553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * is not yet established on top of the IPC channel.</p> 662553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * 672553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * <p>Some of fields such as {@link #channel} is not yet available.</p> 682553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * 692553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * @see android.inputmethodservice.InputMethodService##onCreateInputMethodSessionInterface() 702553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa **/ 712553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa int SUCCESS_WAITING_IME_SESSION = 1; 722553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 732553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Indicates that this is a temporary binding until the 742553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * {@link android.inputmethodservice.InputMethodService} (IMS) establishes a valid session 752553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * to {@link com.android.server.InputMethodManagerService} (IMMS). 762553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * 772553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * <p>Note that in this state the IMMS has already initiated a connection to the IMS but 782553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * the binding process is not completed yet.</p> 792553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * 802553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * <p>Some of fields such as {@link #channel} is not yet available.</p> 812553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * @see android.content.ServiceConnection#onServiceConnected(ComponentName, IBinder) 822553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 832553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa int SUCCESS_WAITING_IME_BINDING = 2; 842553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 852553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Indicates that this is not intended for starting input but just for reporting window 862553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * focus change from the application process. 872553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * 882553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * <p>All other fields do not have meaningful value.</p> 892553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 902553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa int SUCCESS_REPORT_WINDOW_FOCUS_ONLY = 3; 912553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 922553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Indicates somehow 932553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * {@link com.android.server.InputMethodManagerService#startInputOrWindowGainedFocus} is 942553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * trying to return null {@link InputBindResult}, which must never happen. 952553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 962553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa int ERROR_NULL = 4; 972553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 982553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Indicates that {@link com.android.server.InputMethodManagerService} recognizes no IME. 992553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 1002553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa int ERROR_NO_IME = 5; 1012553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 1022553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Indicates that {@link android.view.inputmethod.EditorInfo#packageName} does not match 1032553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * the caller UID. 1042553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * 1052553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * @see android.view.inputmethod.EditorInfo#packageName 1062553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 1072553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa int ERROR_INVALID_PACKAGE_NAME = 6; 1082553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 1092553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Indicates that the system is still in an early stage of the boot process and any 3rd 1102553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * party application is not allowed to run. 1112553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * 1122553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * @see com.android.server.SystemService#PHASE_THIRD_PARTY_APPS_CAN_START 1132553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 1142553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa int ERROR_SYSTEM_NOT_READY = 7; 1152553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 1162553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Indicates that {@link com.android.server.InputMethodManagerService} tried to connect to 1172553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * an {@link android.inputmethodservice.InputMethodService} but failed. 1182553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * 1192553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * @see android.content.Context#bindServiceAsUser(Intent, ServiceConnection, int, UserHandle) 1202553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 1212553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa int ERROR_IME_NOT_CONNECTED = 8; 1222553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 1232553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Indicates that the caller is not the foreground user (or does not have 1242553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL} permission). 1252553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 1262553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa int ERROR_INVALID_USER = 9; 1272553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 1282553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Indicates that the caller should have specified non-null 1292553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * {@link android.view.inputmethod.EditorInfo}. 1302553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 1312553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa int ERROR_NULL_EDITOR_INFO = 10; 1322553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 1332553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Indicates that the target window the client specified cannot be the IME target right now. 1342553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * 1352553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * <p>Due to the asynchronous nature of Android OS, we cannot completely avoid this error. 1362553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * The client should try to restart input when its {@link android.view.Window} is focused 1372553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * again.</p> 1382553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * 1392553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * @see com.android.server.wm.WindowManagerService#inputMethodClientHasFocus(IInputMethodClient) 1402553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 1412553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa int ERROR_NOT_IME_TARGET_WINDOW = 11; 1422553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa } 1432553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa 1442553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa @ResultCode 1452553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa public final int result; 1462553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The input method service. 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final IInputMethodSession method; 151c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown 152c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown /** 153c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown * The input channel used to send input events to this IME. 154c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown */ 155c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown public final InputChannel channel; 156c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The ID for this input method, as found in InputMethodInfo; null if 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no input method will be bound. 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final String id; 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sequence number of this binding. 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final int sequence; 1673d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa 1683d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa /** 1693d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa * Sequence number of user action notification. 1703d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa */ 1713d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa public final int userActionNotificationSequenceNumber; 1723d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa 1732553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa public InputBindResult(@ResultCode int _result, 1742553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa IInputMethodSession _method, InputChannel _channel, 1753d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa String _id, int _sequence, int _userActionNotificationSequenceNumber) { 1762553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa result = _result; 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project method = _method; 178c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown channel = _channel; 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project id = _id; 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sequence = _sequence; 1813d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa userActionNotificationSequenceNumber = _userActionNotificationSequenceNumber; 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1832553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project InputBindResult(Parcel source) { 1852553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa result = source.readInt(); 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project method = IInputMethodSession.Stub.asInterface(source.readStrongBinder()); 187c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown if (source.readInt() != 0) { 188c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown channel = InputChannel.CREATOR.createFromParcel(source); 189c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown } else { 190c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown channel = null; 191c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown } 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project id = source.readString(); 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sequence = source.readInt(); 1943d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa userActionNotificationSequenceNumber = source.readInt(); 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 196c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 1992553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "InputBindResult{result=" + getResultString() + " method="+ method + " id=" + id 2002553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa + " sequence=" + sequence 2012553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa + " userActionNotificationSequenceNumber=" + userActionNotificationSequenceNumber 2023d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa + "}"; 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Used to package this object into a {@link Parcel}. 207c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown * 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param dest The {@link Parcel} to be written. 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param flags The flags used for parceling. 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 211c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown @Override 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel dest, int flags) { 2132553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa dest.writeInt(result); 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeStrongInterface(method); 215c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown if (channel != null) { 216c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown dest.writeInt(1); 2171951ce86c21445ac191e4d2d95233f4f5c096b56Jeff Brown channel.writeToParcel(dest, flags); 218c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown } else { 219c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown dest.writeInt(0); 220c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown } 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(id); 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(sequence); 2233d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa dest.writeInt(userActionNotificationSequenceNumber); 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Used to make this class parcelable. 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 229c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown public static final Parcelable.Creator<InputBindResult> CREATOR = 230c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown new Parcelable.Creator<InputBindResult>() { 231c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown @Override 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public InputBindResult createFromParcel(Parcel source) { 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new InputBindResult(source); 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 236c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown @Override 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public InputBindResult[] newArray(int size) { 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new InputBindResult[size]; 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 242c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown @Override 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 244c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown return channel != null ? channel.describeContents() : 0; 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2462553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa 2472553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa public String getResultString() { 2482553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa switch (result) { 2492553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.SUCCESS_WITH_IME_SESSION: 2502553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "SUCCESS_WITH_IME_SESSION"; 2512553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.SUCCESS_WAITING_IME_SESSION: 2522553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "SUCCESS_WAITING_IME_SESSION"; 2532553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.SUCCESS_WAITING_IME_BINDING: 2542553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "SUCCESS_WAITING_IME_BINDING"; 2552553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.SUCCESS_REPORT_WINDOW_FOCUS_ONLY: 2562553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "SUCCESS_REPORT_WINDOW_FOCUS_ONLY"; 2572553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.ERROR_NULL: 2582553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "ERROR_NULL"; 2592553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.ERROR_NO_IME: 2602553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "ERROR_NO_IME"; 2612553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.ERROR_INVALID_PACKAGE_NAME: 2622553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "ERROR_INVALID_PACKAGE_NAME"; 2632553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.ERROR_SYSTEM_NOT_READY: 2642553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "ERROR_SYSTEM_NOT_READY"; 2652553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.ERROR_IME_NOT_CONNECTED: 2662553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "ERROR_IME_NOT_CONNECTED"; 2672553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.ERROR_INVALID_USER: 2682553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "ERROR_INVALID_USER"; 2692553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.ERROR_NULL_EDITOR_INFO: 2702553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "ERROR_NULL_EDITOR_INFO"; 2712553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.ERROR_NOT_IME_TARGET_WINDOW: 2722553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "ERROR_NOT_IME_TARGET_WINDOW"; 2732553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa default: 2742553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "Unknown(" + result + ")"; 2752553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa } 2762553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa } 2772553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa 2782553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa private static InputBindResult error(@ResultCode int result) { 2792553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return new InputBindResult(result, null, null, null, -1, -1); 2802553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa } 2812553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa 2822553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 2832553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Predefined error object for {@link ResultCode#ERROR_NULL}. 2842553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 2852553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa public static final InputBindResult NULL = error(ResultCode.ERROR_NULL); 2862553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 2872553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Predefined error object for {@link ResultCode#NO_IME}. 2882553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 2892553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa public static final InputBindResult NO_IME = error(ResultCode.ERROR_NO_IME); 2902553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 2912553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Predefined error object for {@link ResultCode#ERROR_INVALID_PACKAGE_NAME}. 2922553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 2932553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa public static final InputBindResult INVALID_PACKAGE_NAME = 2942553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa error(ResultCode.ERROR_INVALID_PACKAGE_NAME); 2952553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 2962553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Predefined error object for {@link ResultCode#ERROR_NULL_EDITOR_INFO}. 2972553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 2982553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa public static final InputBindResult NULL_EDITOR_INFO = error(ResultCode.ERROR_NULL_EDITOR_INFO); 2992553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 3002553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Predefined error object for {@link ResultCode#ERROR_NOT_IME_TARGET_WINDOW}. 3012553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 3022553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa public static final InputBindResult NOT_IME_TARGET_WINDOW = 3032553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa error(ResultCode.ERROR_NOT_IME_TARGET_WINDOW); 3042553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 3052553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Predefined error object for {@link ResultCode#ERROR_IME_NOT_CONNECTED}. 3062553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 3072553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa public static final InputBindResult IME_NOT_CONNECTED = 3082553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa error(ResultCode.ERROR_IME_NOT_CONNECTED); 3092553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 3102553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Predefined error object for {@link ResultCode#ERROR_INVALID_USER}. 3112553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 3122553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa public static final InputBindResult INVALID_USER = error(ResultCode.ERROR_INVALID_USER); 3132553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 315