blob: 4e644fff06174861760f4780aae15185b9bbaad6 [file] [log] [blame]
Prabir Pradhan51e7db02022-02-07 06:02:57 -08001/**
2 * Copyright (c) 2022, 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
17package android.os;
18
19
20/**
21 * Input configurations flags used to determine the behavior of input windows.
22 * @hide
23 */
24@Backing(type="int")
25enum InputConfig {
26
27 /**
28 * The default InputConfig value with no flags set.
29 */
30 DEFAULT = 0,
31
32 /**
33 * Does not construct an input channel for this window. The channel will therefore
34 * be incapable of receiving input.
35 */
36 NO_INPUT_CHANNEL = 1 << 0,
37
38 /**
39 * Indicates that this input window is not visible, and thus will not be considered as
40 * an input target and will not obscure other windows.
41 */
42 NOT_VISIBLE = 1 << 1,
43
44 /**
45 * Indicates that this input window cannot be a focus target, and this will not
46 * receive any input events that can only be directed for the focused window, such
47 * as key events.
48 */
49 NOT_FOCUSABLE = 1 << 2,
50
51 /**
52 * Indicates that this input window cannot receive any events directed at a
53 * specific location on the screen, such as touchscreen, mouse, and stylus events.
54 * The window will not be considered as a touch target, but can still obscure other
55 * windows.
56 */
57 NOT_TOUCHABLE = 1 << 3,
58
59 /**
60 * Indicates that this window will not accept a touch event that is split between
61 * more than one window. When set:
62 * - If this window receives a DOWN event with the first pointer, all successive
63 * pointers that go down, regardless of their location on the screen, will be
64 * directed to this window;
65 * - If the DOWN event lands outside the touchable bounds of this window, no
66 * successive pointers that go down, regardless of their location on the screen,
67 * will be directed to this window.
68 */
69 PREVENT_SPLITTING = 1 << 4,
70
71 /**
72 * Indicates that this window shows the wallpaper behind it, so all touch events
73 * that it receives should also be sent to the wallpaper.
74 */
75 DUPLICATE_TOUCH_TO_WALLPAPER = 1 << 5,
76
77 /** Indicates that this the wallpaper's input window. */
78 IS_WALLPAPER = 1 << 6,
79
80 /**
81 * Indicates that input events should not be dispatched to this window. When set,
82 * input events directed towards this window will simply be dropped, and will not
83 * be dispatched to windows behind it.
84 */
85 PAUSE_DISPATCHING = 1 << 7,
86
87 /**
88 * This flag is set when the window is of a trusted type that is allowed to silently
89 * overlay other windows for the purpose of implementing the secure views feature.
90 * Trusted overlays, such as IME windows, can partly obscure other windows without causing
91 * motion events to be delivered to them with AMOTION_EVENT_FLAG_WINDOW_IS_OBSCURED.
92 */
93 TRUSTED_OVERLAY = 1 << 8,
94
95 /**
96 * Indicates that this window wants to listen for when there is a touch DOWN event
97 * that occurs outside its touchable bounds. When such an event occurs, this window
98 * will receive a MotionEvent with ACTION_OUTSIDE.
99 */
100 WATCH_OUTSIDE_TOUCH = 1 << 9,
101
102 /**
103 * When set, this flag allows touches to leave the current window whenever the finger
104 * moves above another window. When this happens, the window that touch has just left
105 * (the current window) will receive ACTION_CANCEL, and the window that touch has entered
106 * will receive ACTION_DOWN, and the remainder of the touch gesture will only go to the
107 * new window. Without this flag, the entire gesture is sent to the current window, even
108 * if the touch leaves the window's bounds.
109 */
110 SLIPPERY = 1 << 10,
111
112 /**
113 * When this window has focus, does not call user activity for all input events so
114 * the application will have to do it itself.
115 */
116 DISABLE_USER_ACTIVITY = 1 << 11,
117
118 /**
119 * Internal flag used to indicate that input should be dropped on this window.
120 */
121 DROP_INPUT = 1 << 12,
122
123 /**
124 * Internal flag used to indicate that input should be dropped on this window if this window
125 * is obscured.
126 */
127 DROP_INPUT_IF_OBSCURED = 1 << 13,
128
129 /**
130 * An input spy window. This window will receive all pointer events within its touchable
131 * area, but will not stop events from being sent to other windows below it in z-order.
132 * An input event will be dispatched to all spy windows above the top non-spy window at the
133 * event's coordinates.
134 */
135 SPY = 1 << 14,
136
137 /**
138 * When used with {@link #NOT_TOUCHABLE}, this window will continue to receive events from
139 * a stylus device within its touchable region. All other pointer events, such as from a
140 * mouse or touchscreen, will be dispatched to the windows behind it.
141 *
142 * This configuration has no effect when the config {@link #NOT_TOUCHABLE} is not set.
143 *
144 * It is not valid to set this configuration if {@link #TRUSTED_OVERLAY} is not set.
145 */
146 INTERCEPTS_STYLUS = 1 << 15,
chaviw8577ea82022-06-01 16:32:26 -0500147
148 /**
149 * The window is a clone of another window. This may be treated differently since there's
150 * likely a duplicate window with the same client token, but different bounds.
151 */
152 CLONE = 1 << 16,
Prabir Pradhan51e7db02022-02-07 06:02:57 -0800153}