Merge "Tapping settings button for opening/closing panel" into udc-qpr-dev

This commit is contained in:
Candice Lo
2023-05-18 23:53:22 +00:00
committed by Android (Google) Code Review
7 changed files with 34 additions and 13 deletions

View File

@@ -2390,6 +2390,8 @@
<string name="magnification_mode_switch_state_window">Magnify part of screen</string>
<!-- Click action label for magnification settings panel. [CHAR LIMIT=NONE] -->
<string name="magnification_open_settings_click_label">Open magnification settings</string>
<!-- Click action label for magnification settings panel. [CHAR LIMIT=NONE] -->
<string name="magnification_close_settings_click_label">Close 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>

View File

@@ -87,14 +87,15 @@ public class MagnificationSettingsController implements ComponentCallbacks {
}
/**
* Shows magnification settings panel {@link WindowMagnificationSettings}.
* Toggles the visibility of magnification settings panel {@link WindowMagnificationSettings}.
* We show the panel if it is not visible. Otherwise, hide the panel.
*/
void showMagnificationSettings() {
void toggleSettingsPanelVisibility() {
if (!mWindowMagnificationSettings.isSettingPanelShowing()) {
onConfigurationChanged(mContext.getResources().getConfiguration());
mContext.registerComponentCallbacks(this);
}
mWindowMagnificationSettings.showSettingPanel();
mWindowMagnificationSettings.toggleSettingsPanelVisibility();
}
void closeMagnificationSettings() {

View File

@@ -171,7 +171,7 @@ public class WindowMagnification implements CoreStartable, CommandQueue.Callback
mModeSwitchesController.setClickListenerDelegate(
displayId -> mHandler.post(() -> {
showMagnificationSettingsPanel(displayId);
toggleSettingsPanelVisibility(displayId);
}));
}
@@ -254,11 +254,11 @@ public class WindowMagnification implements CoreStartable, CommandQueue.Callback
}
@MainThread
void showMagnificationSettingsPanel(int displayId) {
void toggleSettingsPanelVisibility(int displayId) {
final MagnificationSettingsController magnificationSettingsController =
mMagnificationSettingsSupplier.get(displayId);
if (magnificationSettingsController != null) {
magnificationSettingsController.showMagnificationSettings();
magnificationSettingsController.toggleSettingsPanelVisibility();
}
}
@@ -335,7 +335,7 @@ public class WindowMagnification implements CoreStartable, CommandQueue.Callback
@Override
public void onClickSettingsButton(int displayId) {
mHandler.post(() -> {
showMagnificationSettingsPanel(displayId);
toggleSettingsPanelVisibility(displayId);
});
}
};

View File

@@ -221,6 +221,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
private boolean mAllowDiagonalScrolling = false;
private boolean mEditSizeEnable = false;
private boolean mSettingsPanelVisibility = false;
@Nullable
private final MirrorWindowControl mMirrorWindowControl;
@@ -1399,6 +1400,8 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
return;
}
mSettingsPanelVisibility = settingsPanelIsShown;
mDragView.setBackground(mContext.getResources().getDrawable(settingsPanelIsShown
? R.drawable.accessibility_window_magnification_drag_handle_background_change
: R.drawable.accessibility_window_magnification_drag_handle_background));
@@ -1439,12 +1442,19 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
private class MirrorWindowA11yDelegate extends View.AccessibilityDelegate {
private CharSequence getClickAccessibilityActionLabel() {
return mSettingsPanelVisibility
? mContext.getResources().getString(
R.string.magnification_close_settings_click_label)
: mContext.getResources().getString(
R.string.magnification_open_settings_click_label);
}
@Override
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(host, info);
final AccessibilityAction clickAction = new AccessibilityAction(
AccessibilityAction.ACTION_CLICK.getId(), mContext.getResources().getString(
R.string.magnification_open_settings_click_label));
AccessibilityAction.ACTION_CLICK.getId(), getClickAccessibilityActionLabel());
info.addAction(clickAction);
info.setClickable(true);
info.addAction(

View File

@@ -311,6 +311,14 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
mCallback.onSettingsPanelVisibilityChanged(/* shown= */ false);
}
public void toggleSettingsPanelVisibility() {
if (!mIsVisible) {
showSettingPanel();
} else {
hideSettingPanel();
}
}
public void showSettingPanel() {
showSettingPanel(true);
}

View File

@@ -73,9 +73,9 @@ public class MagnificationSettingsControllerTest extends SysuiTestCase {
@Test
public void testShowSettingsPanel() {
mMagnificationSettingsController.showMagnificationSettings();
mMagnificationSettingsController.toggleSettingsPanelVisibility();
verify(mWindowMagnificationSettings).showSettingPanel();
verify(mWindowMagnificationSettings).toggleSettingsPanelVisibility();
}
@Test

View File

@@ -110,7 +110,7 @@ public class WindowMagnificationTest extends SysuiTestCase {
mWindowMagnification.mMagnificationSettingsControllerCallback
.onSettingsPanelVisibilityChanged(TEST_DISPLAY, /* shown= */ true);
return null;
}).when(mMagnificationSettingsController).showMagnificationSettings();
}).when(mMagnificationSettingsController).toggleSettingsPanelVisibility();
doAnswer(invocation -> {
mWindowMagnification.mMagnificationSettingsControllerCallback
.onSettingsPanelVisibilityChanged(TEST_DISPLAY, /* shown= */ false);
@@ -198,7 +198,7 @@ public class WindowMagnificationTest extends SysuiTestCase {
mWindowMagnification.mWindowMagnifierCallback.onClickSettingsButton(TEST_DISPLAY);
waitForIdleSync();
verify(mMagnificationSettingsController).showMagnificationSettings();
verify(mMagnificationSettingsController).toggleSettingsPanelVisibility();
verify(mA11yLogger).log(
eq(MagnificationSettingsEvent.MAGNIFICATION_SETTINGS_PANEL_OPENED));
}