1 /*
2  * Copyright (C) 2018 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.internal.inputmethod;
18 
19 import static java.lang.annotation.RetentionPolicy.SOURCE;
20 
21 import android.annotation.IntDef;
22 
23 import java.lang.annotation.Retention;
24 
25 /**
26  * Describes the reason why {@link android.view.inputmethod.InputMethodManager} is calling
27  * {@link com.android.internal.view.IInputMethodManager#startInputOrWindowGainedFocus}.
28  */
29 @Retention(SOURCE)
30 @IntDef(value = {
31         StartInputReason.UNSPECIFIED,
32         StartInputReason.WINDOW_FOCUS_GAIN,
33         StartInputReason.WINDOW_FOCUS_GAIN_REPORT_ONLY,
34         StartInputReason.APP_CALLED_RESTART_INPUT_API,
35         StartInputReason.CHECK_FOCUS,
36         StartInputReason.BOUND_TO_IMMS,
37         StartInputReason.UNBOUND_FROM_IMMS,
38         StartInputReason.ACTIVATED_BY_IMMS,
39         StartInputReason.DEACTIVATED_BY_IMMS,
40         StartInputReason.SESSION_CREATED_BY_IME})
41 public @interface StartInputReason {
42     /**
43      * Reason is not specified.
44      */
45     int UNSPECIFIED = 0;
46     /**
47      * {@link android.view.Window} gained focus and it made the focused {@link android.view.View}
48      * to (re)start a new connection.
49      */
50     int WINDOW_FOCUS_GAIN = 1;
51     /**
52      * {@link android.view.Window} gained focus but there is no {@link android.view.View} that is
53      * eligible to have IME focus. {@link android.view.inputmethod.InputMethodManager} just reports
54      * this window focus change event.
55      */
56     int WINDOW_FOCUS_GAIN_REPORT_ONLY = 2;
57     /**
58      * {@link android.view.inputmethod.InputMethodManager#restartInput(android.view.View)} is
59      * either explicitly called by the application or indirectly called by some Framework class
60      * (e.g. {@link android.widget.EditText}).
61      */
62     int APP_CALLED_RESTART_INPUT_API = 3;
63     /**
64      * {@link android.view.View} requested a new connection because of view focus change.
65      */
66     int CHECK_FOCUS = 4;
67     /**
68      * {@link android.view.inputmethod.InputMethodManager} is responding to
69      * {@link com.android.internal.view.IInputMethodClient#onBindMethod}.
70      */
71     int BOUND_TO_IMMS = 5;
72     /**
73      * {@link android.view.inputmethod.InputMethodManager} is responding to
74      * {@link com.android.internal.view.IInputMethodClient#onUnbindMethod}.
75      */
76     int UNBOUND_FROM_IMMS = 6;
77     /**
78      * {@link android.view.inputmethod.InputMethodManager} is responding to
79      * {@link com.android.internal.view.IInputMethodClient#setActive}.
80      */
81     int ACTIVATED_BY_IMMS = 7;
82     /**
83      * {@link android.view.inputmethod.InputMethodManager} is responding to
84      * {@link com.android.internal.view.IInputMethodClient#setActive}.
85      */
86     int DEACTIVATED_BY_IMMS = 8;
87     /**
88      * {@link com.android.server.inputmethod.InputMethodManagerService} is responding to
89      * {@link com.android.internal.view.IInputSessionCallback#sessionCreated}.
90      */
91     int SESSION_CREATED_BY_IME = 9;
92 }
93