Loading packages/SystemUI/res/layout/window_magnification_settings_view.xml +3 −1 Original line number Diff line number Diff line Loading @@ -21,7 +21,9 @@ android:layout_height="wrap_content" android:background="@drawable/accessibility_magnification_setting_view_bg" android:orientation="vertical" android:padding="@dimen/magnification_setting_background_padding"> android:padding="@dimen/magnification_setting_background_padding" android:focusable="true" android:contentDescription="@string/accessibility_magnification_settings_panel_description"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" Loading packages/SystemUI/res/values/strings.xml +4 −0 Original line number Diff line number Diff line Loading @@ -2337,6 +2337,8 @@ <string name="magnification_mode_switch_state_window">Magnify part of screen</string> <!-- Click action label for magnification switch. [CHAR LIMIT=NONE] --> <string name="magnification_mode_switch_click_label">Switch</string> <!-- Click action label for magnification settings panel. [CHAR LIMIT=NONE] --> <string name="magnification_open_settings_click_label">Open magnification settings</string> <!-- Label of the corner of a rectangle that you can tap and drag to resize the magnification area. [CHAR LIMIT=NONE] --> <string name="magnification_drag_corner_to_resize">Drag corner to resize</string> Loading @@ -2358,6 +2360,8 @@ <!-- Description of the window magnification Bottom handle [CHAR LIMIT=NONE]--> <string name="accessibility_magnification_bottom_handle">Bottom handle</string> <!-- Description of the window magnification panel [CHAR LIMIT=NONE]--> <string name="accessibility_magnification_settings_panel_description">Magnification settings</string> <!-- Title of the window magnification panel option Magnifier size [CHAR LIMIT=NONE]--> <string name="accessibility_magnifier_size">Magnifier size</string> <!-- Title of the window magnification panel option Zoom [CHAR LIMIT=NONE]--> Loading packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java +1 −1 Original line number Diff line number Diff line Loading @@ -1468,7 +1468,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold super.onInitializeAccessibilityNodeInfo(host, info); final AccessibilityAction clickAction = new AccessibilityAction( AccessibilityAction.ACTION_CLICK.getId(), mContext.getResources().getString( R.string.magnification_mode_switch_click_label)); R.string.magnification_open_settings_click_label)); info.addAction(clickAction); info.setClickable(true); info.addAction( Loading packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationSettings.java +7 −24 Original line number Diff line number Diff line Loading @@ -215,9 +215,7 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest private boolean performA11yAction(View view, int action) { final Rect windowBounds = mWindowManager.getCurrentWindowMetrics().getBounds(); if (action == AccessibilityAction.ACTION_CLICK.getId()) { handleSingleTap(view); } else if (action == R.id.accessibility_action_move_up) { if (action == R.id.accessibility_action_move_up) { moveButton(0, -windowBounds.height()); } else if (action == R.id.accessibility_action_move_down) { moveButton(0, windowBounds.height()); Loading Loading @@ -264,8 +262,6 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest } else if (id == R.id.magnifier_full_button) { hideSettingPanel(); toggleMagnificationMode(); } else { hideSettingPanel(); } } }; Loading @@ -273,7 +269,6 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest @Override public boolean onSingleTap(View view) { mSingleTapDetected = true; handleSingleTap(view); return true; } Loading Loading @@ -358,6 +353,10 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest } mWindowManager.addView(mSettingView, mParams); if (resetPosition) { // Request focus on the settings panel when position of the panel is reset. mSettingView.requestFocus(); } // Exclude magnification switch button from system gesture area. setSystemGestureExclusion(); Loading Loading @@ -385,8 +384,8 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest mSettingView = (LinearLayout) View.inflate(mContext, R.layout.window_magnification_settings_view, null); mSettingView.setClickable(true); mSettingView.setFocusable(true); mSettingView.setFocusableInTouchMode(true); mSettingView.setOnTouchListener(this::onTouch); mPanelView = mSettingView.findViewById(R.id.magnifier_panel_view); Loading Loading @@ -499,22 +498,6 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest } } private void handleSingleTap(View view) { int id = view.getId(); if (id == R.id.magnifier_small_button) { setMagnifierSize(MagnificationSize.SMALL); } else if (id == R.id.magnifier_medium_button) { setMagnifierSize(MagnificationSize.MEDIUM); } else if (id == R.id.magnifier_large_button) { setMagnifierSize(MagnificationSize.LARGE); } else if (id == R.id.magnifier_full_button) { hideSettingPanel(); toggleMagnificationMode(); } else { hideSettingPanel(); } } public void editMagnifierSizeMode(boolean enable) { setEditMagnifierSizeMode(enable); updateSelectedButton(MagnificationSize.NONE); Loading Loading @@ -551,7 +534,7 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, LayoutParams.TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY, LayoutParams.FLAG_NOT_FOCUSABLE, /* _flags= */ 0, PixelFormat.TRANSPARENT); params.gravity = Gravity.TOP | Gravity.START; params.accessibilityTitle = getAccessibilityWindowTitle(context); Loading packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationSettingsTest.java +7 −0 Original line number Diff line number Diff line Loading @@ -201,6 +201,13 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase { assertThat(magnifierMediumButton.isSelected()).isTrue(); } @Test public void showSettingPanel_focusOnThePanel() { mWindowMagnificationSettings.showSettingPanel(); assertThat(mSettingView.isFocused()).isTrue(); } private <T extends View> T getInternalView(@IdRes int idRes) { T view = mSettingView.findViewById(idRes); assertNotNull(view); Loading Loading
packages/SystemUI/res/layout/window_magnification_settings_view.xml +3 −1 Original line number Diff line number Diff line Loading @@ -21,7 +21,9 @@ android:layout_height="wrap_content" android:background="@drawable/accessibility_magnification_setting_view_bg" android:orientation="vertical" android:padding="@dimen/magnification_setting_background_padding"> android:padding="@dimen/magnification_setting_background_padding" android:focusable="true" android:contentDescription="@string/accessibility_magnification_settings_panel_description"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" Loading
packages/SystemUI/res/values/strings.xml +4 −0 Original line number Diff line number Diff line Loading @@ -2337,6 +2337,8 @@ <string name="magnification_mode_switch_state_window">Magnify part of screen</string> <!-- Click action label for magnification switch. [CHAR LIMIT=NONE] --> <string name="magnification_mode_switch_click_label">Switch</string> <!-- Click action label for magnification settings panel. [CHAR LIMIT=NONE] --> <string name="magnification_open_settings_click_label">Open magnification settings</string> <!-- Label of the corner of a rectangle that you can tap and drag to resize the magnification area. [CHAR LIMIT=NONE] --> <string name="magnification_drag_corner_to_resize">Drag corner to resize</string> Loading @@ -2358,6 +2360,8 @@ <!-- Description of the window magnification Bottom handle [CHAR LIMIT=NONE]--> <string name="accessibility_magnification_bottom_handle">Bottom handle</string> <!-- Description of the window magnification panel [CHAR LIMIT=NONE]--> <string name="accessibility_magnification_settings_panel_description">Magnification settings</string> <!-- Title of the window magnification panel option Magnifier size [CHAR LIMIT=NONE]--> <string name="accessibility_magnifier_size">Magnifier size</string> <!-- Title of the window magnification panel option Zoom [CHAR LIMIT=NONE]--> Loading
packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java +1 −1 Original line number Diff line number Diff line Loading @@ -1468,7 +1468,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold super.onInitializeAccessibilityNodeInfo(host, info); final AccessibilityAction clickAction = new AccessibilityAction( AccessibilityAction.ACTION_CLICK.getId(), mContext.getResources().getString( R.string.magnification_mode_switch_click_label)); R.string.magnification_open_settings_click_label)); info.addAction(clickAction); info.setClickable(true); info.addAction( Loading
packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationSettings.java +7 −24 Original line number Diff line number Diff line Loading @@ -215,9 +215,7 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest private boolean performA11yAction(View view, int action) { final Rect windowBounds = mWindowManager.getCurrentWindowMetrics().getBounds(); if (action == AccessibilityAction.ACTION_CLICK.getId()) { handleSingleTap(view); } else if (action == R.id.accessibility_action_move_up) { if (action == R.id.accessibility_action_move_up) { moveButton(0, -windowBounds.height()); } else if (action == R.id.accessibility_action_move_down) { moveButton(0, windowBounds.height()); Loading Loading @@ -264,8 +262,6 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest } else if (id == R.id.magnifier_full_button) { hideSettingPanel(); toggleMagnificationMode(); } else { hideSettingPanel(); } } }; Loading @@ -273,7 +269,6 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest @Override public boolean onSingleTap(View view) { mSingleTapDetected = true; handleSingleTap(view); return true; } Loading Loading @@ -358,6 +353,10 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest } mWindowManager.addView(mSettingView, mParams); if (resetPosition) { // Request focus on the settings panel when position of the panel is reset. mSettingView.requestFocus(); } // Exclude magnification switch button from system gesture area. setSystemGestureExclusion(); Loading Loading @@ -385,8 +384,8 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest mSettingView = (LinearLayout) View.inflate(mContext, R.layout.window_magnification_settings_view, null); mSettingView.setClickable(true); mSettingView.setFocusable(true); mSettingView.setFocusableInTouchMode(true); mSettingView.setOnTouchListener(this::onTouch); mPanelView = mSettingView.findViewById(R.id.magnifier_panel_view); Loading Loading @@ -499,22 +498,6 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest } } private void handleSingleTap(View view) { int id = view.getId(); if (id == R.id.magnifier_small_button) { setMagnifierSize(MagnificationSize.SMALL); } else if (id == R.id.magnifier_medium_button) { setMagnifierSize(MagnificationSize.MEDIUM); } else if (id == R.id.magnifier_large_button) { setMagnifierSize(MagnificationSize.LARGE); } else if (id == R.id.magnifier_full_button) { hideSettingPanel(); toggleMagnificationMode(); } else { hideSettingPanel(); } } public void editMagnifierSizeMode(boolean enable) { setEditMagnifierSizeMode(enable); updateSelectedButton(MagnificationSize.NONE); Loading Loading @@ -551,7 +534,7 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, LayoutParams.TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY, LayoutParams.FLAG_NOT_FOCUSABLE, /* _flags= */ 0, PixelFormat.TRANSPARENT); params.gravity = Gravity.TOP | Gravity.START; params.accessibilityTitle = getAccessibilityWindowTitle(context); Loading
packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationSettingsTest.java +7 −0 Original line number Diff line number Diff line Loading @@ -201,6 +201,13 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase { assertThat(magnifierMediumButton.isSelected()).isTrue(); } @Test public void showSettingPanel_focusOnThePanel() { mWindowMagnificationSettings.showSettingPanel(); assertThat(mSettingView.isFocused()).isTrue(); } private <T extends View> T getInternalView(@IdRes int idRes) { T view = mSettingView.findViewById(idRes); assertNotNull(view); Loading