Loading services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java +15 −13 Original line number Diff line number Diff line Loading @@ -79,6 +79,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.wm.ActivityTaskManagerInternal; import com.android.server.wm.WindowManagerInternal; Loading Loading @@ -206,7 +207,8 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ /** * @return The magnification controller */ @NonNull MagnificationController getMagnificationController(); @NonNull FullScreenMagnificationController getFullScreenMagnificationController(); /** * Called back to notify system that the client has changed Loading Loading @@ -832,7 +834,7 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ } final long identity = Binder.clearCallingIdentity(); try { return mSystemSupport.getMagnificationController().getScale(displayId); return mSystemSupport.getFullScreenMagnificationController().getScale(displayId); } finally { Binder.restoreCallingIdentity(identity); } Loading @@ -845,8 +847,8 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ if (!hasRightsToCurrentUserLocked()) { return region; } MagnificationController magnificationController = mSystemSupport.getMagnificationController(); FullScreenMagnificationController magnificationController = mSystemSupport.getFullScreenMagnificationController(); boolean registeredJustForThisCall = registerMagnificationIfNeeded(displayId, magnificationController); final long identity = Binder.clearCallingIdentity(); Loading @@ -868,8 +870,8 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ if (!hasRightsToCurrentUserLocked()) { return 0.0f; } MagnificationController magnificationController = mSystemSupport.getMagnificationController(); FullScreenMagnificationController magnificationController = mSystemSupport.getFullScreenMagnificationController(); boolean registeredJustForThisCall = registerMagnificationIfNeeded(displayId, magnificationController); final long identity = Binder.clearCallingIdentity(); Loading @@ -890,8 +892,8 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ if (!hasRightsToCurrentUserLocked()) { return 0.0f; } MagnificationController magnificationController = mSystemSupport.getMagnificationController(); FullScreenMagnificationController magnificationController = mSystemSupport.getFullScreenMagnificationController(); boolean registeredJustForThisCall = registerMagnificationIfNeeded(displayId, magnificationController); final long identity = Binder.clearCallingIdentity(); Loading @@ -907,7 +909,7 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ } private boolean registerMagnificationIfNeeded(int displayId, MagnificationController magnificationController) { FullScreenMagnificationController magnificationController) { if (!magnificationController.isRegistered(displayId) && mSecurityPolicy.canControlMagnification(this)) { magnificationController.register(displayId); Loading @@ -928,8 +930,8 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ } final long identity = Binder.clearCallingIdentity(); try { MagnificationController magnificationController = mSystemSupport.getMagnificationController(); FullScreenMagnificationController magnificationController = mSystemSupport.getFullScreenMagnificationController(); return (magnificationController.reset(displayId, animate) || !magnificationController.isMagnifying(displayId)); } finally { Loading @@ -949,8 +951,8 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ } final long identity = Binder.clearCallingIdentity(); try { MagnificationController magnificationController = mSystemSupport.getMagnificationController(); FullScreenMagnificationController magnificationController = mSystemSupport.getFullScreenMagnificationController(); if (!magnificationController.isRegistered(displayId)) { magnificationController.register(displayId); } Loading services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java +2 −1 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.view.accessibility.AccessibilityEvent; import com.android.server.LocalServices; import com.android.server.accessibility.gestures.TouchExplorer; import com.android.server.accessibility.magnification.FullScreenMagnificationGestureHandler; import com.android.server.accessibility.magnification.MagnificationGestureHandler; import com.android.server.accessibility.magnification.WindowMagnificationGestureHandler; import com.android.server.policy.WindowManagerPolicy; Loading Loading @@ -539,7 +540,7 @@ class AccessibilityInputFilter extends InputFilter implements EventStreamTransfo detectControlGestures, triggerable, displayId); } else { magnificationGestureHandler = new FullScreenMagnificationGestureHandler(displayContext, mAms.getMagnificationController(), mAms::onMagnificationScaleChanged, mAms.getFullScreenMagnificationController(), mAms::onMagnificationScaleChanged, detectControlGestures, triggerable, displayId); } return magnificationGestureHandler; Loading services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +19 −17 Original line number Diff line number Diff line Loading @@ -116,6 +116,7 @@ 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.MagnificationGestureHandler; import com.android.server.accessibility.magnification.WindowMagnificationManager; import com.android.server.wm.ActivityTaskManagerInternal; Loading Loading @@ -212,7 +213,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub // Lazily initialized - access through getSystemActionPerfomer() private SystemActionPerformer mSystemActionPerformer; private MagnificationController mMagnificationController; private FullScreenMagnificationController mFullScreenMagnificationController; private InteractionBridge mInteractionBridge; Loading Loading @@ -2191,13 +2192,13 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub return; } if (mMagnificationController != null) { mMagnificationController.setUserId(userState.mUserId); if (mFullScreenMagnificationController != null) { mFullScreenMagnificationController.setUserId(userState.mUserId); } if (mUiAutomationManager.suppressingAccessibilityServicesLocked() && mMagnificationController != null) { mMagnificationController.unregisterAll(); && mFullScreenMagnificationController != null) { mFullScreenMagnificationController.unregisterAll(); return; } Loading @@ -2209,7 +2210,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub || userState.isShortcutMagnificationEnabledLocked()) { for (int i = 0; i < displays.size(); i++) { final Display display = displays.get(i); getMagnificationController().register(display.getDisplayId()); getFullScreenMagnificationController().register(display.getDisplayId()); } return; } Loading @@ -2219,9 +2220,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub final Display display = displays.get(i); final int displayId = display.getDisplayId(); if (userHasListeningMagnificationServicesLocked(userState, displayId)) { getMagnificationController().register(displayId); } else if (mMagnificationController != null) { mMagnificationController.unregister(displayId); getFullScreenMagnificationController().register(displayId); } else if (mFullScreenMagnificationController != null) { mFullScreenMagnificationController.unregister(displayId); } } } Loading Loading @@ -2568,7 +2569,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } // In case user assigned magnification to the given shortcut. if (targetName.equals(MAGNIFICATION_CONTROLLER_NAME)) { final boolean enabled = !getMagnificationController().isMagnifying(displayId); final boolean enabled = !getFullScreenMagnificationController().isMagnifying(displayId); logAccessibilityShortcutActivated(MAGNIFICATION_COMPONENT_NAME, shortcutType, enabled); sendAccessibilityButtonToInputFilter(displayId); return; Loading Loading @@ -2928,13 +2929,14 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } @Override public MagnificationController getMagnificationController() { public FullScreenMagnificationController getFullScreenMagnificationController() { synchronized (mLock) { if (mMagnificationController == null) { mMagnificationController = new MagnificationController(mContext, this, mLock); mMagnificationController.setUserId(mCurrentUserId); if (mFullScreenMagnificationController == null) { mFullScreenMagnificationController = new FullScreenMagnificationController(mContext, this, mLock); mFullScreenMagnificationController.setUserId(mCurrentUserId); } return mMagnificationController; return mFullScreenMagnificationController; } } Loading Loading @@ -3126,8 +3128,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } } } if (mMagnificationController != null) { mMagnificationController.onDisplayRemoved(displayId); if (mFullScreenMagnificationController != null) { mFullScreenMagnificationController.onDisplayRemoved(displayId); } mA11yWindowManager.stopTrackingWindows(displayId); } Loading services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java +2 −2 Original line number Diff line number Diff line Loading @@ -120,7 +120,7 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect AccessibilityUserState userState = mUserStateWeakReference.get(); if (userState == null) return; userState.removeServiceLocked(this); mSystemSupport.getMagnificationController().resetAllIfNeeded(mId); mSystemSupport.getFullScreenMagnificationController().resetAllIfNeeded(mId); mActivityTaskManagerService.setAllowAppSwitches(mComponentName.flattenToString(), -1, userState.mUserId); resetLocked(); Loading Loading @@ -312,7 +312,7 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect userState.serviceDisconnectedLocked(this); } resetLocked(); mSystemSupport.getMagnificationController().resetAllIfNeeded(mId); mSystemSupport.getFullScreenMagnificationController().resetAllIfNeeded(mId); mSystemSupport.onClientChangeLocked(false); } } Loading services/accessibility/java/com/android/server/accessibility/MagnificationController.java→services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationController.java +37 −32 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ * limitations under the License. */ package com.android.server.accessibility; package com.android.server.accessibility.magnification; import android.animation.ValueAnimator; import android.annotation.NonNull; Loading Loading @@ -42,6 +42,7 @@ import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.function.pooled.PooledLambda; import com.android.server.LocalServices; import com.android.server.accessibility.AccessibilityManagerService; import com.android.server.wm.WindowManagerInternal; import java.util.Locale; Loading @@ -56,9 +57,9 @@ import java.util.Locale; * magnification region. If a value is out of bounds, it will be adjusted to guarantee these * constraints. */ public class MagnificationController { public class FullScreenMagnificationController { private static final boolean DEBUG = false; private static final String LOG_TAG = "MagnificationController"; private static final String LOG_TAG = "FullScreenMagnificationController"; public static final float MIN_SCALE = 1.0f; public static final float MAX_SCALE = 8.0f; Loading Loading @@ -140,11 +141,12 @@ public class MagnificationController { /** * Unregisters magnification callback from window manager. Callbacks to * {@link MagnificationController#unregisterCallbackLocked(int, boolean)} after * {@link FullScreenMagnificationController#unregisterCallbackLocked(int, boolean)} after * unregistered. * * @param delete true if this instance should be removed from the SparseArray in * MagnificationController after unregistered, for example, display removed. * FullScreenMagnificationController after unregistered, for example, * display removed. */ @GuardedBy("mLock") void unregister(boolean delete) { Loading @@ -164,7 +166,8 @@ public class MagnificationController { * called after animation finished. * * @param delete true if this instance should be removed from the SparseArray in * MagnificationController after unregistered, for example, display removed. * FullScreenMagnificationController after unregistered, for example, * display removed. */ @GuardedBy("mLock") void unregisterPending(boolean delete) { Loading Loading @@ -257,15 +260,17 @@ public class MagnificationController { @Override public void onRotationChanged(int rotation) { // Treat as context change and reset final Message m = PooledLambda.obtainMessage(MagnificationController::resetIfNeeded, MagnificationController.this, mDisplayId, true); final Message m = PooledLambda.obtainMessage( FullScreenMagnificationController::resetIfNeeded, FullScreenMagnificationController.this, mDisplayId, true); mControllerCtx.getHandler().sendMessage(m); } @Override public void onUserContextChanged() { final Message m = PooledLambda.obtainMessage(MagnificationController::resetIfNeeded, MagnificationController.this, mDisplayId, true); final Message m = PooledLambda.obtainMessage( FullScreenMagnificationController::resetIfNeeded, FullScreenMagnificationController.this, mDisplayId, true); mControllerCtx.getHandler().sendMessage(m); } Loading Loading @@ -554,25 +559,25 @@ public class MagnificationController { float getMinOffsetXLocked() { final float viewportWidth = mMagnificationBounds.width(); final float viewportLeft = mMagnificationBounds.left; return (viewportLeft + viewportWidth) - (viewportLeft + viewportWidth) * mCurrentMagnificationSpec.scale; return (viewportLeft + viewportWidth) - (viewportLeft + viewportWidth) * mCurrentMagnificationSpec.scale; } float getMaxOffsetXLocked() { return mMagnificationBounds.left - mMagnificationBounds.left * mCurrentMagnificationSpec.scale; return mMagnificationBounds.left - mMagnificationBounds.left * mCurrentMagnificationSpec.scale; } float getMinOffsetYLocked() { final float viewportHeight = mMagnificationBounds.height(); final float viewportTop = mMagnificationBounds.top; return (viewportTop + viewportHeight) - (viewportTop + viewportHeight) * mCurrentMagnificationSpec.scale; return (viewportTop + viewportHeight) - (viewportTop + viewportHeight) * mCurrentMagnificationSpec.scale; } float getMaxOffsetYLocked() { return mMagnificationBounds.top - mMagnificationBounds.top * mCurrentMagnificationSpec.scale; return mMagnificationBounds.top - mMagnificationBounds.top * mCurrentMagnificationSpec.scale; } @Override Loading @@ -590,9 +595,9 @@ public class MagnificationController { } /** * MagnificationController Constructor * FullScreenMagnificationController Constructor */ public MagnificationController(@NonNull Context context, public FullScreenMagnificationController(@NonNull Context context, @NonNull AccessibilityManagerService ams, @NonNull Object lock) { this(new ControllerContext(context, ams, LocalServices.getService(WindowManagerInternal.class), Loading @@ -604,7 +609,7 @@ public class MagnificationController { * Constructor for tests */ @VisibleForTesting public MagnificationController(@NonNull ControllerContext ctx, @NonNull Object lock) { public FullScreenMagnificationController(@NonNull ControllerContext ctx, @NonNull Object lock) { mControllerCtx = ctx; mLock = lock; mMainThreadId = mControllerCtx.getContext().getMainLooper().getThread().getId(); Loading Loading @@ -1088,7 +1093,7 @@ public class MagnificationController { private void onScreenTurnedOff() { final Message m = PooledLambda.obtainMessage( MagnificationController::resetAllIfNeeded, this, false); FullScreenMagnificationController::resetAllIfNeeded, this, false); mControllerCtx.getHandler().sendMessage(m); } Loading Loading @@ -1253,13 +1258,13 @@ public class MagnificationController { synchronized (mLock) { if (mEnabled) { float fract = animation.getAnimatedFraction(); mTmpMagnificationSpec.scale = mStartMagnificationSpec.scale + (mEndMagnificationSpec.scale - mStartMagnificationSpec.scale) * fract; mTmpMagnificationSpec.offsetX = mStartMagnificationSpec.offsetX + (mEndMagnificationSpec.offsetX - mStartMagnificationSpec.offsetX) mTmpMagnificationSpec.scale = mStartMagnificationSpec.scale + (mEndMagnificationSpec.scale - mStartMagnificationSpec.scale) * fract; mTmpMagnificationSpec.offsetX = mStartMagnificationSpec.offsetX + (mEndMagnificationSpec.offsetX - mStartMagnificationSpec.offsetX) * fract; mTmpMagnificationSpec.offsetY = mStartMagnificationSpec.offsetY + (mEndMagnificationSpec.offsetY - mStartMagnificationSpec.offsetY) mTmpMagnificationSpec.offsetY = mStartMagnificationSpec.offsetY + (mEndMagnificationSpec.offsetY - mStartMagnificationSpec.offsetY) * fract; setMagnificationSpecLocked(mTmpMagnificationSpec); } Loading @@ -1269,10 +1274,10 @@ public class MagnificationController { private static class ScreenStateObserver extends BroadcastReceiver { private final Context mContext; private final MagnificationController mController; private final FullScreenMagnificationController mController; private boolean mRegistered = false; public ScreenStateObserver(Context context, MagnificationController controller) { ScreenStateObserver(Context context, FullScreenMagnificationController controller) { mContext = context; mController = controller; } Loading Loading
services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java +15 −13 Original line number Diff line number Diff line Loading @@ -79,6 +79,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.wm.ActivityTaskManagerInternal; import com.android.server.wm.WindowManagerInternal; Loading Loading @@ -206,7 +207,8 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ /** * @return The magnification controller */ @NonNull MagnificationController getMagnificationController(); @NonNull FullScreenMagnificationController getFullScreenMagnificationController(); /** * Called back to notify system that the client has changed Loading Loading @@ -832,7 +834,7 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ } final long identity = Binder.clearCallingIdentity(); try { return mSystemSupport.getMagnificationController().getScale(displayId); return mSystemSupport.getFullScreenMagnificationController().getScale(displayId); } finally { Binder.restoreCallingIdentity(identity); } Loading @@ -845,8 +847,8 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ if (!hasRightsToCurrentUserLocked()) { return region; } MagnificationController magnificationController = mSystemSupport.getMagnificationController(); FullScreenMagnificationController magnificationController = mSystemSupport.getFullScreenMagnificationController(); boolean registeredJustForThisCall = registerMagnificationIfNeeded(displayId, magnificationController); final long identity = Binder.clearCallingIdentity(); Loading @@ -868,8 +870,8 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ if (!hasRightsToCurrentUserLocked()) { return 0.0f; } MagnificationController magnificationController = mSystemSupport.getMagnificationController(); FullScreenMagnificationController magnificationController = mSystemSupport.getFullScreenMagnificationController(); boolean registeredJustForThisCall = registerMagnificationIfNeeded(displayId, magnificationController); final long identity = Binder.clearCallingIdentity(); Loading @@ -890,8 +892,8 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ if (!hasRightsToCurrentUserLocked()) { return 0.0f; } MagnificationController magnificationController = mSystemSupport.getMagnificationController(); FullScreenMagnificationController magnificationController = mSystemSupport.getFullScreenMagnificationController(); boolean registeredJustForThisCall = registerMagnificationIfNeeded(displayId, magnificationController); final long identity = Binder.clearCallingIdentity(); Loading @@ -907,7 +909,7 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ } private boolean registerMagnificationIfNeeded(int displayId, MagnificationController magnificationController) { FullScreenMagnificationController magnificationController) { if (!magnificationController.isRegistered(displayId) && mSecurityPolicy.canControlMagnification(this)) { magnificationController.register(displayId); Loading @@ -928,8 +930,8 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ } final long identity = Binder.clearCallingIdentity(); try { MagnificationController magnificationController = mSystemSupport.getMagnificationController(); FullScreenMagnificationController magnificationController = mSystemSupport.getFullScreenMagnificationController(); return (magnificationController.reset(displayId, animate) || !magnificationController.isMagnifying(displayId)); } finally { Loading @@ -949,8 +951,8 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ } final long identity = Binder.clearCallingIdentity(); try { MagnificationController magnificationController = mSystemSupport.getMagnificationController(); FullScreenMagnificationController magnificationController = mSystemSupport.getFullScreenMagnificationController(); if (!magnificationController.isRegistered(displayId)) { magnificationController.register(displayId); } Loading
services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java +2 −1 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.view.accessibility.AccessibilityEvent; import com.android.server.LocalServices; import com.android.server.accessibility.gestures.TouchExplorer; import com.android.server.accessibility.magnification.FullScreenMagnificationGestureHandler; import com.android.server.accessibility.magnification.MagnificationGestureHandler; import com.android.server.accessibility.magnification.WindowMagnificationGestureHandler; import com.android.server.policy.WindowManagerPolicy; Loading Loading @@ -539,7 +540,7 @@ class AccessibilityInputFilter extends InputFilter implements EventStreamTransfo detectControlGestures, triggerable, displayId); } else { magnificationGestureHandler = new FullScreenMagnificationGestureHandler(displayContext, mAms.getMagnificationController(), mAms::onMagnificationScaleChanged, mAms.getFullScreenMagnificationController(), mAms::onMagnificationScaleChanged, detectControlGestures, triggerable, displayId); } return magnificationGestureHandler; Loading
services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +19 −17 Original line number Diff line number Diff line Loading @@ -116,6 +116,7 @@ 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.MagnificationGestureHandler; import com.android.server.accessibility.magnification.WindowMagnificationManager; import com.android.server.wm.ActivityTaskManagerInternal; Loading Loading @@ -212,7 +213,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub // Lazily initialized - access through getSystemActionPerfomer() private SystemActionPerformer mSystemActionPerformer; private MagnificationController mMagnificationController; private FullScreenMagnificationController mFullScreenMagnificationController; private InteractionBridge mInteractionBridge; Loading Loading @@ -2191,13 +2192,13 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub return; } if (mMagnificationController != null) { mMagnificationController.setUserId(userState.mUserId); if (mFullScreenMagnificationController != null) { mFullScreenMagnificationController.setUserId(userState.mUserId); } if (mUiAutomationManager.suppressingAccessibilityServicesLocked() && mMagnificationController != null) { mMagnificationController.unregisterAll(); && mFullScreenMagnificationController != null) { mFullScreenMagnificationController.unregisterAll(); return; } Loading @@ -2209,7 +2210,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub || userState.isShortcutMagnificationEnabledLocked()) { for (int i = 0; i < displays.size(); i++) { final Display display = displays.get(i); getMagnificationController().register(display.getDisplayId()); getFullScreenMagnificationController().register(display.getDisplayId()); } return; } Loading @@ -2219,9 +2220,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub final Display display = displays.get(i); final int displayId = display.getDisplayId(); if (userHasListeningMagnificationServicesLocked(userState, displayId)) { getMagnificationController().register(displayId); } else if (mMagnificationController != null) { mMagnificationController.unregister(displayId); getFullScreenMagnificationController().register(displayId); } else if (mFullScreenMagnificationController != null) { mFullScreenMagnificationController.unregister(displayId); } } } Loading Loading @@ -2568,7 +2569,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } // In case user assigned magnification to the given shortcut. if (targetName.equals(MAGNIFICATION_CONTROLLER_NAME)) { final boolean enabled = !getMagnificationController().isMagnifying(displayId); final boolean enabled = !getFullScreenMagnificationController().isMagnifying(displayId); logAccessibilityShortcutActivated(MAGNIFICATION_COMPONENT_NAME, shortcutType, enabled); sendAccessibilityButtonToInputFilter(displayId); return; Loading Loading @@ -2928,13 +2929,14 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } @Override public MagnificationController getMagnificationController() { public FullScreenMagnificationController getFullScreenMagnificationController() { synchronized (mLock) { if (mMagnificationController == null) { mMagnificationController = new MagnificationController(mContext, this, mLock); mMagnificationController.setUserId(mCurrentUserId); if (mFullScreenMagnificationController == null) { mFullScreenMagnificationController = new FullScreenMagnificationController(mContext, this, mLock); mFullScreenMagnificationController.setUserId(mCurrentUserId); } return mMagnificationController; return mFullScreenMagnificationController; } } Loading Loading @@ -3126,8 +3128,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } } } if (mMagnificationController != null) { mMagnificationController.onDisplayRemoved(displayId); if (mFullScreenMagnificationController != null) { mFullScreenMagnificationController.onDisplayRemoved(displayId); } mA11yWindowManager.stopTrackingWindows(displayId); } Loading
services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java +2 −2 Original line number Diff line number Diff line Loading @@ -120,7 +120,7 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect AccessibilityUserState userState = mUserStateWeakReference.get(); if (userState == null) return; userState.removeServiceLocked(this); mSystemSupport.getMagnificationController().resetAllIfNeeded(mId); mSystemSupport.getFullScreenMagnificationController().resetAllIfNeeded(mId); mActivityTaskManagerService.setAllowAppSwitches(mComponentName.flattenToString(), -1, userState.mUserId); resetLocked(); Loading Loading @@ -312,7 +312,7 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect userState.serviceDisconnectedLocked(this); } resetLocked(); mSystemSupport.getMagnificationController().resetAllIfNeeded(mId); mSystemSupport.getFullScreenMagnificationController().resetAllIfNeeded(mId); mSystemSupport.onClientChangeLocked(false); } } Loading
services/accessibility/java/com/android/server/accessibility/MagnificationController.java→services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationController.java +37 −32 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ * limitations under the License. */ package com.android.server.accessibility; package com.android.server.accessibility.magnification; import android.animation.ValueAnimator; import android.annotation.NonNull; Loading Loading @@ -42,6 +42,7 @@ import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.function.pooled.PooledLambda; import com.android.server.LocalServices; import com.android.server.accessibility.AccessibilityManagerService; import com.android.server.wm.WindowManagerInternal; import java.util.Locale; Loading @@ -56,9 +57,9 @@ import java.util.Locale; * magnification region. If a value is out of bounds, it will be adjusted to guarantee these * constraints. */ public class MagnificationController { public class FullScreenMagnificationController { private static final boolean DEBUG = false; private static final String LOG_TAG = "MagnificationController"; private static final String LOG_TAG = "FullScreenMagnificationController"; public static final float MIN_SCALE = 1.0f; public static final float MAX_SCALE = 8.0f; Loading Loading @@ -140,11 +141,12 @@ public class MagnificationController { /** * Unregisters magnification callback from window manager. Callbacks to * {@link MagnificationController#unregisterCallbackLocked(int, boolean)} after * {@link FullScreenMagnificationController#unregisterCallbackLocked(int, boolean)} after * unregistered. * * @param delete true if this instance should be removed from the SparseArray in * MagnificationController after unregistered, for example, display removed. * FullScreenMagnificationController after unregistered, for example, * display removed. */ @GuardedBy("mLock") void unregister(boolean delete) { Loading @@ -164,7 +166,8 @@ public class MagnificationController { * called after animation finished. * * @param delete true if this instance should be removed from the SparseArray in * MagnificationController after unregistered, for example, display removed. * FullScreenMagnificationController after unregistered, for example, * display removed. */ @GuardedBy("mLock") void unregisterPending(boolean delete) { Loading Loading @@ -257,15 +260,17 @@ public class MagnificationController { @Override public void onRotationChanged(int rotation) { // Treat as context change and reset final Message m = PooledLambda.obtainMessage(MagnificationController::resetIfNeeded, MagnificationController.this, mDisplayId, true); final Message m = PooledLambda.obtainMessage( FullScreenMagnificationController::resetIfNeeded, FullScreenMagnificationController.this, mDisplayId, true); mControllerCtx.getHandler().sendMessage(m); } @Override public void onUserContextChanged() { final Message m = PooledLambda.obtainMessage(MagnificationController::resetIfNeeded, MagnificationController.this, mDisplayId, true); final Message m = PooledLambda.obtainMessage( FullScreenMagnificationController::resetIfNeeded, FullScreenMagnificationController.this, mDisplayId, true); mControllerCtx.getHandler().sendMessage(m); } Loading Loading @@ -554,25 +559,25 @@ public class MagnificationController { float getMinOffsetXLocked() { final float viewportWidth = mMagnificationBounds.width(); final float viewportLeft = mMagnificationBounds.left; return (viewportLeft + viewportWidth) - (viewportLeft + viewportWidth) * mCurrentMagnificationSpec.scale; return (viewportLeft + viewportWidth) - (viewportLeft + viewportWidth) * mCurrentMagnificationSpec.scale; } float getMaxOffsetXLocked() { return mMagnificationBounds.left - mMagnificationBounds.left * mCurrentMagnificationSpec.scale; return mMagnificationBounds.left - mMagnificationBounds.left * mCurrentMagnificationSpec.scale; } float getMinOffsetYLocked() { final float viewportHeight = mMagnificationBounds.height(); final float viewportTop = mMagnificationBounds.top; return (viewportTop + viewportHeight) - (viewportTop + viewportHeight) * mCurrentMagnificationSpec.scale; return (viewportTop + viewportHeight) - (viewportTop + viewportHeight) * mCurrentMagnificationSpec.scale; } float getMaxOffsetYLocked() { return mMagnificationBounds.top - mMagnificationBounds.top * mCurrentMagnificationSpec.scale; return mMagnificationBounds.top - mMagnificationBounds.top * mCurrentMagnificationSpec.scale; } @Override Loading @@ -590,9 +595,9 @@ public class MagnificationController { } /** * MagnificationController Constructor * FullScreenMagnificationController Constructor */ public MagnificationController(@NonNull Context context, public FullScreenMagnificationController(@NonNull Context context, @NonNull AccessibilityManagerService ams, @NonNull Object lock) { this(new ControllerContext(context, ams, LocalServices.getService(WindowManagerInternal.class), Loading @@ -604,7 +609,7 @@ public class MagnificationController { * Constructor for tests */ @VisibleForTesting public MagnificationController(@NonNull ControllerContext ctx, @NonNull Object lock) { public FullScreenMagnificationController(@NonNull ControllerContext ctx, @NonNull Object lock) { mControllerCtx = ctx; mLock = lock; mMainThreadId = mControllerCtx.getContext().getMainLooper().getThread().getId(); Loading Loading @@ -1088,7 +1093,7 @@ public class MagnificationController { private void onScreenTurnedOff() { final Message m = PooledLambda.obtainMessage( MagnificationController::resetAllIfNeeded, this, false); FullScreenMagnificationController::resetAllIfNeeded, this, false); mControllerCtx.getHandler().sendMessage(m); } Loading Loading @@ -1253,13 +1258,13 @@ public class MagnificationController { synchronized (mLock) { if (mEnabled) { float fract = animation.getAnimatedFraction(); mTmpMagnificationSpec.scale = mStartMagnificationSpec.scale + (mEndMagnificationSpec.scale - mStartMagnificationSpec.scale) * fract; mTmpMagnificationSpec.offsetX = mStartMagnificationSpec.offsetX + (mEndMagnificationSpec.offsetX - mStartMagnificationSpec.offsetX) mTmpMagnificationSpec.scale = mStartMagnificationSpec.scale + (mEndMagnificationSpec.scale - mStartMagnificationSpec.scale) * fract; mTmpMagnificationSpec.offsetX = mStartMagnificationSpec.offsetX + (mEndMagnificationSpec.offsetX - mStartMagnificationSpec.offsetX) * fract; mTmpMagnificationSpec.offsetY = mStartMagnificationSpec.offsetY + (mEndMagnificationSpec.offsetY - mStartMagnificationSpec.offsetY) mTmpMagnificationSpec.offsetY = mStartMagnificationSpec.offsetY + (mEndMagnificationSpec.offsetY - mStartMagnificationSpec.offsetY) * fract; setMagnificationSpecLocked(mTmpMagnificationSpec); } Loading @@ -1269,10 +1274,10 @@ public class MagnificationController { private static class ScreenStateObserver extends BroadcastReceiver { private final Context mContext; private final MagnificationController mController; private final FullScreenMagnificationController mController; private boolean mRegistered = false; public ScreenStateObserver(Context context, MagnificationController controller) { ScreenStateObserver(Context context, FullScreenMagnificationController controller) { mContext = context; mController = controller; } Loading