Merge "Handle pointer location setting in InputSettingsObserver" into udc-qpr-dev
diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java
index 6a177e0..3a8f9d5 100644
--- a/services/core/java/com/android/server/input/InputManagerService.java
+++ b/services/core/java/com/android/server/input/InputManagerService.java
@@ -2800,6 +2800,11 @@
void notifyConfigurationChanged();
/**
+ * This callback is invoked when the pointer location changes.
+ */
+ void notifyPointerLocationChanged(boolean pointerLocationEnabled);
+
+ /**
* This callback is invoked when the camera lens cover switch changes state.
* @param whenNanos the time when the change occurred
* @param lensCovered true is the lens is covered
@@ -3381,6 +3386,10 @@
}
}
+ void updatePointerLocationEnabled(boolean enabled) {
+ mWindowManagerCallbacks.notifyPointerLocationChanged(enabled);
+ }
+
void updateFocusEventDebugViewEnabled(boolean enabled) {
FocusEventDebugView view;
synchronized (mFocusEventDebugViewLock) {
diff --git a/services/core/java/com/android/server/input/InputSettingsObserver.java b/services/core/java/com/android/server/input/InputSettingsObserver.java
index 42591f4..a608b4f 100644
--- a/services/core/java/com/android/server/input/InputSettingsObserver.java
+++ b/services/core/java/com/android/server/input/InputSettingsObserver.java
@@ -67,6 +67,8 @@
(reason) -> updateTouchpadRightClickZoneEnabled()),
Map.entry(Settings.System.getUriFor(Settings.System.SHOW_TOUCHES),
(reason) -> updateShowTouches()),
+ Map.entry(Settings.System.getUriFor(Settings.System.POINTER_LOCATION),
+ (reason) -> updatePointerLocation()),
Map.entry(
Settings.Secure.getUriFor(Settings.Secure.ACCESSIBILITY_LARGE_POINTER_ICON),
(reason) -> updateAccessibilityLargePointer()),
@@ -149,6 +151,11 @@
mNative.setShowTouches(getBoolean(Settings.System.SHOW_TOUCHES, false));
}
+ private void updatePointerLocation() {
+ mService.updatePointerLocationEnabled(
+ getBoolean(Settings.System.POINTER_LOCATION, false));
+ }
+
private void updateShowKeyPresses() {
mService.updateFocusEventDebugViewEnabled(
getBoolean(Settings.System.SHOW_KEY_PRESSES, false));
diff --git a/services/core/java/com/android/server/wm/InputManagerCallback.java b/services/core/java/com/android/server/wm/InputManagerCallback.java
index 0a47fe0..20595ea 100644
--- a/services/core/java/com/android/server/wm/InputManagerCallback.java
+++ b/services/core/java/com/android/server/wm/InputManagerCallback.java
@@ -128,6 +128,21 @@
}
}
+ /** Notifies that the pointer location configuration has changed. */
+ @Override
+ public void notifyPointerLocationChanged(boolean pointerLocationEnabled) {
+ if (mService.mPointerLocationEnabled == pointerLocationEnabled) {
+ return;
+ }
+
+ synchronized (mService.mGlobalLock) {
+ mService.mPointerLocationEnabled = pointerLocationEnabled;
+ mService.mRoot.forAllDisplayPolicies(
+ p -> p.setPointerLocationEnabled(mService.mPointerLocationEnabled)
+ );
+ }
+ }
+
/** Notifies that the lid switch changed state. */
@Override
public void notifyLidSwitchChanged(long whenNanos, boolean lidOpen) {
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 9be12d70..0e19671 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -763,8 +763,6 @@
Settings.Secure.getUriFor(Settings.Secure.IMMERSIVE_MODE_CONFIRMATIONS);
private final Uri mPolicyControlUri =
Settings.Global.getUriFor(Settings.Global.POLICY_CONTROL);
- private final Uri mPointerLocationUri =
- Settings.System.getUriFor(Settings.System.POINTER_LOCATION);
private final Uri mForceDesktopModeOnExternalDisplaysUri = Settings.Global.getUriFor(
Settings.Global.DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS);
private final Uri mFreeformWindowUri = Settings.Global.getUriFor(
@@ -792,7 +790,6 @@
resolver.registerContentObserver(mImmersiveModeConfirmationsUri, false, this,
UserHandle.USER_ALL);
resolver.registerContentObserver(mPolicyControlUri, false, this, UserHandle.USER_ALL);
- resolver.registerContentObserver(mPointerLocationUri, false, this, UserHandle.USER_ALL);
resolver.registerContentObserver(mForceDesktopModeOnExternalDisplaysUri, false, this,
UserHandle.USER_ALL);
resolver.registerContentObserver(mFreeformWindowUri, false, this, UserHandle.USER_ALL);
@@ -816,11 +813,6 @@
return;
}
- if (mPointerLocationUri.equals(uri)) {
- updatePointerLocation();
- return;
- }
-
if (mForceDesktopModeOnExternalDisplaysUri.equals(uri)) {
updateForceDesktopModeOnExternalDisplays();
return;
@@ -869,7 +861,6 @@
void loadSettings() {
updateSystemUiSettings(false /* handleChange */);
- updatePointerLocation();
updateMaximumObscuringOpacityForTouch();
}
@@ -900,21 +891,6 @@
}
}
- void updatePointerLocation() {
- ContentResolver resolver = mContext.getContentResolver();
- final boolean enablePointerLocation = Settings.System.getIntForUser(resolver,
- Settings.System.POINTER_LOCATION, 0, UserHandle.USER_CURRENT) != 0;
-
- if (mPointerLocationEnabled == enablePointerLocation) {
- return;
- }
- mPointerLocationEnabled = enablePointerLocation;
- synchronized (mGlobalLock) {
- mRoot.forAllDisplayPolicies(
- p -> p.setPointerLocationEnabled(mPointerLocationEnabled));
- }
- }
-
void updateForceDesktopModeOnExternalDisplays() {
ContentResolver resolver = mContext.getContentResolver();
final boolean enableForceDesktopMode = Settings.Global.getInt(resolver,