Loading packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java +0 −35 Original line number Diff line number Diff line Loading @@ -21,19 +21,15 @@ import android.annotation.NonNull; import android.content.Context; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.database.ContentObserver; import android.graphics.Rect; import android.os.Handler; import android.os.RemoteException; import android.provider.Settings; import android.util.Log; import android.view.Display; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.IWindowMagnificationConnection; import android.view.accessibility.IWindowMagnificationConnectionCallback; import com.android.internal.annotations.VisibleForTesting; import com.android.systemui.R; import com.android.systemui.SystemUI; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.statusbar.CommandQueue; Loading Loading @@ -89,37 +85,6 @@ public class WindowMagnification extends SystemUI implements WindowMagnifierCall @Override public void start() { mCommandQueue.addCallback(this); mContext.getContentResolver().registerContentObserver( Settings.Secure.getUriFor(Settings.Secure.WINDOW_MAGNIFICATION), true, new ContentObserver(mHandler) { @Override public void onChange(boolean selfChange) { updateWindowMagnification(); } }); } private void updateWindowMagnification() { try { boolean enable = Settings.Secure.getInt(mContext.getContentResolver(), Settings.Secure.WINDOW_MAGNIFICATION) != 0; if (enable) { enableMagnification( mContext.getResources().getInteger(R.integer.magnification_default_scale)); } else { disableMagnification(); } } catch (Settings.SettingNotFoundException e) { disableMagnification(); } } private void enableMagnification(float scale) { enableWindowMagnification(Display.DEFAULT_DISPLAY, scale, Float.NaN, Float.NaN); } private void disableMagnification() { disableWindowMagnification(Display.DEFAULT_DISPLAY); } @MainThread Loading services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +23 −3 Original line number Diff line number Diff line Loading @@ -108,6 +108,7 @@ import com.android.internal.util.IntPair; import com.android.server.LocalServices; import com.android.server.SystemService; import com.android.server.accessibility.magnification.WindowMagnificationManager; import com.android.server.statusbar.StatusBarManagerInternal; import com.android.server.wm.ActivityTaskManagerInternal; import com.android.server.wm.WindowManagerInternal; Loading Loading @@ -1368,7 +1369,26 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub return relevantEventTypes; } private void updateMagnificationModeChangeSettingsLocked() { private void updateMagnificationModeChangeSettingsLocked(AccessibilityUserState userState) { if (userState.mUserId != mCurrentUserId) { return; } final boolean windowMagnificationEnabled = userState.isShortcutMagnificationEnabledLocked() && (userState.getMagnificationModeLocked() == Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW); if (windowMagnificationEnabled == getWindowMagnificationMgr().isConnected()) { return; } final long identity = Binder.clearCallingIdentity(); try { final StatusBarManagerInternal service = LocalServices.getService( StatusBarManagerInternal.class); service.requestWindowMagnificationConnection(windowMagnificationEnabled); } finally { Binder.restoreCallingIdentity(identity); } mMainHandler.sendMessage(obtainMessage( AccessibilityManagerService::notifyMagnificationModeChangeToInputFilter, this)); Loading Loading @@ -1766,7 +1786,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub scheduleUpdateClientsIfNeededLocked(userState); updateAccessibilityShortcutKeyTargetsLocked(userState); updateAccessibilityButtonTargetsLocked(userState); updateMagnificationModeChangeSettingsLocked(); updateMagnificationModeChangeSettingsLocked(userState); } private void updateWindowsForAccessibilityCallbackLocked(AccessibilityUserState userState) { Loading Loading @@ -3097,7 +3117,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub readUserRecommendedUiTimeoutSettingsLocked(userState); } else if (mMagnificationModeUri.equals(uri)) { if (readMagnificationModeLocked(userState)) { updateMagnificationModeChangeSettingsLocked(); updateMagnificationModeChangeSettingsLocked(userState); } } } Loading services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java +7 −0 Original line number Diff line number Diff line Loading @@ -107,6 +107,13 @@ public final class WindowMagnificationManager implements mUserId = userId; } /** * * @return {@code true} if {@link IWindowMagnificationConnection} is available */ public boolean isConnected() { return mConnectionWrapper != null; } private void resetWindowMagnifiers() { synchronized (mLock) { Loading services/tests/servicestests/src/com/android/server/accessibility/magnification/WindowMagnificationManagerTest.java +9 −0 Original line number Diff line number Diff line Loading @@ -245,6 +245,15 @@ public class WindowMagnificationManagerTest { assertFalse(mWindowMagnificationManager.isWindowMagnifierEnabled(TEST_DISPLAY)); } @Test public void isConnected_returnExpectedValue() throws RemoteException { assertFalse(mWindowMagnificationManager.isConnected()); mWindowMagnificationManager.setConnection(mMockConnection.getConnection()); assertTrue(mWindowMagnificationManager.isConnected()); } private MotionEvent generatePointersDownEvent(PointF[] pointersLocation) { final int len = pointersLocation.length; Loading Loading
packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java +0 −35 Original line number Diff line number Diff line Loading @@ -21,19 +21,15 @@ import android.annotation.NonNull; import android.content.Context; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.database.ContentObserver; import android.graphics.Rect; import android.os.Handler; import android.os.RemoteException; import android.provider.Settings; import android.util.Log; import android.view.Display; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.IWindowMagnificationConnection; import android.view.accessibility.IWindowMagnificationConnectionCallback; import com.android.internal.annotations.VisibleForTesting; import com.android.systemui.R; import com.android.systemui.SystemUI; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.statusbar.CommandQueue; Loading Loading @@ -89,37 +85,6 @@ public class WindowMagnification extends SystemUI implements WindowMagnifierCall @Override public void start() { mCommandQueue.addCallback(this); mContext.getContentResolver().registerContentObserver( Settings.Secure.getUriFor(Settings.Secure.WINDOW_MAGNIFICATION), true, new ContentObserver(mHandler) { @Override public void onChange(boolean selfChange) { updateWindowMagnification(); } }); } private void updateWindowMagnification() { try { boolean enable = Settings.Secure.getInt(mContext.getContentResolver(), Settings.Secure.WINDOW_MAGNIFICATION) != 0; if (enable) { enableMagnification( mContext.getResources().getInteger(R.integer.magnification_default_scale)); } else { disableMagnification(); } } catch (Settings.SettingNotFoundException e) { disableMagnification(); } } private void enableMagnification(float scale) { enableWindowMagnification(Display.DEFAULT_DISPLAY, scale, Float.NaN, Float.NaN); } private void disableMagnification() { disableWindowMagnification(Display.DEFAULT_DISPLAY); } @MainThread Loading
services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +23 −3 Original line number Diff line number Diff line Loading @@ -108,6 +108,7 @@ import com.android.internal.util.IntPair; import com.android.server.LocalServices; import com.android.server.SystemService; import com.android.server.accessibility.magnification.WindowMagnificationManager; import com.android.server.statusbar.StatusBarManagerInternal; import com.android.server.wm.ActivityTaskManagerInternal; import com.android.server.wm.WindowManagerInternal; Loading Loading @@ -1368,7 +1369,26 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub return relevantEventTypes; } private void updateMagnificationModeChangeSettingsLocked() { private void updateMagnificationModeChangeSettingsLocked(AccessibilityUserState userState) { if (userState.mUserId != mCurrentUserId) { return; } final boolean windowMagnificationEnabled = userState.isShortcutMagnificationEnabledLocked() && (userState.getMagnificationModeLocked() == Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW); if (windowMagnificationEnabled == getWindowMagnificationMgr().isConnected()) { return; } final long identity = Binder.clearCallingIdentity(); try { final StatusBarManagerInternal service = LocalServices.getService( StatusBarManagerInternal.class); service.requestWindowMagnificationConnection(windowMagnificationEnabled); } finally { Binder.restoreCallingIdentity(identity); } mMainHandler.sendMessage(obtainMessage( AccessibilityManagerService::notifyMagnificationModeChangeToInputFilter, this)); Loading Loading @@ -1766,7 +1786,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub scheduleUpdateClientsIfNeededLocked(userState); updateAccessibilityShortcutKeyTargetsLocked(userState); updateAccessibilityButtonTargetsLocked(userState); updateMagnificationModeChangeSettingsLocked(); updateMagnificationModeChangeSettingsLocked(userState); } private void updateWindowsForAccessibilityCallbackLocked(AccessibilityUserState userState) { Loading Loading @@ -3097,7 +3117,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub readUserRecommendedUiTimeoutSettingsLocked(userState); } else if (mMagnificationModeUri.equals(uri)) { if (readMagnificationModeLocked(userState)) { updateMagnificationModeChangeSettingsLocked(); updateMagnificationModeChangeSettingsLocked(userState); } } } Loading
services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java +7 −0 Original line number Diff line number Diff line Loading @@ -107,6 +107,13 @@ public final class WindowMagnificationManager implements mUserId = userId; } /** * * @return {@code true} if {@link IWindowMagnificationConnection} is available */ public boolean isConnected() { return mConnectionWrapper != null; } private void resetWindowMagnifiers() { synchronized (mLock) { Loading
services/tests/servicestests/src/com/android/server/accessibility/magnification/WindowMagnificationManagerTest.java +9 −0 Original line number Diff line number Diff line Loading @@ -245,6 +245,15 @@ public class WindowMagnificationManagerTest { assertFalse(mWindowMagnificationManager.isWindowMagnifierEnabled(TEST_DISPLAY)); } @Test public void isConnected_returnExpectedValue() throws RemoteException { assertFalse(mWindowMagnificationManager.isConnected()); mWindowMagnificationManager.setConnection(mMockConnection.getConnection()); assertTrue(mWindowMagnificationManager.isConnected()); } private MotionEvent generatePointersDownEvent(PointF[] pointersLocation) { final int len = pointersLocation.length; Loading