diff options
| author | 2023-07-04 20:16:23 +0000 | |
|---|---|---|
| committer | 2023-07-04 20:16:23 +0000 | |
| commit | e828d6bb739a52b8c67e03570807dd40e05445fc (patch) | |
| tree | b13491f417106af5e4d621694e231bfa734e583b | |
| parent | a7ab744c735aeb198df2d7cfade512670d29c926 (diff) | |
| parent | 27ebcb99c395956f81e4cf0aed90c6e2e2c3f28b (diff) | |
Merge "Handle pointer location setting in InputSettingsObserver" into udc-qpr-dev am: 3830afc12d am: 27ebcb99c3
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23751947
Change-Id: I4c65d303a7823042e5ee99efbd9aa029a95ccaa6
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
4 files changed, 31 insertions, 24 deletions
diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java index ce482a9f6dac..e78addaf36c4 100644 --- a/services/core/java/com/android/server/input/InputManagerService.java +++ b/services/core/java/com/android/server/input/InputManagerService.java @@ -2793,6 +2793,11 @@ public class InputManagerService extends IInputManager.Stub 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 @@ -3374,6 +3379,10 @@ public class InputManagerService extends IInputManager.Stub } } + 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 3716e1f5cc33..cf7c692d9a54 100644 --- a/services/core/java/com/android/server/input/InputSettingsObserver.java +++ b/services/core/java/com/android/server/input/InputSettingsObserver.java @@ -70,6 +70,8 @@ class InputSettingsObserver extends ContentObserver { (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()), @@ -156,6 +158,11 @@ class InputSettingsObserver extends ContentObserver { 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 0a47fe09dbd9..20595eaa1e3c 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 @@ final class InputManagerCallback implements InputManagerService.WindowManagerCal } } + /** 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 cb1c08645458..8dc2840cdc19 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 @@ public class WindowManagerService extends IWindowManager.Stub 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 @@ public class WindowManagerService extends IWindowManager.Stub 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 @@ public class WindowManagerService extends IWindowManager.Stub return; } - if (mPointerLocationUri.equals(uri)) { - updatePointerLocation(); - return; - } - if (mForceDesktopModeOnExternalDisplaysUri.equals(uri)) { updateForceDesktopModeOnExternalDisplays(); return; @@ -869,7 +861,6 @@ public class WindowManagerService extends IWindowManager.Stub void loadSettings() { updateSystemUiSettings(false /* handleChange */); - updatePointerLocation(); updateMaximumObscuringOpacityForTouch(); } @@ -900,21 +891,6 @@ public class WindowManagerService extends IWindowManager.Stub } } - 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, |