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; 1422f731c5585391e94dc80cbf19ce3fea1b088d322Tarandeep Singh /** 1432f731c5585391e94dc80cbf19ce3fea1b088d322Tarandeep Singh * Indicates that focused view in the current window is not an editor. 1442f731c5585391e94dc80cbf19ce3fea1b088d322Tarandeep Singh */ 1452f731c5585391e94dc80cbf19ce3fea1b088d322Tarandeep Singh int ERROR_NO_EDITOR = 12; 1462553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa } 1472553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa 1482553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa @ResultCode 1492553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa public final int result; 1502553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The input method service. 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final IInputMethodSession method; 155c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown 156c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown /** 157c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown * The input channel used to send input events to this IME. 158c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown */ 159c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown public final InputChannel channel; 160c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The ID for this input method, as found in InputMethodInfo; null if 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no input method will be bound. 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final String id; 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sequence number of this binding. 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final int sequence; 1713d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa 1723d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa /** 1733d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa * Sequence number of user action notification. 1743d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa */ 1753d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa public final int userActionNotificationSequenceNumber; 1763d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa 1772553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa public InputBindResult(@ResultCode int _result, 1782553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa IInputMethodSession _method, InputChannel _channel, 1793d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa String _id, int _sequence, int _userActionNotificationSequenceNumber) { 1802553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa result = _result; 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project method = _method; 182c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown channel = _channel; 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project id = _id; 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sequence = _sequence; 1853d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa userActionNotificationSequenceNumber = _userActionNotificationSequenceNumber; 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1872553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project InputBindResult(Parcel source) { 1892553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa result = source.readInt(); 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project method = IInputMethodSession.Stub.asInterface(source.readStrongBinder()); 191c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown if (source.readInt() != 0) { 192c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown channel = InputChannel.CREATOR.createFromParcel(source); 193c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown } else { 194c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown channel = null; 195c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown } 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project id = source.readString(); 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sequence = source.readInt(); 1983d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa userActionNotificationSequenceNumber = source.readInt(); 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 200c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 2032553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "InputBindResult{result=" + getResultString() + " method="+ method + " id=" + id 2042553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa + " sequence=" + sequence 2052553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa + " userActionNotificationSequenceNumber=" + userActionNotificationSequenceNumber 2063d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa + "}"; 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Used to package this object into a {@link Parcel}. 211c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown * 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param dest The {@link Parcel} to be written. 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param flags The flags used for parceling. 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 215c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown @Override 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel dest, int flags) { 2172553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa dest.writeInt(result); 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeStrongInterface(method); 219c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown if (channel != null) { 220c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown dest.writeInt(1); 2211951ce86c21445ac191e4d2d95233f4f5c096b56Jeff Brown channel.writeToParcel(dest, flags); 222c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown } else { 223c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown dest.writeInt(0); 224c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown } 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(id); 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(sequence); 2273d1e8129ebd69db49d80e5d598f608c59b884cdfYohei Yukawa dest.writeInt(userActionNotificationSequenceNumber); 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Used to make this class parcelable. 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 233c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown public static final Parcelable.Creator<InputBindResult> CREATOR = 234c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown new Parcelable.Creator<InputBindResult>() { 235c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown @Override 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public InputBindResult createFromParcel(Parcel source) { 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new InputBindResult(source); 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 240c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown @Override 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public InputBindResult[] newArray(int size) { 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new InputBindResult[size]; 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 246c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown @Override 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 248c28867a1d67121ce5963de135e3ae2b1dbd9a33dJeff Brown return channel != null ? channel.describeContents() : 0; 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2502553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa 2512553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa public String getResultString() { 2522553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa switch (result) { 2532553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.SUCCESS_WITH_IME_SESSION: 2542553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "SUCCESS_WITH_IME_SESSION"; 2552553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.SUCCESS_WAITING_IME_SESSION: 2562553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "SUCCESS_WAITING_IME_SESSION"; 2572553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.SUCCESS_WAITING_IME_BINDING: 2582553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "SUCCESS_WAITING_IME_BINDING"; 2592553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.SUCCESS_REPORT_WINDOW_FOCUS_ONLY: 2602553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "SUCCESS_REPORT_WINDOW_FOCUS_ONLY"; 2612553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.ERROR_NULL: 2622553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "ERROR_NULL"; 2632553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.ERROR_NO_IME: 2642553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "ERROR_NO_IME"; 2652f731c5585391e94dc80cbf19ce3fea1b088d322Tarandeep Singh case ResultCode.ERROR_NO_EDITOR: 2662f731c5585391e94dc80cbf19ce3fea1b088d322Tarandeep Singh return "ERROR_NO_EDITOR"; 2672553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.ERROR_INVALID_PACKAGE_NAME: 2682553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "ERROR_INVALID_PACKAGE_NAME"; 2692553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.ERROR_SYSTEM_NOT_READY: 2702553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "ERROR_SYSTEM_NOT_READY"; 2712553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.ERROR_IME_NOT_CONNECTED: 2722553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "ERROR_IME_NOT_CONNECTED"; 2732553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.ERROR_INVALID_USER: 2742553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "ERROR_INVALID_USER"; 2752553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.ERROR_NULL_EDITOR_INFO: 2762553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "ERROR_NULL_EDITOR_INFO"; 2772553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa case ResultCode.ERROR_NOT_IME_TARGET_WINDOW: 2782553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "ERROR_NOT_IME_TARGET_WINDOW"; 2792553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa default: 2802553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return "Unknown(" + result + ")"; 2812553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa } 2822553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa } 2832553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa 2842553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa private static InputBindResult error(@ResultCode int result) { 2852553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa return new InputBindResult(result, null, null, null, -1, -1); 2862553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa } 2872553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa 2882553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 2892553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Predefined error object for {@link ResultCode#ERROR_NULL}. 2902553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 2912553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa public static final InputBindResult NULL = error(ResultCode.ERROR_NULL); 2922553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 2932553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Predefined error object for {@link ResultCode#NO_IME}. 2942553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 2952553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa public static final InputBindResult NO_IME = error(ResultCode.ERROR_NO_IME); 2962553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 2972f731c5585391e94dc80cbf19ce3fea1b088d322Tarandeep Singh * Predefined error object for {@link ResultCode#NO_EDITOR}. 2982f731c5585391e94dc80cbf19ce3fea1b088d322Tarandeep Singh */ 2992f731c5585391e94dc80cbf19ce3fea1b088d322Tarandeep Singh public static final InputBindResult NO_EDITOR = error(ResultCode.ERROR_NO_EDITOR); 3002f731c5585391e94dc80cbf19ce3fea1b088d322Tarandeep Singh /** 3012553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Predefined error object for {@link ResultCode#ERROR_INVALID_PACKAGE_NAME}. 3022553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 3032553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa public static final InputBindResult INVALID_PACKAGE_NAME = 3042553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa error(ResultCode.ERROR_INVALID_PACKAGE_NAME); 3052553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 3062553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Predefined error object for {@link ResultCode#ERROR_NULL_EDITOR_INFO}. 3072553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 3082553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa public static final InputBindResult NULL_EDITOR_INFO = error(ResultCode.ERROR_NULL_EDITOR_INFO); 3092553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 3102553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Predefined error object for {@link ResultCode#ERROR_NOT_IME_TARGET_WINDOW}. 3112553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 3122553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa public static final InputBindResult NOT_IME_TARGET_WINDOW = 3132553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa error(ResultCode.ERROR_NOT_IME_TARGET_WINDOW); 3142553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 3152553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Predefined error object for {@link ResultCode#ERROR_IME_NOT_CONNECTED}. 3162553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 3172553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa public static final InputBindResult IME_NOT_CONNECTED = 3182553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa error(ResultCode.ERROR_IME_NOT_CONNECTED); 3192553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa /** 3202553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa * Predefined error object for {@link ResultCode#ERROR_INVALID_USER}. 3212553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa */ 3222553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa public static final InputBindResult INVALID_USER = error(ResultCode.ERROR_INVALID_USER); 3232553e48886958039f038d4d10cfb0f7f22b3eb5bYohei Yukawa 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 325