5353import android .os .Environment ;
5454import android .os .Handler ;
5555import android .os .IBinder ;
56+ import android .os .Looper ;
5657import android .os .Message ;
5758import android .os .MessageQueue ;
5859import android .os .Process ;
7071import android .view .InputEvent ;
7172import android .view .KeyEvent ;
7273import android .view .PointerIcon ;
73- import android .view .Surface ;
7474import android .view .ViewConfiguration ;
7575import android .view .WindowManagerPolicy ;
7676import android .widget .Toast ;
@@ -109,8 +109,9 @@ public class InputManagerService extends IInputManager.Stub
109109 private final int mPtr ;
110110
111111 private final Context mContext ;
112- private final Callbacks mCallbacks ;
113112 private final InputManagerHandler mHandler ;
113+
114+ private WindowManagerCallbacks mWindowManagerCallbacks ;
114115 private boolean mSystemReady ;
115116 private NotificationManager mNotificationManager ;
116117
@@ -217,15 +218,18 @@ private static native void nativeVibrate(int ptr, int deviceId, long[] pattern,
217218 /** Switch code: Keypad slide. When set, keyboard is exposed. */
218219 public static final int SW_KEYPAD_SLIDE = 0x0a ;
219220
220- public InputManagerService (Context context , Callbacks callbacks ) {
221+ public InputManagerService (Context context , Handler handler ) {
221222 this .mContext = context ;
222- this .mCallbacks = callbacks ;
223- this .mHandler = new InputManagerHandler ();
223+ this .mHandler = new InputManagerHandler (handler .getLooper ());
224224
225225 Slog .i (TAG , "Initializing input manager" );
226226 mPtr = nativeInit (this , mContext , mHandler .getLooper ().getQueue ());
227227 }
228228
229+ public void setWindowManagerCallbacks (WindowManagerCallbacks callbacks ) {
230+ mWindowManagerCallbacks = callbacks ;
231+ }
232+
229233 public void start () {
230234 Slog .i (TAG , "Starting input manager" );
231235 nativeStart (mPtr );
@@ -1204,7 +1208,7 @@ public void monitor() {
12041208
12051209 // Native callback.
12061210 private void notifyConfigurationChanged (long whenNanos ) {
1207- mCallbacks .notifyConfigurationChanged ();
1211+ mWindowManagerCallbacks .notifyConfigurationChanged ();
12081212 }
12091213
12101214 // Native callback.
@@ -1224,20 +1228,20 @@ private void notifyInputDevicesChanged(InputDevice[] inputDevices) {
12241228 private void notifySwitch (long whenNanos , int switchCode , int switchValue ) {
12251229 switch (switchCode ) {
12261230 case SW_LID :
1227- mCallbacks .notifyLidSwitchChanged (whenNanos , switchValue == 0 );
1231+ mWindowManagerCallbacks .notifyLidSwitchChanged (whenNanos , switchValue == 0 );
12281232 break ;
12291233 }
12301234 }
12311235
12321236 // Native callback.
12331237 private void notifyInputChannelBroken (InputWindowHandle inputWindowHandle ) {
1234- mCallbacks .notifyInputChannelBroken (inputWindowHandle );
1238+ mWindowManagerCallbacks .notifyInputChannelBroken (inputWindowHandle );
12351239 }
12361240
12371241 // Native callback.
12381242 private long notifyANR (InputApplicationHandle inputApplicationHandle ,
12391243 InputWindowHandle inputWindowHandle ) {
1240- return mCallbacks .notifyANR (inputApplicationHandle , inputWindowHandle );
1244+ return mWindowManagerCallbacks .notifyANR (inputApplicationHandle , inputWindowHandle );
12411245 }
12421246
12431247 // Native callback.
@@ -1258,25 +1262,25 @@ final boolean filterInputEvent(InputEvent event, int policyFlags) {
12581262
12591263 // Native callback.
12601264 private int interceptKeyBeforeQueueing (KeyEvent event , int policyFlags , boolean isScreenOn ) {
1261- return mCallbacks .interceptKeyBeforeQueueing (
1265+ return mWindowManagerCallbacks .interceptKeyBeforeQueueing (
12621266 event , policyFlags , isScreenOn );
12631267 }
12641268
12651269 // Native callback.
12661270 private int interceptMotionBeforeQueueingWhenScreenOff (int policyFlags ) {
1267- return mCallbacks .interceptMotionBeforeQueueingWhenScreenOff (policyFlags );
1271+ return mWindowManagerCallbacks .interceptMotionBeforeQueueingWhenScreenOff (policyFlags );
12681272 }
12691273
12701274 // Native callback.
12711275 private long interceptKeyBeforeDispatching (InputWindowHandle focus ,
12721276 KeyEvent event , int policyFlags ) {
1273- return mCallbacks .interceptKeyBeforeDispatching (focus , event , policyFlags );
1277+ return mWindowManagerCallbacks .interceptKeyBeforeDispatching (focus , event , policyFlags );
12741278 }
12751279
12761280 // Native callback.
12771281 private KeyEvent dispatchUnhandledKey (InputWindowHandle focus ,
12781282 KeyEvent event , int policyFlags ) {
1279- return mCallbacks .dispatchUnhandledKey (focus , event , policyFlags );
1283+ return mWindowManagerCallbacks .dispatchUnhandledKey (focus , event , policyFlags );
12801284 }
12811285
12821286 // Native callback.
@@ -1359,7 +1363,7 @@ private int getLongPressTimeout() {
13591363
13601364 // Native callback.
13611365 private int getPointerLayer () {
1362- return mCallbacks .getPointerLayer ();
1366+ return mWindowManagerCallbacks .getPointerLayer ();
13631367 }
13641368
13651369 // Native callback.
@@ -1414,7 +1418,7 @@ private String getDeviceAlias(String uniqueId) {
14141418 /**
14151419 * Callback interface implemented by the Window Manager.
14161420 */
1417- public interface Callbacks {
1421+ public interface WindowManagerCallbacks {
14181422 public void notifyConfigurationChanged ();
14191423
14201424 public void notifyLidSwitchChanged (long whenNanos , boolean lidOpen );
@@ -1441,8 +1445,8 @@ public KeyEvent dispatchUnhandledKey(InputWindowHandle focus,
14411445 * Private handler for the input manager.
14421446 */
14431447 private final class InputManagerHandler extends Handler {
1444- public InputManagerHandler () {
1445- super (true /*async*/ );
1448+ public InputManagerHandler (Looper looper ) {
1449+ super (looper , null , true /*async*/ );
14461450 }
14471451
14481452 @ Override
0 commit comments