Loading services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java +23 −48 Original line number Diff line number Diff line Loading @@ -86,7 +86,7 @@ import com.android.internal.util.DumpUtils; import com.android.internal.util.function.pooled.PooledLambda; import com.android.server.LocalServices; import com.android.server.accessibility.AccessibilityWindowManager.RemoteAccessibilityConnection; import com.android.server.accessibility.magnification.FullScreenMagnificationController; import com.android.server.accessibility.magnification.MagnificationProcessor; import com.android.server.wm.ActivityTaskManagerInternal; import com.android.server.wm.WindowManagerInternal; Loading Loading @@ -223,10 +223,10 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ @Nullable FingerprintGestureDispatcher getFingerprintGestureDispatcher(); /** * @return The magnification controller * @return The magnification processor */ @NonNull FullScreenMagnificationController getFullScreenMagnificationController(); MagnificationProcessor getMagnificationProcessor(); /** * Called back to notify system that the client has changed Loading Loading @@ -975,7 +975,7 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ } final long identity = Binder.clearCallingIdentity(); try { return mSystemSupport.getFullScreenMagnificationController().getScale(displayId); return mSystemSupport.getMagnificationProcessor().getScale(displayId); } finally { Binder.restoreCallingIdentity(identity); } Loading @@ -991,19 +991,15 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ if (!hasRightsToCurrentUserLocked()) { return region; } FullScreenMagnificationController magnificationController = mSystemSupport.getFullScreenMagnificationController(); boolean registeredJustForThisCall = registerMagnificationIfNeeded(displayId, magnificationController); MagnificationProcessor magnificationProcessor = mSystemSupport.getMagnificationProcessor(); final long identity = Binder.clearCallingIdentity(); try { magnificationController.getMagnificationRegion(displayId, region); magnificationProcessor.getMagnificationRegion(displayId, region, mSecurityPolicy.canControlMagnification(this)); return region; } finally { Binder.restoreCallingIdentity(identity); if (registeredJustForThisCall) { magnificationController.unregister(displayId); } } } } Loading @@ -1017,18 +1013,14 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ if (!hasRightsToCurrentUserLocked()) { return 0.0f; } FullScreenMagnificationController magnificationController = mSystemSupport.getFullScreenMagnificationController(); boolean registeredJustForThisCall = registerMagnificationIfNeeded(displayId, magnificationController); MagnificationProcessor magnificationProcessor = mSystemSupport.getMagnificationProcessor(); final long identity = Binder.clearCallingIdentity(); try { return magnificationController.getCenterX(displayId); return magnificationProcessor.getCenterX(displayId, mSecurityPolicy.canControlMagnification(this)); } finally { Binder.restoreCallingIdentity(identity); if (registeredJustForThisCall) { magnificationController.unregister(displayId); } } } } Loading @@ -1042,32 +1034,18 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ if (!hasRightsToCurrentUserLocked()) { return 0.0f; } FullScreenMagnificationController magnificationController = mSystemSupport.getFullScreenMagnificationController(); boolean registeredJustForThisCall = registerMagnificationIfNeeded(displayId, magnificationController); MagnificationProcessor magnificationProcessor = mSystemSupport.getMagnificationProcessor(); final long identity = Binder.clearCallingIdentity(); try { return magnificationController.getCenterY(displayId); return magnificationProcessor.getCenterY(displayId, mSecurityPolicy.canControlMagnification(this)); } finally { Binder.restoreCallingIdentity(identity); if (registeredJustForThisCall) { magnificationController.unregister(displayId); } } } } private boolean registerMagnificationIfNeeded(int displayId, FullScreenMagnificationController magnificationController) { if (!magnificationController.isRegistered(displayId) && mSecurityPolicy.canControlMagnification(this)) { magnificationController.register(displayId); return true; } return false; } @Override public boolean resetMagnification(int displayId, boolean animate) { if (svcConnTracingEnabled()) { Loading @@ -1083,10 +1061,10 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ } final long identity = Binder.clearCallingIdentity(); try { FullScreenMagnificationController magnificationController = mSystemSupport.getFullScreenMagnificationController(); return (magnificationController.reset(displayId, animate) || !magnificationController.isMagnifying(displayId)); MagnificationProcessor magnificationProcessor = mSystemSupport.getMagnificationProcessor(); return (magnificationProcessor.reset(displayId, animate) || !magnificationProcessor.isMagnifying(displayId)); } finally { Binder.restoreCallingIdentity(identity); } Loading @@ -1109,12 +1087,9 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ } final long identity = Binder.clearCallingIdentity(); try { FullScreenMagnificationController magnificationController = mSystemSupport.getFullScreenMagnificationController(); if (!magnificationController.isRegistered(displayId)) { magnificationController.register(displayId); } return magnificationController MagnificationProcessor magnificationProcessor = mSystemSupport.getMagnificationProcessor(); return magnificationProcessor .setScaleAndCenter(displayId, scale, centerX, centerY, animate, mId); } finally { Binder.restoreCallingIdentity(identity); Loading services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java +2 −1 Original line number Diff line number Diff line Loading @@ -608,7 +608,8 @@ class AccessibilityInputFilter extends InputFilter implements EventStreamTransfo final Context uiContext = displayContext.createWindowContext( TYPE_MAGNIFICATION_OVERLAY, null /* options */); magnificationGestureHandler = new FullScreenMagnificationGestureHandler(uiContext, mAms.getFullScreenMagnificationController(), mAms.getTraceManager(), mAms.getMagnificationController().getFullScreenMagnificationController(), mAms.getTraceManager(), mAms.getMagnificationController(), detectControlGestures, triggerable, new WindowMagnificationPromptController(displayContext, mUserId), displayId); } Loading services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +19 −14 Original line number Diff line number Diff line Loading @@ -126,8 +126,8 @@ import com.android.internal.util.DumpUtils; import com.android.internal.util.IntPair; import com.android.server.LocalServices; import com.android.server.SystemService; import com.android.server.accessibility.magnification.FullScreenMagnificationController; import com.android.server.accessibility.magnification.MagnificationController; import com.android.server.accessibility.magnification.MagnificationProcessor; import com.android.server.accessibility.magnification.WindowMagnificationManager; import com.android.server.pm.UserManagerInternal; import com.android.server.wm.ActivityTaskManagerInternal; Loading Loading @@ -219,6 +219,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub private final ActivityTaskManagerInternal mActivityTaskManagerService; private final MagnificationController mMagnificationController; private final MagnificationProcessor mMagnificationProcessor; private final MainHandler mMainHandler; // Lazily initialized - access through getSystemActionPerfomer() Loading Loading @@ -261,7 +264,6 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub private Point mTempPoint = new Point(); private boolean mIsAccessibilityButtonShown; private MagnificationController mMagnificationController; private AccessibilityUserState getCurrentUserStateLocked() { return getUserStateLocked(mCurrentUserId); Loading Loading @@ -308,6 +310,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub mA11yWindowManager = a11yWindowManager; mA11yDisplayListener = a11yDisplayListener; mMagnificationController = magnificationController; mMagnificationProcessor = new MagnificationProcessor(mMagnificationController); init(); } Loading Loading @@ -336,6 +339,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub mWindowManagerService, this, mSecurityPolicy, this, mTraceManager); mA11yDisplayListener = new AccessibilityDisplayListener(mContext, mMainHandler); mMagnificationController = new MagnificationController(this, mLock, mContext); mMagnificationProcessor = new MagnificationProcessor(mMagnificationController); init(); } Loading Loading @@ -2535,7 +2539,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub if (mUiAutomationManager.suppressingAccessibilityServicesLocked() && mMagnificationController.isFullScreenMagnificationControllerInitialized()) { getFullScreenMagnificationController().unregisterAll(); getMagnificationController().getFullScreenMagnificationController().unregisterAll(); return; } Loading @@ -2547,7 +2551,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub || userState.isShortcutMagnificationEnabledLocked()) { for (int i = 0; i < displays.size(); i++) { final Display display = displays.get(i); getFullScreenMagnificationController().register(display.getDisplayId()); getMagnificationController().getFullScreenMagnificationController().register( display.getDisplayId()); } return; } Loading @@ -2557,9 +2562,11 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub final Display display = displays.get(i); final int displayId = display.getDisplayId(); if (userHasListeningMagnificationServicesLocked(userState, displayId)) { getFullScreenMagnificationController().register(displayId); getMagnificationController().getFullScreenMagnificationController().register( displayId); } else if (mMagnificationController.isFullScreenMagnificationControllerInitialized()) { getFullScreenMagnificationController().unregister(displayId); getMagnificationController().getFullScreenMagnificationController().unregister( displayId); } } } Loading Loading @@ -2922,7 +2929,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } // In case user assigned magnification to the given shortcut. if (targetName.equals(MAGNIFICATION_CONTROLLER_NAME)) { final boolean enabled = !getFullScreenMagnificationController().isMagnifying(displayId); final boolean enabled = !getMagnificationController().getFullScreenMagnificationController() .isMagnifying(displayId); logAccessibilityShortcutActivated(mContext, MAGNIFICATION_COMPONENT_NAME, shortcutType, enabled); sendAccessibilityButtonToInputFilter(displayId); Loading Loading @@ -3259,10 +3268,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub * @return MagnificationController */ MagnificationController getMagnificationController() { synchronized (mLock) { return mMagnificationController; } } @Override public void associateEmbeddedHierarchy(@NonNull IBinder host, @NonNull IBinder embedded) { Loading Loading @@ -3378,10 +3385,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } @Override public FullScreenMagnificationController getFullScreenMagnificationController() { synchronized (mLock) { return mMagnificationController.getFullScreenMagnificationController(); } public MagnificationProcessor getMagnificationProcessor() { return mMagnificationProcessor; } @Override Loading services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java +2 −2 Original line number Diff line number Diff line Loading @@ -123,7 +123,7 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect AccessibilityUserState userState = mUserStateWeakReference.get(); if (userState == null) return; userState.removeServiceLocked(this); mSystemSupport.getFullScreenMagnificationController().resetAllIfNeeded(mId); mSystemSupport.getMagnificationProcessor().resetAllIfNeeded(mId); mActivityTaskManagerService.setAllowAppSwitches(mComponentName.flattenToString(), -1, userState.mUserId); resetLocked(); Loading Loading @@ -334,7 +334,7 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect userState.serviceDisconnectedLocked(this); } resetLocked(); mSystemSupport.getFullScreenMagnificationController().resetAllIfNeeded(mId); mSystemSupport.getMagnificationProcessor().resetAllIfNeeded(mId); mSystemSupport.onClientChangeLocked(false); } } Loading services/accessibility/java/com/android/server/accessibility/magnification/MagnificationProcessor.java 0 → 100644 +155 −0 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.server.accessibility.magnification; import android.annotation.NonNull; import android.graphics.Region; /** * Processor class for AccessibilityService connection to control magnification on the specified * display. This wraps the function of magnification controller. * * @see MagnificationController * @see FullScreenMagnificationController */ public class MagnificationProcessor { private final MagnificationController mController; public MagnificationProcessor(MagnificationController controller) { mController = controller; } /** * {@link FullScreenMagnificationController#getScale(int)} */ public float getScale(int displayId) { return mController.getFullScreenMagnificationController().getScale(displayId); } /** * {@link FullScreenMagnificationController#getCenterX(int)} */ public float getCenterX(int displayId, boolean canControlMagnification) { boolean registeredJustForThisCall = registerMagnificationIfNeeded(displayId, canControlMagnification); try { return mController.getFullScreenMagnificationController().getCenterX(displayId); } finally { if (registeredJustForThisCall) { unregister(displayId); } } } /** * {@link FullScreenMagnificationController#getCenterY(int)} */ public float getCenterY(int displayId, boolean canControlMagnification) { boolean registeredJustForThisCall = registerMagnificationIfNeeded(displayId, canControlMagnification); try { return mController.getFullScreenMagnificationController().getCenterY(displayId); } finally { if (registeredJustForThisCall) { unregister(displayId); } } } /** * {@link FullScreenMagnificationController#getMagnificationRegion(int, Region)} */ public Region getMagnificationRegion(int displayId, @NonNull Region outRegion, boolean canControlMagnification) { boolean registeredJustForThisCall = registerMagnificationIfNeeded(displayId, canControlMagnification); try { mController.getFullScreenMagnificationController().getMagnificationRegion(displayId, outRegion); return outRegion; } finally { if (registeredJustForThisCall) { unregister(displayId); } } } /** * {@link FullScreenMagnificationController#setScaleAndCenter(int, float, float, float, boolean, * int)} */ public boolean setScaleAndCenter(int displayId, float scale, float centerX, float centerY, boolean animate, int id) { if (!isRegistered(displayId)) { register(displayId); } return mController.getFullScreenMagnificationController().setScaleAndCenter(displayId, scale, centerX, centerY, animate, id); } /** * {@link FullScreenMagnificationController#reset(int, boolean)} */ public boolean reset(int displayId, boolean animate) { return mController.getFullScreenMagnificationController().reset(displayId, animate); } /** * {@link FullScreenMagnificationController#resetIfNeeded(int, boolean)} */ public void resetAllIfNeeded(int connectionId) { mController.getFullScreenMagnificationController().resetAllIfNeeded(connectionId); } /** * {@link FullScreenMagnificationController#register(int)} */ public void register(int displayId) { mController.getFullScreenMagnificationController().register(displayId); } /** * {@link FullScreenMagnificationController#unregister(int)} (int)} */ public void unregister(int displayId) { mController.getFullScreenMagnificationController().unregister(displayId); } /** * {@link FullScreenMagnificationController#isMagnifying(int)} */ public boolean isMagnifying(int displayId) { return mController.getFullScreenMagnificationController().isMagnifying(displayId); } /** * {@link FullScreenMagnificationController#isRegistered(int)} */ public boolean isRegistered(int displayId) { return mController.getFullScreenMagnificationController().isRegistered(displayId); } private boolean registerMagnificationIfNeeded(int displayId, boolean canControlMagnification) { if (!isRegistered(displayId) && canControlMagnification) { register(displayId); return true; } return false; } } Loading
services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java +23 −48 Original line number Diff line number Diff line Loading @@ -86,7 +86,7 @@ import com.android.internal.util.DumpUtils; import com.android.internal.util.function.pooled.PooledLambda; import com.android.server.LocalServices; import com.android.server.accessibility.AccessibilityWindowManager.RemoteAccessibilityConnection; import com.android.server.accessibility.magnification.FullScreenMagnificationController; import com.android.server.accessibility.magnification.MagnificationProcessor; import com.android.server.wm.ActivityTaskManagerInternal; import com.android.server.wm.WindowManagerInternal; Loading Loading @@ -223,10 +223,10 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ @Nullable FingerprintGestureDispatcher getFingerprintGestureDispatcher(); /** * @return The magnification controller * @return The magnification processor */ @NonNull FullScreenMagnificationController getFullScreenMagnificationController(); MagnificationProcessor getMagnificationProcessor(); /** * Called back to notify system that the client has changed Loading Loading @@ -975,7 +975,7 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ } final long identity = Binder.clearCallingIdentity(); try { return mSystemSupport.getFullScreenMagnificationController().getScale(displayId); return mSystemSupport.getMagnificationProcessor().getScale(displayId); } finally { Binder.restoreCallingIdentity(identity); } Loading @@ -991,19 +991,15 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ if (!hasRightsToCurrentUserLocked()) { return region; } FullScreenMagnificationController magnificationController = mSystemSupport.getFullScreenMagnificationController(); boolean registeredJustForThisCall = registerMagnificationIfNeeded(displayId, magnificationController); MagnificationProcessor magnificationProcessor = mSystemSupport.getMagnificationProcessor(); final long identity = Binder.clearCallingIdentity(); try { magnificationController.getMagnificationRegion(displayId, region); magnificationProcessor.getMagnificationRegion(displayId, region, mSecurityPolicy.canControlMagnification(this)); return region; } finally { Binder.restoreCallingIdentity(identity); if (registeredJustForThisCall) { magnificationController.unregister(displayId); } } } } Loading @@ -1017,18 +1013,14 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ if (!hasRightsToCurrentUserLocked()) { return 0.0f; } FullScreenMagnificationController magnificationController = mSystemSupport.getFullScreenMagnificationController(); boolean registeredJustForThisCall = registerMagnificationIfNeeded(displayId, magnificationController); MagnificationProcessor magnificationProcessor = mSystemSupport.getMagnificationProcessor(); final long identity = Binder.clearCallingIdentity(); try { return magnificationController.getCenterX(displayId); return magnificationProcessor.getCenterX(displayId, mSecurityPolicy.canControlMagnification(this)); } finally { Binder.restoreCallingIdentity(identity); if (registeredJustForThisCall) { magnificationController.unregister(displayId); } } } } Loading @@ -1042,32 +1034,18 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ if (!hasRightsToCurrentUserLocked()) { return 0.0f; } FullScreenMagnificationController magnificationController = mSystemSupport.getFullScreenMagnificationController(); boolean registeredJustForThisCall = registerMagnificationIfNeeded(displayId, magnificationController); MagnificationProcessor magnificationProcessor = mSystemSupport.getMagnificationProcessor(); final long identity = Binder.clearCallingIdentity(); try { return magnificationController.getCenterY(displayId); return magnificationProcessor.getCenterY(displayId, mSecurityPolicy.canControlMagnification(this)); } finally { Binder.restoreCallingIdentity(identity); if (registeredJustForThisCall) { magnificationController.unregister(displayId); } } } } private boolean registerMagnificationIfNeeded(int displayId, FullScreenMagnificationController magnificationController) { if (!magnificationController.isRegistered(displayId) && mSecurityPolicy.canControlMagnification(this)) { magnificationController.register(displayId); return true; } return false; } @Override public boolean resetMagnification(int displayId, boolean animate) { if (svcConnTracingEnabled()) { Loading @@ -1083,10 +1061,10 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ } final long identity = Binder.clearCallingIdentity(); try { FullScreenMagnificationController magnificationController = mSystemSupport.getFullScreenMagnificationController(); return (magnificationController.reset(displayId, animate) || !magnificationController.isMagnifying(displayId)); MagnificationProcessor magnificationProcessor = mSystemSupport.getMagnificationProcessor(); return (magnificationProcessor.reset(displayId, animate) || !magnificationProcessor.isMagnifying(displayId)); } finally { Binder.restoreCallingIdentity(identity); } Loading @@ -1109,12 +1087,9 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ } final long identity = Binder.clearCallingIdentity(); try { FullScreenMagnificationController magnificationController = mSystemSupport.getFullScreenMagnificationController(); if (!magnificationController.isRegistered(displayId)) { magnificationController.register(displayId); } return magnificationController MagnificationProcessor magnificationProcessor = mSystemSupport.getMagnificationProcessor(); return magnificationProcessor .setScaleAndCenter(displayId, scale, centerX, centerY, animate, mId); } finally { Binder.restoreCallingIdentity(identity); Loading
services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java +2 −1 Original line number Diff line number Diff line Loading @@ -608,7 +608,8 @@ class AccessibilityInputFilter extends InputFilter implements EventStreamTransfo final Context uiContext = displayContext.createWindowContext( TYPE_MAGNIFICATION_OVERLAY, null /* options */); magnificationGestureHandler = new FullScreenMagnificationGestureHandler(uiContext, mAms.getFullScreenMagnificationController(), mAms.getTraceManager(), mAms.getMagnificationController().getFullScreenMagnificationController(), mAms.getTraceManager(), mAms.getMagnificationController(), detectControlGestures, triggerable, new WindowMagnificationPromptController(displayContext, mUserId), displayId); } Loading
services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +19 −14 Original line number Diff line number Diff line Loading @@ -126,8 +126,8 @@ import com.android.internal.util.DumpUtils; import com.android.internal.util.IntPair; import com.android.server.LocalServices; import com.android.server.SystemService; import com.android.server.accessibility.magnification.FullScreenMagnificationController; import com.android.server.accessibility.magnification.MagnificationController; import com.android.server.accessibility.magnification.MagnificationProcessor; import com.android.server.accessibility.magnification.WindowMagnificationManager; import com.android.server.pm.UserManagerInternal; import com.android.server.wm.ActivityTaskManagerInternal; Loading Loading @@ -219,6 +219,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub private final ActivityTaskManagerInternal mActivityTaskManagerService; private final MagnificationController mMagnificationController; private final MagnificationProcessor mMagnificationProcessor; private final MainHandler mMainHandler; // Lazily initialized - access through getSystemActionPerfomer() Loading Loading @@ -261,7 +264,6 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub private Point mTempPoint = new Point(); private boolean mIsAccessibilityButtonShown; private MagnificationController mMagnificationController; private AccessibilityUserState getCurrentUserStateLocked() { return getUserStateLocked(mCurrentUserId); Loading Loading @@ -308,6 +310,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub mA11yWindowManager = a11yWindowManager; mA11yDisplayListener = a11yDisplayListener; mMagnificationController = magnificationController; mMagnificationProcessor = new MagnificationProcessor(mMagnificationController); init(); } Loading Loading @@ -336,6 +339,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub mWindowManagerService, this, mSecurityPolicy, this, mTraceManager); mA11yDisplayListener = new AccessibilityDisplayListener(mContext, mMainHandler); mMagnificationController = new MagnificationController(this, mLock, mContext); mMagnificationProcessor = new MagnificationProcessor(mMagnificationController); init(); } Loading Loading @@ -2535,7 +2539,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub if (mUiAutomationManager.suppressingAccessibilityServicesLocked() && mMagnificationController.isFullScreenMagnificationControllerInitialized()) { getFullScreenMagnificationController().unregisterAll(); getMagnificationController().getFullScreenMagnificationController().unregisterAll(); return; } Loading @@ -2547,7 +2551,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub || userState.isShortcutMagnificationEnabledLocked()) { for (int i = 0; i < displays.size(); i++) { final Display display = displays.get(i); getFullScreenMagnificationController().register(display.getDisplayId()); getMagnificationController().getFullScreenMagnificationController().register( display.getDisplayId()); } return; } Loading @@ -2557,9 +2562,11 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub final Display display = displays.get(i); final int displayId = display.getDisplayId(); if (userHasListeningMagnificationServicesLocked(userState, displayId)) { getFullScreenMagnificationController().register(displayId); getMagnificationController().getFullScreenMagnificationController().register( displayId); } else if (mMagnificationController.isFullScreenMagnificationControllerInitialized()) { getFullScreenMagnificationController().unregister(displayId); getMagnificationController().getFullScreenMagnificationController().unregister( displayId); } } } Loading Loading @@ -2922,7 +2929,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } // In case user assigned magnification to the given shortcut. if (targetName.equals(MAGNIFICATION_CONTROLLER_NAME)) { final boolean enabled = !getFullScreenMagnificationController().isMagnifying(displayId); final boolean enabled = !getMagnificationController().getFullScreenMagnificationController() .isMagnifying(displayId); logAccessibilityShortcutActivated(mContext, MAGNIFICATION_COMPONENT_NAME, shortcutType, enabled); sendAccessibilityButtonToInputFilter(displayId); Loading Loading @@ -3259,10 +3268,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub * @return MagnificationController */ MagnificationController getMagnificationController() { synchronized (mLock) { return mMagnificationController; } } @Override public void associateEmbeddedHierarchy(@NonNull IBinder host, @NonNull IBinder embedded) { Loading Loading @@ -3378,10 +3385,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } @Override public FullScreenMagnificationController getFullScreenMagnificationController() { synchronized (mLock) { return mMagnificationController.getFullScreenMagnificationController(); } public MagnificationProcessor getMagnificationProcessor() { return mMagnificationProcessor; } @Override Loading
services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java +2 −2 Original line number Diff line number Diff line Loading @@ -123,7 +123,7 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect AccessibilityUserState userState = mUserStateWeakReference.get(); if (userState == null) return; userState.removeServiceLocked(this); mSystemSupport.getFullScreenMagnificationController().resetAllIfNeeded(mId); mSystemSupport.getMagnificationProcessor().resetAllIfNeeded(mId); mActivityTaskManagerService.setAllowAppSwitches(mComponentName.flattenToString(), -1, userState.mUserId); resetLocked(); Loading Loading @@ -334,7 +334,7 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect userState.serviceDisconnectedLocked(this); } resetLocked(); mSystemSupport.getFullScreenMagnificationController().resetAllIfNeeded(mId); mSystemSupport.getMagnificationProcessor().resetAllIfNeeded(mId); mSystemSupport.onClientChangeLocked(false); } } Loading
services/accessibility/java/com/android/server/accessibility/magnification/MagnificationProcessor.java 0 → 100644 +155 −0 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.server.accessibility.magnification; import android.annotation.NonNull; import android.graphics.Region; /** * Processor class for AccessibilityService connection to control magnification on the specified * display. This wraps the function of magnification controller. * * @see MagnificationController * @see FullScreenMagnificationController */ public class MagnificationProcessor { private final MagnificationController mController; public MagnificationProcessor(MagnificationController controller) { mController = controller; } /** * {@link FullScreenMagnificationController#getScale(int)} */ public float getScale(int displayId) { return mController.getFullScreenMagnificationController().getScale(displayId); } /** * {@link FullScreenMagnificationController#getCenterX(int)} */ public float getCenterX(int displayId, boolean canControlMagnification) { boolean registeredJustForThisCall = registerMagnificationIfNeeded(displayId, canControlMagnification); try { return mController.getFullScreenMagnificationController().getCenterX(displayId); } finally { if (registeredJustForThisCall) { unregister(displayId); } } } /** * {@link FullScreenMagnificationController#getCenterY(int)} */ public float getCenterY(int displayId, boolean canControlMagnification) { boolean registeredJustForThisCall = registerMagnificationIfNeeded(displayId, canControlMagnification); try { return mController.getFullScreenMagnificationController().getCenterY(displayId); } finally { if (registeredJustForThisCall) { unregister(displayId); } } } /** * {@link FullScreenMagnificationController#getMagnificationRegion(int, Region)} */ public Region getMagnificationRegion(int displayId, @NonNull Region outRegion, boolean canControlMagnification) { boolean registeredJustForThisCall = registerMagnificationIfNeeded(displayId, canControlMagnification); try { mController.getFullScreenMagnificationController().getMagnificationRegion(displayId, outRegion); return outRegion; } finally { if (registeredJustForThisCall) { unregister(displayId); } } } /** * {@link FullScreenMagnificationController#setScaleAndCenter(int, float, float, float, boolean, * int)} */ public boolean setScaleAndCenter(int displayId, float scale, float centerX, float centerY, boolean animate, int id) { if (!isRegistered(displayId)) { register(displayId); } return mController.getFullScreenMagnificationController().setScaleAndCenter(displayId, scale, centerX, centerY, animate, id); } /** * {@link FullScreenMagnificationController#reset(int, boolean)} */ public boolean reset(int displayId, boolean animate) { return mController.getFullScreenMagnificationController().reset(displayId, animate); } /** * {@link FullScreenMagnificationController#resetIfNeeded(int, boolean)} */ public void resetAllIfNeeded(int connectionId) { mController.getFullScreenMagnificationController().resetAllIfNeeded(connectionId); } /** * {@link FullScreenMagnificationController#register(int)} */ public void register(int displayId) { mController.getFullScreenMagnificationController().register(displayId); } /** * {@link FullScreenMagnificationController#unregister(int)} (int)} */ public void unregister(int displayId) { mController.getFullScreenMagnificationController().unregister(displayId); } /** * {@link FullScreenMagnificationController#isMagnifying(int)} */ public boolean isMagnifying(int displayId) { return mController.getFullScreenMagnificationController().isMagnifying(displayId); } /** * {@link FullScreenMagnificationController#isRegistered(int)} */ public boolean isRegistered(int displayId) { return mController.getFullScreenMagnificationController().isRegistered(displayId); } private boolean registerMagnificationIfNeeded(int displayId, boolean canControlMagnification) { if (!isRegistered(displayId) && canControlMagnification) { register(displayId); return true; } return false; } }