Merge "Hide fullscreen button in partial only mode" into udc-dev

This commit is contained in:
Candice Lo
2023-05-12 01:45:55 +00:00
committed by Android (Google) Code Review
6 changed files with 190 additions and 76 deletions

View File

@@ -87,19 +87,14 @@ public class MagnificationSettingsController implements ComponentCallbacks {
} }
/** /**
* Shows magnification settings panel {@link WindowMagnificationSettings}. The panel ui would be * Shows magnification settings panel {@link WindowMagnificationSettings}.
* various for different magnification mode.
*
* @param mode The magnification mode
* @see android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW
* @see android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN
*/ */
void showMagnificationSettings(int mode) { void showMagnificationSettings() {
if (!mWindowMagnificationSettings.isSettingPanelShowing()) { if (!mWindowMagnificationSettings.isSettingPanelShowing()) {
onConfigurationChanged(mContext.getResources().getConfiguration()); onConfigurationChanged(mContext.getResources().getConfiguration());
mContext.registerComponentCallbacks(this); mContext.registerComponentCallbacks(this);
} }
mWindowMagnificationSettings.showSettingPanel(mode); mWindowMagnificationSettings.showSettingPanel();
} }
void closeMagnificationSettings() { void closeMagnificationSettings() {

View File

@@ -16,7 +16,6 @@
package com.android.systemui.accessibility; package com.android.systemui.accessibility;
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN;
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW; import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW;
import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY; import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY;
@@ -169,8 +168,7 @@ public class WindowMagnification implements CoreStartable, CommandQueue.Callback
mModeSwitchesController.setClickListenerDelegate( mModeSwitchesController.setClickListenerDelegate(
displayId -> mHandler.post(() -> { displayId -> mHandler.post(() -> {
showMagnificationSettingsPanel(displayId, showMagnificationSettingsPanel(displayId);
ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
})); }));
} }
@@ -253,11 +251,11 @@ public class WindowMagnification implements CoreStartable, CommandQueue.Callback
} }
@MainThread @MainThread
void showMagnificationSettingsPanel(int displayId, int mode) { void showMagnificationSettingsPanel(int displayId) {
final MagnificationSettingsController magnificationSettingsController = final MagnificationSettingsController magnificationSettingsController =
mMagnificationSettingsSupplier.get(displayId); mMagnificationSettingsSupplier.get(displayId);
if (magnificationSettingsController != null) { if (magnificationSettingsController != null) {
magnificationSettingsController.showMagnificationSettings(mode); magnificationSettingsController.showMagnificationSettings();
} }
} }
@@ -334,7 +332,7 @@ public class WindowMagnification implements CoreStartable, CommandQueue.Callback
@Override @Override
public void onClickSettingsButton(int displayId) { public void onClickSettingsButton(int displayId) {
mHandler.post(() -> { mHandler.post(() -> {
showMagnificationSettingsPanel(displayId, ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW); showMagnificationSettingsPanel(displayId);
}); });
} }
}; };

View File

