diff options
2 files changed, 13 insertions, 5 deletions
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityUserState.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityUserState.java index 51b49ed1e3bc..55dc196fc18d 100644 --- a/services/accessibility/java/com/android/server/accessibility/AccessibilityUserState.java +++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityUserState.java @@ -37,6 +37,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.content.ComponentName; import android.content.Context; +import android.content.pm.PackageManager; import android.os.Binder; import android.os.RemoteCallbackList; import android.provider.Settings; @@ -123,8 +124,8 @@ class AccessibilityUserState { private int mInteractiveUiTimeout = 0; private int mLastSentClientState = -1; - /** {@code true} if the device config supports magnification area. */ - private final boolean mSupportMagnificationArea; + /** {@code true} if the device config supports window magnification. */ + private final boolean mSupportWindowMagnification; // The magnification modes on displays. private final SparseIntArray mMagnificationModes = new SparseIntArray(); // The magnification capabilities used to know magnification mode could be switched. @@ -148,7 +149,7 @@ class AccessibilityUserState { boolean isValidMagnificationModeLocked(int displayId) { final int mode = getMagnificationModeLocked(displayId); - if (!mSupportMagnificationArea + if (!mSupportWindowMagnification && mode == Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW) { return false; } @@ -170,8 +171,9 @@ class AccessibilityUserState { R.color.accessibility_focus_highlight_color); mFocusStrokeWidth = mFocusStrokeWidthDefaultValue; mFocusColor = mFocusColorDefaultValue; - mSupportMagnificationArea = mContext.getResources().getBoolean( - R.bool.config_magnification_area); + mSupportWindowMagnification = mContext.getResources().getBoolean( + R.bool.config_magnification_area) && mContext.getPackageManager().hasSystemFeature( + PackageManager.FEATURE_WINDOW_MAGNIFICATION); } boolean isHandlingAccessibilityEventsLocked() { diff --git a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityUserStateTest.java b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityUserStateTest.java index 27637c2ba5d5..ed0336a5a4ea 100644 --- a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityUserStateTest.java +++ b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityUserStateTest.java @@ -21,6 +21,7 @@ import static android.accessibilityservice.AccessibilityService.SHOW_MODE_HARD_K import static android.accessibilityservice.AccessibilityService.SHOW_MODE_HARD_KEYBOARD_OVERRIDDEN; import static android.accessibilityservice.AccessibilityService.SHOW_MODE_HIDDEN; import static android.accessibilityservice.AccessibilityService.SHOW_MODE_IGNORE_HARD_KEYBOARD; +import static android.content.pm.PackageManager.FEATURE_WINDOW_MAGNIFICATION; import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN; import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW; import static android.view.accessibility.AccessibilityManager.STATE_FLAG_ACCESSIBILITY_ENABLED; @@ -42,6 +43,7 @@ import static org.mockito.Mockito.when; import android.accessibilityservice.AccessibilityServiceInfo; import android.content.ComponentName; import android.content.Context; +import android.content.pm.PackageManager; import android.content.res.Resources; import android.graphics.Color; import android.provider.Settings; @@ -92,6 +94,8 @@ public class AccessibilityUserStateTest { @Mock private AccessibilityUserState.ServiceInfoChangeListener mMockListener; + @Mock private PackageManager mMockPackageManager; + @Mock private Context mMockContext; private MockContentResolver mMockResolver; @@ -113,6 +117,8 @@ public class AccessibilityUserStateTest { when(mMockServiceInfo.getComponentName()).thenReturn(COMPONENT_NAME); when(mMockConnection.getServiceInfo()).thenReturn(mMockServiceInfo); when(mMockContext.getResources()).thenReturn(resources); + when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager); + when(mMockPackageManager.hasSystemFeature(FEATURE_WINDOW_MAGNIFICATION)).thenReturn(true); mFocusStrokeWidthDefaultValue = resources.getDimensionPixelSize(R.dimen.accessibility_focus_highlight_stroke_width); |