[AAE display] Disable touch input when the display is off

Disable touch inputs when we turn the display off. This prevents
the user from waking the system by touching a dark display. (Which
could otherwise happen in Garage Mode.)

This CL also re-enables touch input when we turn the display on.

Fixes: 140564727
Test: On Hawk using 'adb shell dumpsys car_service suspend'

Merged-In: I29a218a4a98ab65ff1742143d7a4213e8f2c4eaa
Change-Id: I29a218a4a98ab65ff1742143d7a4213e8f2c4eaa
diff --git a/service/src/com/android/car/systeminterface/DisplayInterface.java b/service/src/com/android/car/systeminterface/DisplayInterface.java
index 4d8f180..d20a177 100644
--- a/service/src/com/android/car/systeminterface/DisplayInterface.java
+++ b/service/src/com/android/car/systeminterface/DisplayInterface.java
@@ -28,6 +28,7 @@
 import android.database.ContentObserver;
 import android.hardware.display.DisplayManager;
 import android.hardware.display.DisplayManager.DisplayListener;
+import android.hardware.input.InputManager;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.PowerManager;
@@ -41,6 +42,7 @@
 import android.view.Display;
 import android.view.DisplayAddress;
 import android.view.IWindowManager;
+import android.view.InputDevice;
 
 import com.android.car.CarLog;
 import com.android.car.CarPowerManagementService;
@@ -76,6 +78,7 @@
         private final ContentResolver mContentResolver;
         private final Context mContext;
         private final DisplayManager mDisplayManager;
+        private final InputManager mInputManager;
         private final int mMaximumBacklight;
         private final int mMinimumBacklight;
         private final PowerManager mPowerManager;
@@ -117,6 +120,7 @@
             mContext = context;
             mContentResolver = mContext.getContentResolver();
             mDisplayManager = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE);
+            mInputManager = (InputManager) mContext.getSystemService(Context.INPUT_SERVICE);
             mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
             mMaximumBacklight = mPowerManager.getMaximumScreenBrightnessSetting();
             mMinimumBacklight = mPowerManager.getMinimumScreenBrightnessSetting();
@@ -209,6 +213,19 @@
                 Log.i(CarLog.TAG_POWER, "off display");
                 mPowerManager.goToSleep(SystemClock.uptimeMillis());
             }
+            // Turn touchscreen input devices on or off, the same as the display
+            for (int deviceId : mInputManager.getInputDeviceIds()) {
+                InputDevice inputDevice = mInputManager.getInputDevice(deviceId);
+                if (inputDevice != null
+                        && (inputDevice.getSources() & InputDevice.SOURCE_TOUCHSCREEN)
+                        == InputDevice.SOURCE_TOUCHSCREEN) {
+                    if (on) {
+                        mInputManager.enableInputDevice(deviceId);
+                    } else {
+                        mInputManager.disableInputDevice(deviceId);
+                    }
+                }
+            }
         }
 
         @Override