Fallback magnification mode settings if window magnification feature is not supported
When the platform does not support window magnification feature, AccessibilityManagerService should fallback magnification mode settings if the magnification mode of userState is window mode that is invalid. Bug: 213414385 Test: manual test Change-Id: I810131f7b1925b6b010c21d822b521d29ee3a646
This commit is contained in:
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user