@@ -16,6 +16,7 @@
package com.android.systemui.accessibility; package com.android.systemui.accessibility;
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_ALL;
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN; import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN;
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_NONE; import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_NONE;
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW; import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW;
@@ -27,6 +28,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.pm.ActivityInfo; import android.content.pm.ActivityInfo;
import android.database.ContentObserver;
import android.graphics.Insets; import android.graphics.Insets;
import android.graphics.PixelFormat; import android.graphics.PixelFormat;
import android.graphics.Rect; import android.graphics.Rect;
@@ -101,8 +103,7 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
private static final float A11Y_SCALE_MIN_VALUE = 1.0f; private static final float A11Y_SCALE_MIN_VALUE = 1.0f;
private WindowMagnificationSettingsCallback mCallback; private WindowMagnificationSettingsCallback mCallback;
// the magnification mode that triggers showing the panel private ContentObserver mMagnificationCapabilityObserver;
private int mTriggeringMode = ACCESSIBILITY_MAGNIFICATION_MODE_NONE;
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
@IntDef({ @IntDef({
@@ -142,6 +143,16 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
mGestureDetector = new MagnificationGestureDetector(context, mGestureDetector = new MagnificationGestureDetector(context,
context.getMainThreadHandler(), this); context.getMainThreadHandler(), this);
mMagnificationCapabilityObserver = new ContentObserver(
mContext.getMainThreadHandler()) {
@Override
public void onChange(boolean selfChange) {
mSettingView.post(() -> {
updateUIControlsIfNeeded();
});
}
};
} }
private class ZoomSeekbarChangeListener implements SeekBar.OnSeekBarChangeListener { private class ZoomSeekbarChangeListener implements SeekBar.OnSeekBarChangeListener {
@@ -257,7 +268,7 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
@Override @Override
public boolean onFinish(float xOffset, float yOffset) { public boolean onFinish(float xOffset, float yOffset) {
if (!mSingleTapDetected) { if (!mSingleTapDetected) {
showSettingPanel(mTriggeringMode); showSettingPanel();
} }
mSingleTapDetected = false; mSingleTapDetected = false;
return true; return true;
@@ -285,7 +296,8 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
return; return;
} }
// Reset button status. // Unregister observer before removing view
mSecureSettings.unregisterContentObserver(mMagnificationCapabilityObserver);
mWindowManager.removeView(mSettingView); mWindowManager.removeView(mSettingView);
mIsVisible = false; mIsVisible = false;
if (resetPosition) { if (resetPosition) {
@@ -297,16 +309,8 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
mCallback.onSettingsPanelVisibilityChanged(/* shown= */ false); mCallback.onSettingsPanelVisibilityChanged(/* shown= */ false);
} }
/** public void showSettingPanel() {
* Shows magnification settings panel. The panel ui would be various for showSettingPanel(true);
* different magnification mode.
*
* @param mode The magnification mode
* @see android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW
* @see android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN
*/
public void showSettingPanel(int mode) {
showSettingPanel(mode, true);
} }
public boolean isSettingPanelShowing() { public boolean isSettingPanelShowing() {
@@ -322,18 +326,15 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
} }
/** /**
* Shows magnification panel for set magnification. * Shows the panel for magnification settings.
* When the panel is going to be visible by calling this method, the layout position can be * When the panel is going to be visible by calling this method, the layout position can be
* reset depending on the flag. * reset depending on the flag.
* *
* @param mode The magnification mode * @param resetPosition if the panel position needs to be reset
* @param resetPosition if the button position needs be reset
*/ */
private void showSettingPanel(int mode, boolean resetPosition) { private void showSettingPanel(boolean resetPosition) {
if (!mIsVisible) { if (!mIsVisible) {
updateUIControlsIfNeed(mode); updateUIControlsIfNeeded();
mTriggeringMode = mode;
if (resetPosition) { if (resetPosition) {
mDraggableWindowBounds.set(getDraggableWindowBounds()); mDraggableWindowBounds.set(getDraggableWindowBounds());
mParams.x = mDraggableWindowBounds.right; mParams.x = mDraggableWindowBounds.right;
@@ -342,6 +343,11 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
mWindowManager.addView(mSettingView, mParams); mWindowManager.addView(mSettingView, mParams);
mSecureSettings.registerContentObserverForUser(
Settings.Secure.ACCESSIBILITY_MAGNIFICATION_CAPABILITY,
mMagnificationCapabilityObserver,
UserHandle.USER_CURRENT);
// Exclude magnification switch button from system gesture area. // Exclude magnification switch button from system gesture area.
setSystemGestureExclusion(); setSystemGestureExclusion();
mIsVisible = true; mIsVisible = true;
@@ -359,35 +365,74 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
mContext.registerReceiver(mScreenOffReceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF)); mContext.registerReceiver(mScreenOffReceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
} }
private void updateUIControlsIfNeed(int mode) { private int getMagnificationMode() {
if (mode == mTriggeringMode) { return mSecureSettings.getIntForUser(
return; Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE,
ACCESSIBILITY_MAGNIFICATION_MODE_NONE,
UserHandle.USER_CURRENT);
} }
private int getMagnificationCapability() {
return mSecureSettings.getIntForUser(
Settings.Secure.ACCESSIBILITY_MAGNIFICATION_CAPABILITY,
ACCESSIBILITY_MAGNIFICATION_MODE_NONE,
UserHandle.USER_CURRENT);
}
private void updateUIControlsIfNeeded() {
int capability = getMagnificationCapability();
int selectedButtonIndex = mLastSelectedButtonIndex; int selectedButtonIndex = mLastSelectedButtonIndex;
switch (mode) { switch (capability) {
case ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN: case ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW:
// set the edit button visibility to View.INVISIBLE to keep the height, to prevent mEditButton.setVisibility(View.VISIBLE);
// the size title from too close to the size buttons mAllowDiagonalScrollingView.setVisibility(View.VISIBLE);
mFullScreenButton.setVisibility(View.GONE);
if (selectedButtonIndex == MagnificationSize.FULLSCREEN) {
selectedButtonIndex = MagnificationSize.NONE;
}
break;
case ACCESSIBILITY_MAGNIFICATION_MODE_ALL:
int mode = getMagnificationMode();
mFullScreenButton.setVisibility(View.VISIBLE);
if (mode == ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN) {
// set the edit button visibility to View.INVISIBLE to keep the height, to
// prevent the size title from too close to the size buttons
mEditButton.setVisibility(View.INVISIBLE); mEditButton.setVisibility(View.INVISIBLE);
mAllowDiagonalScrollingView.setVisibility(View.GONE); mAllowDiagonalScrollingView.setVisibility(View.GONE);
// force the fullscreen button showing // force the fullscreen button showing
selectedButtonIndex = MagnificationSize.FULLSCREEN; selectedButtonIndex = MagnificationSize.FULLSCREEN;
break; } else { // mode = ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW
case ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW:
mEditButton.setVisibility(View.VISIBLE); mEditButton.setVisibility(View.VISIBLE);
mAllowDiagonalScrollingView.setVisibility(View.VISIBLE); mAllowDiagonalScrollingView.setVisibility(View.VISIBLE);
if (selectedButtonIndex == MagnificationSize.FULLSCREEN) {
selectedButtonIndex = MagnificationSize.NONE;
} }
break; break;
case ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN:
// We will never fall into this case since we never show settings panel when
// capability equals to ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN.
// Currently, the case follows the UI controls when capability equals to
// ACCESSIBILITY_MAGNIFICATION_MODE_ALL and mode equals to
// ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN, but we could also consider to
// remove the whole icon button selections int the future since they are no use
// for fullscreen only capability.
mFullScreenButton.setVisibility(View.VISIBLE);
// set the edit button visibility to View.INVISIBLE to keep the height, to
// prevent the size title from too close to the size buttons
mEditButton.setVisibility(View.INVISIBLE);
mAllowDiagonalScrollingView.setVisibility(View.GONE);
// force the fullscreen button showing
selectedButtonIndex = MagnificationSize.FULLSCREEN;
break;
default: default:
break; break;
} }
updateSelectedButton(selectedButtonIndex); updateSelectedButton(selectedButtonIndex);
mSettingView.requestLayout();
} }
private final BroadcastReceiver mScreenOffReceiver = new BroadcastReceiver() { private final BroadcastReceiver mScreenOffReceiver = new BroadcastReceiver() {
@@ -474,11 +519,11 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
mParams.accessibilityTitle = getAccessibilityWindowTitle(mContext); mParams.accessibilityTitle = getAccessibilityWindowTitle(mContext);
boolean showSettingPanelAfterThemeChange = mIsVisible; boolean showSettingPanelAfterConfigChange = mIsVisible;
hideSettingPanel(/* resetPosition= */ false); hideSettingPanel(/* resetPosition= */ false);
inflateView(); inflateView();
if (showSettingPanelAfterThemeChange) { if (showSettingPanelAfterConfigChange) {
showSettingPanel(mTriggeringMode, /* resetPosition= */ false); showSettingPanel(/* resetPosition= */ false);
} }
return; return;
} }

View File

@@ -17,7 +17,6 @@
package com.android.systemui.accessibility; package com.android.systemui.accessibility;
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN; import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN;
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
@@ -74,10 +73,9 @@ public class MagnificationSettingsControllerTest extends SysuiTestCase {
@Test @Test
public void testShowSettingsPanel() { public void testShowSettingsPanel() {
final int mode = ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW; mMagnificationSettingsController.showMagnificationSettings();
mMagnificationSettingsController.showMagnificationSettings(mode);
verify(mWindowMagnificationSettings).showSettingPanel(eq(mode)); verify(mWindowMagnificationSettings).showSettingPanel();
} }
@Test @Test

View File

@@ -16,7 +16,10 @@
package com.android.systemui.accessibility; package com.android.systemui.accessibility;
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_CAPABILITY;
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_ALL;
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN; import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN;
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_NONE;
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW; import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
@@ -24,12 +27,17 @@ import static com.google.common.truth.Truth.assertThat;
import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertNotNull;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.annotation.IdRes; import android.annotation.IdRes;
import android.content.Context; import android.content.Context;
import android.content.pm.ActivityInfo; import android.content.pm.ActivityInfo;
import android.database.ContentObserver;
import android.os.UserHandle;
import android.provider.Settings; import android.provider.Settings;
import android.testing.AndroidTestingRunner; import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper; import android.testing.TestableLooper;
@@ -102,7 +110,10 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
@Test @Test
public void showSettingPanel_hasAccessibilityWindowTitle() { public void showSettingPanel_hasAccessibilityWindowTitle() {
mWindowMagnificationSettings.showSettingPanel(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW); setupMagnificationCapabilityAndMode(
/* capability= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW,
/* mode= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
mWindowMagnificationSettings.showSettingPanel();
final WindowManager.LayoutParams layoutPrams = final WindowManager.LayoutParams layoutPrams =
mWindowManager.getLayoutParamsFromAttachedView(); mWindowManager.getLayoutParamsFromAttachedView();
@@ -114,7 +125,10 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
@Test @Test
public void showSettingPanel_windowMode_showEditButtonAndDiagonalView() { public void showSettingPanel_windowMode_showEditButtonAndDiagonalView() {
mWindowMagnificationSettings.showSettingPanel(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW); setupMagnificationCapabilityAndMode(
/* capability= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW,
/* mode= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
mWindowMagnificationSettings.showSettingPanel();
final Button editButton = getInternalView(R.id.magnifier_edit_button); final Button editButton = getInternalView(R.id.magnifier_edit_button);
assertEquals(editButton.getVisibility(), View.VISIBLE); assertEquals(editButton.getVisibility(), View.VISIBLE);
@@ -125,7 +139,10 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
@Test @Test
public void showSettingPanel_fullScreenMode_hideEditButtonAndDiagonalView() { public void showSettingPanel_fullScreenMode_hideEditButtonAndDiagonalView() {
mWindowMagnificationSettings.showSettingPanel(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN); setupMagnificationCapabilityAndMode(
/* capability= */ ACCESSIBILITY_MAGNIFICATION_MODE_ALL,
/* mode= */ ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
mWindowMagnificationSettings.showSettingPanel();
final Button editButton = getInternalView(R.id.magnifier_edit_button); final Button editButton = getInternalView(R.id.magnifier_edit_button);
assertEquals(editButton.getVisibility(), View.INVISIBLE); assertEquals(editButton.getVisibility(), View.INVISIBLE);
@@ -134,10 +151,23 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
assertEquals(diagonalView.getVisibility(), View.GONE); assertEquals(diagonalView.getVisibility(), View.GONE);
} }
@Test
public void showSettingPanel_windowOnlyCapability_hideFullscreenButton() {
setupMagnificationCapabilityAndMode(
/* capability= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW,
/* mode= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
mWindowMagnificationSettings.showSettingPanel();
final View fullscreenButton = getInternalView(R.id.magnifier_full_button);
assertThat(fullscreenButton.getVisibility()).isEqualTo(View.GONE);
}
@Test @Test
public void performClick_smallSizeButton_changeMagnifierSizeSmallAndSwitchToWindowMode() { public void performClick_smallSizeButton_changeMagnifierSizeSmallAndSwitchToWindowMode() {
// Open view setupMagnificationCapabilityAndMode(
mWindowMagnificationSettings.showSettingPanel(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW); /* capability= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW,
/* mode= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
mWindowMagnificationSettings.showSettingPanel();
verifyOnSetMagnifierSizeAndOnModeSwitch( verifyOnSetMagnifierSizeAndOnModeSwitch(
R.id.magnifier_small_button, MAGNIFICATION_SIZE_SMALL); R.id.magnifier_small_button, MAGNIFICATION_SIZE_SMALL);
@@ -145,8 +175,10 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
@Test @Test
public void performClick_mediumSizeButton_changeMagnifierSizeMediumAndSwitchToWindowMode() { public void performClick_mediumSizeButton_changeMagnifierSizeMediumAndSwitchToWindowMode() {
// Open view setupMagnificationCapabilityAndMode(
mWindowMagnificationSettings.showSettingPanel(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW); /* capability= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW,
/* mode= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
mWindowMagnificationSettings.showSettingPanel();
verifyOnSetMagnifierSizeAndOnModeSwitch( verifyOnSetMagnifierSizeAndOnModeSwitch(
R.id.magnifier_medium_button, MAGNIFICATION_SIZE_MEDIUM); R.id.magnifier_medium_button, MAGNIFICATION_SIZE_MEDIUM);
@@ -154,8 +186,10 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
@Test @Test
public void performClick_largeSizeButton_changeMagnifierSizeLargeAndSwitchToWindowMode() { public void performClick_largeSizeButton_changeMagnifierSizeLargeAndSwitchToWindowMode() {
// Open view setupMagnificationCapabilityAndMode(
mWindowMagnificationSettings.showSettingPanel(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW); /* capability= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW,
/* mode= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
mWindowMagnificationSettings.showSettingPanel();
verifyOnSetMagnifierSizeAndOnModeSwitch( verifyOnSetMagnifierSizeAndOnModeSwitch(
R.id.magnifier_large_button, MAGNIFICATION_SIZE_LARGE); R.id.magnifier_large_button, MAGNIFICATION_SIZE_LARGE);
@@ -178,8 +212,10 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
View fullScreenModeButton = getInternalView(R.id.magnifier_full_button); View fullScreenModeButton = getInternalView(R.id.magnifier_full_button);
getInternalView(R.id.magnifier_panel_view); getInternalView(R.id.magnifier_panel_view);
// Open view setupMagnificationCapabilityAndMode(
mWindowMagnificationSettings.showSettingPanel(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW); /* capability= */ ACCESSIBILITY_MAGNIFICATION_MODE_ALL,
/* mode= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
mWindowMagnificationSettings.showSettingPanel();
// Perform click // Perform click
fullScreenModeButton.performClick(); fullScreenModeButton.performClick();
@@ -192,8 +228,10 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
public void performClick_editButton_setEditMagnifierSizeMode() { public void performClick_editButton_setEditMagnifierSizeMode() {
View editButton = getInternalView(R.id.magnifier_edit_button); View editButton = getInternalView(R.id.magnifier_edit_button);
// Open view setupMagnificationCapabilityAndMode(
mWindowMagnificationSettings.showSettingPanel(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW); /* capability= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW,
/* mode= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
mWindowMagnificationSettings.showSettingPanel();
// Perform click // Perform click
editButton.performClick(); editButton.performClick();
@@ -208,8 +246,10 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
getInternalView(R.id.magnifier_horizontal_lock_switch); getInternalView(R.id.magnifier_horizontal_lock_switch);
final boolean currentCheckedState = diagonalScrollingSwitch.isChecked(); final boolean currentCheckedState = diagonalScrollingSwitch.isChecked();
// Open view setupMagnificationCapabilityAndMode(
mWindowMagnificationSettings.showSettingPanel(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW); /* capability= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW,
/* mode= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
mWindowMagnificationSettings.showSettingPanel();
// Perform click // Perform click
diagonalScrollingSwitch.performClick(); diagonalScrollingSwitch.performClick();
@@ -219,8 +259,10 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
@Test @Test
public void onConfigurationChanged_selectedButtonIsStillSelected() { public void onConfigurationChanged_selectedButtonIsStillSelected() {
// Open view setupMagnificationCapabilityAndMode(
mWindowMagnificationSettings.showSettingPanel(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW); /* capability= */ ACCESSIBILITY_MAGNIFICATION_MODE_ALL,
/* mode= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
mWindowMagnificationSettings.showSettingPanel();
View magnifierMediumButton = getInternalView(R.id.magnifier_medium_button); View magnifierMediumButton = getInternalView(R.id.magnifier_medium_button);
magnifierMediumButton.performClick(); magnifierMediumButton.performClick();
@@ -232,9 +274,46 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
assertThat(magnifierMediumButton.isSelected()).isTrue(); assertThat(magnifierMediumButton.isSelected()).isTrue();
} }
@Test
public void showSettingsPanel_observerRegistered() {
setupMagnificationCapabilityAndMode(
/* capability= */ ACCESSIBILITY_MAGNIFICATION_MODE_ALL,
/* mode= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
mWindowMagnificationSettings.showSettingPanel();
verify(mSecureSettings).registerContentObserverForUser(
eq(ACCESSIBILITY_MAGNIFICATION_CAPABILITY),
any(ContentObserver.class),
eq(UserHandle.USER_CURRENT));
}
@Test
public void hideSettingsPanel_observerUnregistered() {
setupMagnificationCapabilityAndMode(
/* capability= */ ACCESSIBILITY_MAGNIFICATION_MODE_ALL,
/* mode= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
mWindowMagnificationSettings.showSettingPanel();
mWindowMagnificationSettings.hideSettingPanel();
verify(mSecureSettings).unregisterContentObserver(any(ContentObserver.class));
}
private <T extends View> T getInternalView(@IdRes int idRes) { private <T extends View> T getInternalView(@IdRes int idRes) {
T view = mSettingView.findViewById(idRes); T view = mSettingView.findViewById(idRes);
assertNotNull(view); assertNotNull(view);
return view; return view;
} }
private void setupMagnificationCapabilityAndMode(int capability, int mode) {
when(mSecureSettings.getIntForUser(
Settings.Secure.ACCESSIBILITY_MAGNIFICATION_CAPABILITY,
ACCESSIBILITY_MAGNIFICATION_MODE_NONE,
UserHandle.USER_CURRENT)).thenReturn(capability);
when(mSecureSettings.getIntForUser(
Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE,
ACCESSIBILITY_MAGNIFICATION_MODE_NONE,
UserHandle.USER_CURRENT)).thenReturn(mode);
}
} }

View File

@@ -184,8 +184,7 @@ public class WindowMagnificationTest extends SysuiTestCase {
mWindowMagnification.mWindowMagnifierCallback.onClickSettingsButton(TEST_DISPLAY); mWindowMagnification.mWindowMagnifierCallback.onClickSettingsButton(TEST_DISPLAY);
waitForIdleSync(); waitForIdleSync();
verify(mMagnificationSettingsController).showMagnificationSettings( verify(mMagnificationSettingsController).showMagnificationSettings();
eq(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW));
} }
@Test @Test