• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2020 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 import android.os.IBinder;
23 import android.view.View;
24 import android.view.WindowManager;
25 import android.view.WindowManager.LayoutParams;
26 import android.view.inputmethod.EditorInfo;
27 import android.view.inputmethod.ImeProtoEnums;
28 import android.view.inputmethod.InputMethodManager;
29 
30 import java.lang.annotation.Retention;
31 
32 /**
33  * Describes the reason why Soft input window visible / hidden.
34  */
35 @Retention(SOURCE)
36 @IntDef(value = {
37         SoftInputShowHideReason.NOT_SET,
38         SoftInputShowHideReason.SHOW_SOFT_INPUT,
39         SoftInputShowHideReason.ATTACH_NEW_INPUT,
40         SoftInputShowHideReason.SHOW_SOFT_INPUT_FROM_IME,
41         SoftInputShowHideReason.HIDE_SOFT_INPUT,
42         SoftInputShowHideReason.HIDE_SOFT_INPUT_FROM_IME,
43         SoftInputShowHideReason.SHOW_AUTO_EDITOR_FORWARD_NAV,
44         SoftInputShowHideReason.SHOW_STATE_VISIBLE_FORWARD_NAV,
45         SoftInputShowHideReason.SHOW_STATE_ALWAYS_VISIBLE,
46         SoftInputShowHideReason.SHOW_SETTINGS_ON_CHANGE,
47         SoftInputShowHideReason.HIDE_SWITCH_USER,
48         SoftInputShowHideReason.HIDE_INVALID_USER,
49         SoftInputShowHideReason.HIDE_UNSPECIFIED_WINDOW,
50         SoftInputShowHideReason.HIDE_STATE_HIDDEN_FORWARD_NAV,
51         SoftInputShowHideReason.HIDE_ALWAYS_HIDDEN_STATE,
52         SoftInputShowHideReason.HIDE_RESET_SHELL_COMMAND,
53         SoftInputShowHideReason.HIDE_SETTINGS_ON_CHANGE,
54         SoftInputShowHideReason.HIDE_POWER_BUTTON_GO_HOME,
55         SoftInputShowHideReason.HIDE_DOCKED_STACK_ATTACHED,
56         SoftInputShowHideReason.HIDE_RECENTS_ANIMATION,
57         SoftInputShowHideReason.HIDE_BUBBLES,
58         SoftInputShowHideReason.HIDE_SAME_WINDOW_FOCUSED_WITHOUT_EDITOR,
59         SoftInputShowHideReason.HIDE_REMOVE_CLIENT,
60         SoftInputShowHideReason.SHOW_RESTORE_IME_VISIBILITY,
61         SoftInputShowHideReason.SHOW_TOGGLE_SOFT_INPUT,
62         SoftInputShowHideReason.HIDE_TOGGLE_SOFT_INPUT,
63         SoftInputShowHideReason.SHOW_SOFT_INPUT_BY_INSETS_API,
64         SoftInputShowHideReason.HIDE_DISPLAY_IME_POLICY_HIDE,
65         SoftInputShowHideReason.HIDE_SOFT_INPUT_BY_INSETS_API,
66         SoftInputShowHideReason.HIDE_SOFT_INPUT_BY_BACK_KEY,
67         SoftInputShowHideReason.HIDE_SOFT_INPUT_IME_TOGGLE_SOFT_INPUT,
68         SoftInputShowHideReason.HIDE_SOFT_INPUT_EXTRACT_INPUT_CHANGED,
69         SoftInputShowHideReason.HIDE_SOFT_INPUT_IMM_DEPRECATION,
70         SoftInputShowHideReason.HIDE_WINDOW_GAINED_FOCUS_WITHOUT_EDITOR,
71         SoftInputShowHideReason.SHOW_IME_SCREENSHOT_FROM_IMMS,
72         SoftInputShowHideReason.REMOVE_IME_SCREENSHOT_FROM_IMMS,
73         SoftInputShowHideReason.HIDE_WHEN_INPUT_TARGET_INVISIBLE,
74         SoftInputShowHideReason.HIDE_CLOSE_CURRENT_SESSION,
75         SoftInputShowHideReason.HIDE_SOFT_INPUT_FROM_VIEW,
76         SoftInputShowHideReason.SHOW_SOFT_INPUT_LEGACY_DIRECT,
77         SoftInputShowHideReason.HIDE_SOFT_INPUT_LEGACY_DIRECT,
78         SoftInputShowHideReason.SHOW_WINDOW_LEGACY_DIRECT,
79         SoftInputShowHideReason.HIDE_WINDOW_LEGACY_DIRECT,
80         SoftInputShowHideReason.RESET_NEW_CONFIGURATION,
81         SoftInputShowHideReason.UPDATE_CANDIDATES_VIEW_VISIBILITY,
82         SoftInputShowHideReason.CONTROLS_CHANGED,
83         SoftInputShowHideReason.DISPLAY_CONFIGURATION_CHANGED,
84         SoftInputShowHideReason.DISPLAY_INSETS_CHANGED,
85         SoftInputShowHideReason.DISPLAY_CONTROLS_CHANGED,
86         SoftInputShowHideReason.UNBIND_CURRENT_METHOD,
87         SoftInputShowHideReason.HIDE_SOFT_INPUT_ON_ANIMATION_STATE_CHANGED,
88         SoftInputShowHideReason.HIDE_SOFT_INPUT_REQUEST_HIDE_WITH_CONTROL,
89         SoftInputShowHideReason.SHOW_SOFT_INPUT_IME_TOGGLE_SOFT_INPUT,
90         SoftInputShowHideReason.SHOW_SOFT_INPUT_IMM_DEPRECATION,
91         SoftInputShowHideReason.CONTROL_WINDOW_INSETS_ANIMATION,
92         SoftInputShowHideReason.SHOW_INPUT_TARGET_CHANGED,
93         SoftInputShowHideReason.HIDE_INPUT_TARGET_CHANGED,
94         SoftInputShowHideReason.HIDE_WINDOW_LOST_FOCUS,
95         SoftInputShowHideReason.IME_REQUESTED_CHANGED_LISTENER,
96 })
97 public @interface SoftInputShowHideReason {
98     /** Default, undefined reason. */
99     int NOT_SET = ImeProtoEnums.REASON_NOT_SET;
100 
101     /** Show soft input by {@link android.view.inputmethod.InputMethodManager#showSoftInput}. */
102     int SHOW_SOFT_INPUT = ImeProtoEnums.REASON_SHOW_SOFT_INPUT;
103 
104     /** Show soft input when {@code InputMethodManagerService#attachNewInputLocked} called. */
105     int ATTACH_NEW_INPUT = ImeProtoEnums.REASON_ATTACH_NEW_INPUT;
106 
107     /** Show soft input by {@code InputMethodManagerService#showMySoftInput}. This is triggered when
108      *  the IME process try to show the keyboard.
109      *
110      * @see android.inputmethodservice.InputMethodService#requestShowSelf(int)
111      */
112     int SHOW_SOFT_INPUT_FROM_IME = ImeProtoEnums.REASON_SHOW_SOFT_INPUT_FROM_IME;
113 
114     /**
115      * Hide soft input by
116      * {@link android.view.inputmethod.InputMethodManager#hideSoftInputFromWindow}.
117      */
118     int HIDE_SOFT_INPUT = ImeProtoEnums.REASON_HIDE_SOFT_INPUT;
119 
120     /**
121      * Hide soft input by
122      * {@link android.inputmethodservice.InputMethodService#requestHideSelf(int)}.
123      */
124     int HIDE_SOFT_INPUT_FROM_IME = ImeProtoEnums.REASON_HIDE_SOFT_INPUT_FROM_IME;
125 
126     /**
127      * Show soft input when navigated forward to the window (with
128      * {@link LayoutParams#SOFT_INPUT_IS_FORWARD_NAVIGATION}) which the focused view is text
129      * editor and system will auto-show the IME when the window can resize or running on a large
130      * screen.
131      */
132     int SHOW_AUTO_EDITOR_FORWARD_NAV = ImeProtoEnums.REASON_SHOW_AUTO_EDITOR_FORWARD_NAV;
133 
134     /**
135      * Show soft input when navigated forward to the window with
136      * {@link LayoutParams#SOFT_INPUT_IS_FORWARD_NAVIGATION} and
137      * {@link LayoutParams#SOFT_INPUT_STATE_VISIBLE}.
138      */
139     int SHOW_STATE_VISIBLE_FORWARD_NAV = ImeProtoEnums.REASON_SHOW_STATE_VISIBLE_FORWARD_NAV;
140 
141     /**
142      * Show soft input when the window with {@link LayoutParams#SOFT_INPUT_STATE_ALWAYS_VISIBLE}.
143      */
144     int SHOW_STATE_ALWAYS_VISIBLE = ImeProtoEnums.REASON_SHOW_STATE_ALWAYS_VISIBLE;
145 
146     /**
147      * Show soft input during {@code InputMethodManagerService} receive changes from
148      * {@code SettingsProvider}.
149      */
150     int SHOW_SETTINGS_ON_CHANGE = ImeProtoEnums.REASON_SHOW_SETTINGS_ON_CHANGE;
151 
152     /** Hide soft input during switching user. */
153     int HIDE_SWITCH_USER = ImeProtoEnums.REASON_HIDE_SWITCH_USER;
154 
155     /** Hide soft input when the user is invalid. */
156     int HIDE_INVALID_USER = ImeProtoEnums.REASON_HIDE_INVALID_USER;
157 
158     /**
159      * Hide soft input when the window with {@link LayoutParams#SOFT_INPUT_STATE_UNSPECIFIED} which
160      * the focused view is not text editor.
161      */
162     int HIDE_UNSPECIFIED_WINDOW = ImeProtoEnums.REASON_HIDE_UNSPECIFIED_WINDOW;
163 
164     /**
165      * Hide soft input when navigated forward to the window with
166      * {@link LayoutParams#SOFT_INPUT_IS_FORWARD_NAVIGATION} and
167      * {@link LayoutParams#SOFT_INPUT_STATE_HIDDEN}.
168      */
169     int HIDE_STATE_HIDDEN_FORWARD_NAV = ImeProtoEnums.REASON_HIDE_STATE_HIDDEN_FORWARD_NAV;
170 
171     /**
172      * Hide soft input when the window with {@link LayoutParams#SOFT_INPUT_STATE_ALWAYS_HIDDEN}.
173      */
174     int HIDE_ALWAYS_HIDDEN_STATE = ImeProtoEnums.REASON_HIDE_ALWAYS_HIDDEN_STATE;
175 
176     /** Hide soft input when "adb shell ime <command>" called. */
177     int HIDE_RESET_SHELL_COMMAND = ImeProtoEnums.REASON_HIDE_RESET_SHELL_COMMAND;
178 
179     /**
180      * Hide soft input during {@code InputMethodManagerService} receive changes from
181      * {@code SettingsProvider}.
182      */
183     int HIDE_SETTINGS_ON_CHANGE = ImeProtoEnums.REASON_HIDE_SETTINGS_ON_CHANGE;
184 
185     /**
186      * Hide soft input from {@link com.android.server.policy.PhoneWindowManager} when setting
187      * {@link com.android.internal.R.integer#config_shortPressOnPowerBehavior} in config.xml as
188      * dismiss IME.
189      */
190     int HIDE_POWER_BUTTON_GO_HOME = ImeProtoEnums.REASON_HIDE_POWER_BUTTON_GO_HOME;
191 
192     /** Hide soft input when attaching docked stack. */
193     int HIDE_DOCKED_STACK_ATTACHED = ImeProtoEnums.REASON_HIDE_DOCKED_STACK_ATTACHED;
194 
195     /**
196      * Hide soft input when {@link com.android.server.wm.RecentsAnimationController} starts
197      * intercept touch from app window.
198      */
199     int HIDE_RECENTS_ANIMATION = ImeProtoEnums.REASON_HIDE_RECENTS_ANIMATION;
200 
201     /**
202      * Hide soft input when {@link com.android.wm.shell.bubbles.BubbleController} is expanding,
203      * switching, or collapsing Bubbles.
204      */
205     int HIDE_BUBBLES = ImeProtoEnums.REASON_HIDE_BUBBLES;
206 
207     /**
208      * Hide soft input when focusing the same window (e.g. screen turned-off and turn-on) which no
209      * valid focused editor.
210      *
211      * Note: From Android R, the window focus change callback is processed by InputDispatcher,
212      * some focus behavior changes (e.g. There are an activity with a dialog window, after
213      * screen turned-off and turned-on, before Android R the window focus sequence would be
214      * the activity first and then the dialog focused, however, in R the focus sequence would be
215      * only the dialog focused as it's the latest window with input focus) makes we need to hide
216      * soft-input when the same window focused again to align with the same behavior prior to R.
217      */
218     int HIDE_SAME_WINDOW_FOCUSED_WITHOUT_EDITOR =
219             ImeProtoEnums.REASON_HIDE_SAME_WINDOW_FOCUSED_WITHOUT_EDITOR;
220 
221     /**
222      * Hide soft input when a {@link com.android.internal.inputmethod.IInputMethodClient} is
223      * removed.
224      */
225     int HIDE_REMOVE_CLIENT = ImeProtoEnums.REASON_HIDE_REMOVE_CLIENT;
226 
227     /**
228      * Show soft input when the system invoking
229      * {@link com.android.server.wm.WindowManagerInternal#shouldRestoreImeVisibility}.
230      */
231     int SHOW_RESTORE_IME_VISIBILITY = ImeProtoEnums.REASON_SHOW_RESTORE_IME_VISIBILITY;
232 
233     /**
234      * Show soft input by
235      * {@link android.view.inputmethod.InputMethodManager#toggleSoftInput(int, int)};
236      */
237     int SHOW_TOGGLE_SOFT_INPUT = ImeProtoEnums.REASON_SHOW_TOGGLE_SOFT_INPUT;
238 
239     /**
240      * Hide soft input by
241      * {@link android.view.inputmethod.InputMethodManager#toggleSoftInput(int, int)};
242      */
243     int HIDE_TOGGLE_SOFT_INPUT = ImeProtoEnums.REASON_HIDE_TOGGLE_SOFT_INPUT;
244 
245     /**
246      * Show soft input by
247      * {@link android.view.InsetsController#show(int)};
248      */
249     int SHOW_SOFT_INPUT_BY_INSETS_API = ImeProtoEnums.REASON_SHOW_SOFT_INPUT_BY_INSETS_API;
250 
251     /**
252      * Hide soft input if Ime policy has been set to {@link WindowManager#DISPLAY_IME_POLICY_HIDE}.
253      * See also {@code InputMethodManagerService#mImeHiddenByDisplayPolicy}.
254      */
255     int HIDE_DISPLAY_IME_POLICY_HIDE = ImeProtoEnums.REASON_HIDE_DISPLAY_IME_POLICY_HIDE;
256 
257     /**
258      * Hide soft input by {@link android.view.InsetsController#hide(int)}.
259      */
260     int HIDE_SOFT_INPUT_BY_INSETS_API = ImeProtoEnums.REASON_HIDE_SOFT_INPUT_BY_INSETS_API;
261 
262     /**
263      * Hide soft input by {@link android.inputmethodservice.InputMethodService#handleBack(boolean)}.
264      */
265     int HIDE_SOFT_INPUT_BY_BACK_KEY = ImeProtoEnums.REASON_HIDE_SOFT_INPUT_BY_BACK_KEY;
266 
267     /**
268      * Hide soft input by
269      * {@link android.inputmethodservice.InputMethodService#onToggleSoftInput(int, int)}.
270      */
271     int HIDE_SOFT_INPUT_IME_TOGGLE_SOFT_INPUT =
272             ImeProtoEnums.REASON_HIDE_SOFT_INPUT_IME_TOGGLE_SOFT_INPUT;
273 
274     /**
275      * Hide soft input by
276      * {@link android.inputmethodservice.InputMethodService#onExtractingInputChanged(EditorInfo)})}.
277      */
278     int HIDE_SOFT_INPUT_EXTRACT_INPUT_CHANGED =
279             ImeProtoEnums.REASON_HIDE_SOFT_INPUT_EXTRACT_INPUT_CHANGED;
280 
281     /**
282      * Hide soft input by the deprecated
283      * {@link InputMethodManager#hideSoftInputFromInputMethod(IBinder, int)}.
284      */
285     int HIDE_SOFT_INPUT_IMM_DEPRECATION = ImeProtoEnums.REASON_HIDE_SOFT_INPUT_IMM_DEPRECATION;
286 
287     /**
288      * Hide soft input when the window gained focus without an editor from the IME shown window.
289      */
290     int HIDE_WINDOW_GAINED_FOCUS_WITHOUT_EDITOR =
291             ImeProtoEnums.REASON_HIDE_WINDOW_GAINED_FOCUS_WITHOUT_EDITOR;
292 
293     /**
294      * Shows ime screenshot by {@link com.android.server.inputmethod.InputMethodManagerService}.
295      */
296     int SHOW_IME_SCREENSHOT_FROM_IMMS = ImeProtoEnums.REASON_SHOW_IME_SCREENSHOT_FROM_IMMS;
297 
298     /**
299      * Removes ime screenshot by {@link com.android.server.inputmethod.InputMethodManagerService}.
300      */
301     int REMOVE_IME_SCREENSHOT_FROM_IMMS = ImeProtoEnums.REASON_REMOVE_IME_SCREENSHOT_FROM_IMMS;
302 
303     /**
304      * Hide soft input when the input target being removed or being obscured by an non-IME
305      * focusable overlay window.
306      */
307     int HIDE_WHEN_INPUT_TARGET_INVISIBLE = ImeProtoEnums.REASON_HIDE_WHEN_INPUT_TARGET_INVISIBLE;
308 
309     /**
310      * Hide soft input when {@link InputMethodManager#closeCurrentInput()} gets called.
311      */
312     int HIDE_CLOSE_CURRENT_SESSION = ImeProtoEnums.REASON_HIDE_CLOSE_CURRENT_SESSION;
313 
314     /**
315      * Hide soft input when {@link InputMethodManager#hideSoftInputFromView(View, int)} gets called.
316      */
317     int HIDE_SOFT_INPUT_FROM_VIEW = ImeProtoEnums.REASON_HIDE_SOFT_INPUT_FROM_VIEW;
318 
319     /**
320      * Show soft input by legacy (discouraged) call to
321      * {@link android.inputmethodservice.InputMethodService.InputMethodImpl#showSoftInput}.
322      */
323     int SHOW_SOFT_INPUT_LEGACY_DIRECT = ImeProtoEnums.REASON_SHOW_SOFT_INPUT_LEGACY_DIRECT;
324 
325     /**
326      * Hide soft input by legacy (discouraged) call to
327      * {@link android.inputmethodservice.InputMethodService.InputMethodImpl#hideSoftInput}.
328      */
329     int HIDE_SOFT_INPUT_LEGACY_DIRECT = ImeProtoEnums.REASON_HIDE_SOFT_INPUT_LEGACY_DIRECT;
330 
331     /**
332      * Show soft input by legacy (discouraged) call to
333      * {@link android.inputmethodservice.InputMethodService#showWindow}.
334      */
335     int SHOW_WINDOW_LEGACY_DIRECT = ImeProtoEnums.REASON_SHOW_WINDOW_LEGACY_DIRECT;
336 
337     /**
338      * Hide soft input by legacy (discouraged) call to
339      * {@link android.inputmethodservice.InputMethodService#hideWindow}.
340      */
341     int HIDE_WINDOW_LEGACY_DIRECT = ImeProtoEnums.REASON_HIDE_WINDOW_LEGACY_DIRECT;
342 
343     /**
344      * Show / Hide soft input by
345      * {@link android.inputmethodservice.InputMethodService#resetStateForNewConfiguration}.
346      */
347     int RESET_NEW_CONFIGURATION = ImeProtoEnums.REASON_RESET_NEW_CONFIGURATION;
348 
349     /**
350      * Show / Hide soft input by
351      * {@link android.inputmethodservice.InputMethodService#updateCandidatesVisibility}.
352      */
353     int UPDATE_CANDIDATES_VIEW_VISIBILITY = ImeProtoEnums.REASON_UPDATE_CANDIDATES_VIEW_VISIBILITY;
354 
355     /**
356      * Show / Hide soft input by {@link android.view.InsetsController#onControlsChanged}.
357      */
358     int CONTROLS_CHANGED = ImeProtoEnums.REASON_CONTROLS_CHANGED;
359 
360     /**
361      * Show soft input by
362      * {@link com.android.wm.shell.common.DisplayImeController#onDisplayConfigurationChanged}.
363      */
364     int DISPLAY_CONFIGURATION_CHANGED = ImeProtoEnums.REASON_DISPLAY_CONFIGURATION_CHANGED;
365 
366     /**
367      * Show soft input by
368      * {@link com.android.wm.shell.common.DisplayImeController.PerDisplay#insetsChanged}.
369      */
370     int DISPLAY_INSETS_CHANGED = ImeProtoEnums.REASON_DISPLAY_INSETS_CHANGED;
371 
372     /**
373      * Show / Hide soft input by
374      * {@link com.android.wm.shell.common.DisplayImeController.PerDisplay#insetsControlChanged}.
375      */
376     int DISPLAY_CONTROLS_CHANGED = ImeProtoEnums.REASON_DISPLAY_CONTROLS_CHANGED;
377 
378     /** Hide soft input by
379      * {@link com.android.server.inputmethod.InputMethodManagerService#onUnbindCurrentMethodByReset}.
380      */
381     int UNBIND_CURRENT_METHOD = ImeProtoEnums.REASON_UNBIND_CURRENT_METHOD;
382 
383     /** Hide soft input by {@link android.view.ImeInsetsSourceConsumer#onAnimationStateChanged}. */
384     int HIDE_SOFT_INPUT_ON_ANIMATION_STATE_CHANGED =
385             ImeProtoEnums.REASON_HIDE_SOFT_INPUT_ON_ANIMATION_STATE_CHANGED;
386 
387     /** Hide soft input when we already have a {@link android.view.InsetsSourceControl} by
388      * {@link android.view.ImeInsetsSourceConsumer#requestHide}.
389      */
390     int HIDE_SOFT_INPUT_REQUEST_HIDE_WITH_CONTROL =
391             ImeProtoEnums.REASON_HIDE_SOFT_INPUT_REQUEST_HIDE_WITH_CONTROL;
392 
393     /**
394      * Show soft input by
395      * {@link android.inputmethodservice.InputMethodService#onToggleSoftInput(int, int)}.
396      */
397     int SHOW_SOFT_INPUT_IME_TOGGLE_SOFT_INPUT =
398             ImeProtoEnums.REASON_SHOW_SOFT_INPUT_IME_TOGGLE_SOFT_INPUT;
399 
400     /**
401      * Show soft input by the deprecated
402      * {@link InputMethodManager#showSoftInputFromInputMethod(IBinder, int)}.
403      */
404     int SHOW_SOFT_INPUT_IMM_DEPRECATION = ImeProtoEnums.REASON_SHOW_SOFT_INPUT_IMM_DEPRECATION;
405 
406     /**
407      * Show / Hide soft input by application-controlled animation in
408      * {@link android.view.InsetsController#controlWindowInsetsAnimation}.
409      */
410     int CONTROL_WINDOW_INSETS_ANIMATION = ImeProtoEnums.REASON_CONTROL_WINDOW_INSETS_ANIMATION;
411 
412     /**
413      * Show soft input because the input target changed
414      * {@link com.android.server.wm.ImeInsetsSourceProvider#onInputTargetChanged}.
415      */
416     int SHOW_INPUT_TARGET_CHANGED = ImeProtoEnums.REASON_SHOW_INPUT_TARGET_CHANGED;
417 
418     /**
419      * Hide soft input because the input target changed by
420      * {@link com.android.server.wm.ImeInsetsSourceProvider#onInputTargetChanged}.
421      */
422     int HIDE_INPUT_TARGET_CHANGED = ImeProtoEnums.REASON_HIDE_INPUT_TARGET_CHANGED;
423 
424     /** Hide soft input when the window lost focus. */
425     int HIDE_WINDOW_LOST_FOCUS = ImeProtoEnums.REASON_HIDE_WINDOW_LOST_FOCUS;
426 
427     /**
428      * Show / Hide soft input by
429      *  {@link com.android.server.wm.WindowManagerInternal.OnImeRequestedChangedListener}
430      */
431     int IME_REQUESTED_CHANGED_LISTENER = ImeProtoEnums.REASON_IME_REQUESTED_CHANGED_LISTENER;
432 }
433