Hide fullscreen button in partial only mode
The fullscreen button is hidden when the capability of magnification is set to magnifying partial screen only. The logic for updating UI control is to check the capbility of magnification first to decide if we would like to show or hide the fullscreen button. If the capability is ACCESSIBILITY_MAGNIFICATION_MODE_ALL, we check the current mode in the next step to decide if we would like to show or hide the edit button and the diagonal scrolling view. We also register a content observer for modifying the layout immediately when there is a capability or mode change in magnification. Bug: 280520144 Test: Manually - attach video with the bug Test: atest WindowMagnificationSettingsTest WindowMagnificationTest MagnificationSettingsControllerTest Change-Id: Ie43fdbc5bf598130097deb3db718f0c1535afbb4
This commit is contained in:
@@ -87,19 +87,14 @@ public class MagnificationSettingsController implements ComponentCallbacks {
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows magnification settings panel {@link WindowMagnificationSettings}. The panel ui would be
|
||||
* 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
|
||||
* Shows magnification settings panel {@link WindowMagnificationSettings}.
|
||||
*/
|
||||
void showMagnificationSettings(int mode) {
|
||||
void showMagnificationSettings() {
|
||||
if (!mWindowMagnificationSettings.isSettingPanelShowing()) {
|
||||
onConfigurationChanged(mContext.getResources().getConfiguration());
|
||||
mContext.registerComponentCallbacks(this);
|
||||
}
|
||||
mWindowMagnificationSettings.showSettingPanel(mode);
|
||||
mWindowMagnificationSettings.showSettingPanel();
|
||||
}
|
||||
|
||||
void closeMagnificationSettings() {
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
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.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY;
|
||||
|
||||
@@ -169,8 +168,7 @@ public class WindowMagnification implements CoreStartable, CommandQueue.Callback
|
||||
|
||||
mModeSwitchesController.setClickListenerDelegate(
|
||||
displayId -> mHandler.post(() -> {
|
||||
showMagnificationSettingsPanel(displayId,
|
||||
ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
|
||||
showMagnificationSettingsPanel(displayId);
|
||||
}));
|
||||
}
|
||||
|
||||
@@ -253,11 +251,11 @@ public class WindowMagnification implements CoreStartable, CommandQueue.Callback
|
||||
}
|
||||
|
||||
@MainThread
|
||||
void showMagnificationSettingsPanel(int displayId, int mode) {
|
||||
void showMagnificationSettingsPanel(int displayId) {
|
||||
final MagnificationSettingsController magnificationSettingsController =
|
||||
mMagnificationSettingsSupplier.get(displayId);
|
||||
if (magnificationSettingsController != null) {
|
||||
magnificationSettingsController.showMagnificationSettings(mode);
|
||||
magnificationSettingsController.showMagnificationSettings();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -334,7 +332,7 @@ public class WindowMagnification implements CoreStartable, CommandQueue.Callback
|
||||
@Override
|
||||
public void onClickSettingsButton(int displayId) {
|
||||
mHandler.post(() -> {
|
||||
showMagnificationSettingsPanel(displayId, ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
|
||||
showMagnificationSettingsPanel(displayId);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
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_NONE;
|
||||
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.IntentFilter;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.database.ContentObserver;
|
||||
import android.graphics.Insets;
|
||||
import android.graphics.PixelFormat;
|
||||
import android.graphics.Rect;
|
||||
@@ -101,8 +103,7 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
|
||||
private static final float A11Y_SCALE_MIN_VALUE = 1.0f;
|
||||
private WindowMagnificationSettingsCallback mCallback;
|
||||
|
||||
// the magnification mode that triggers showing the panel
|
||||
private int mTriggeringMode = ACCESSIBILITY_MAGNIFICATION_MODE_NONE;
|
||||
private ContentObserver mMagnificationCapabilityObserver;
|
||||
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
@IntDef({
|
||||
@@ -142,6 +143,16 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
|
||||
|
||||
mGestureDetector = new MagnificationGestureDetector(context,
|
||||
context.getMainThreadHandler(), this);
|
||||
|
||||
mMagnificationCapabilityObserver = new ContentObserver(
|
||||
mContext.getMainThreadHandler()) {
|
||||
@Override
|
||||
public void onChange(boolean selfChange) {
|
||||
mSettingView.post(() -> {
|
||||
updateUIControlsIfNeeded();
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private class ZoomSeekbarChangeListener implements SeekBar.OnSeekBarChangeListener {
|
||||
@@ -257,7 +268,7 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
|
||||
@Override
|
||||
public boolean onFinish(float xOffset, float yOffset) {
|
||||
if (!mSingleTapDetected) {
|
||||
showSettingPanel(mTriggeringMode);
|
||||
showSettingPanel();
|
||||
}
|
||||
mSingleTapDetected = false;
|
||||
return true;
|
||||
@@ -285,7 +296,8 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
|
||||
return;
|
||||
}
|
||||
|
||||
// Reset button status.
|
||||
// Unregister observer before removing view
|
||||
mSecureSettings.unregisterContentObserver(mMagnificationCapabilityObserver);
|
||||
mWindowManager.removeView(mSettingView);
|
||||
mIsVisible = false;
|
||||
if (resetPosition) {
|
||||
@@ -297,16 +309,8 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
|
||||
mCallback.onSettingsPanelVisibilityChanged(/* shown= */ false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows magnification settings panel. The panel ui would be 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
|
||||
*/
|
||||
public void showSettingPanel(int mode) {
|
||||
showSettingPanel(mode, true);
|
||||
public void showSettingPanel() {
|
||||
showSettingPanel(true);
|
||||
}
|
||||
|
||||
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
|
||||
* reset depending on the flag.
|
||||
*
|
||||
* @param mode The magnification mode
|
||||
* @param resetPosition if the button position needs be reset
|
||||
* @param resetPosition if the panel position needs to be reset
|
||||
*/
|
||||
private void showSettingPanel(int mode, boolean resetPosition) {
|
||||
private void showSettingPanel(boolean resetPosition) {
|
||||
if (!mIsVisible) {
|
||||
updateUIControlsIfNeed(mode);
|
||||
mTriggeringMode = mode;
|
||||
|
||||
updateUIControlsIfNeeded();
|
||||
if (resetPosition) {
|
||||
mDraggableWindowBounds.set(getDraggableWindowBounds());
|
||||
mParams.x = mDraggableWindowBounds.right;
|
||||
@@ -342,6 +343,11 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
|
||||
|
||||
mWindowManager.addView(mSettingView, mParams);
|
||||
|
||||
mSecureSettings.registerContentObserverForUser(
|
||||
Settings.Secure.ACCESSIBILITY_MAGNIFICATION_CAPABILITY,
|
||||
mMagnificationCapabilityObserver,
|
||||
UserHandle.USER_CURRENT);
|
||||
|
||||
// Exclude magnification switch button from system gesture area.
|
||||
setSystemGestureExclusion();
|
||||
mIsVisible = true;
|
||||
@@ -359,35 +365,74 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
|
||||
mContext.registerReceiver(mScreenOffReceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
|
||||
}
|
||||
|
||||
private void updateUIControlsIfNeed(int mode) {
|
||||
if (mode == mTriggeringMode) {
|
||||
return;
|
||||
}
|
||||
private int getMagnificationMode() {
|
||||
return mSecureSettings.getIntForUser(
|
||||
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;
|
||||
switch (mode) {
|
||||
switch (capability) {
|
||||
case ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW:
|
||||
mEditButton.setVisibility(View.VISIBLE);
|
||||
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);
|
||||
mAllowDiagonalScrollingView.setVisibility(View.GONE);
|
||||
// force the fullscreen button showing
|
||||
selectedButtonIndex = MagnificationSize.FULLSCREEN;
|
||||
} else { // mode = ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW
|
||||
mEditButton.setVisibility(View.VISIBLE);
|
||||
mAllowDiagonalScrollingView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
break;
|
||||
|
||||
case 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
|
||||
// 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;
|
||||
|
||||
case ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW:
|
||||
mEditButton.setVisibility(View.VISIBLE);
|
||||
mAllowDiagonalScrollingView.setVisibility(View.VISIBLE);
|
||||
if (selectedButtonIndex == MagnificationSize.FULLSCREEN) {
|
||||
selectedButtonIndex = MagnificationSize.NONE;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
updateSelectedButton(selectedButtonIndex);
|
||||
mSettingView.requestLayout();
|
||||
}
|
||||
|
||||
private final BroadcastReceiver mScreenOffReceiver = new BroadcastReceiver() {
|
||||
@@ -474,11 +519,11 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
|
||||
|
||||
mParams.accessibilityTitle = getAccessibilityWindowTitle(mContext);
|
||||
|
||||
boolean showSettingPanelAfterThemeChange = mIsVisible;
|
||||
boolean showSettingPanelAfterConfigChange = mIsVisible;
|
||||
hideSettingPanel(/* resetPosition= */ false);
|
||||
inflateView();
|
||||
if (showSettingPanelAfterThemeChange) {
|
||||
showSettingPanel(mTriggeringMode, /* resetPosition= */ false);
|
||||
if (showSettingPanelAfterConfigChange) {
|
||||
showSettingPanel(/* resetPosition= */ false);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
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 org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.verify;
|
||||
@@ -74,10 +73,9 @@ public class MagnificationSettingsControllerTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
public void testShowSettingsPanel() {
|
||||
final int mode = ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW;
|
||||
mMagnificationSettingsController.showMagnificationSettings(mode);
|
||||
mMagnificationSettingsController.showMagnificationSettings();
|
||||
|
||||
verify(mWindowMagnificationSettings).showSettingPanel(eq(mode));
|
||||
verify(mWindowMagnificationSettings).showSettingPanel();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -16,7 +16,10 @@
|
||||
|
||||
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_NONE;
|
||||
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW;
|
||||
|
||||
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.assertNotNull;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.annotation.IdRes;
|
||||
import android.content.Context;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.database.ContentObserver;
|
||||
import android.os.UserHandle;
|
||||
import android.provider.Settings;
|
||||
import android.testing.AndroidTestingRunner;
|
||||
import android.testing.TestableLooper;
|
||||
@@ -102,7 +110,10 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
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 =
|
||||
mWindowManager.getLayoutParamsFromAttachedView();
|
||||
@@ -114,7 +125,10 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
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);
|
||||
assertEquals(editButton.getVisibility(), View.VISIBLE);
|
||||
@@ -125,7 +139,10 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
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);
|
||||
assertEquals(editButton.getVisibility(), View.INVISIBLE);
|
||||
@@ -134,10 +151,23 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
|
||||
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
|
||||
public void performClick_smallSizeButton_changeMagnifierSizeSmallAndSwitchToWindowMode() {
|
||||
// Open view
|
||||
mWindowMagnificationSettings.showSettingPanel(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
|
||||
setupMagnificationCapabilityAndMode(
|
||||
/* capability= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW,
|
||||
/* mode= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
|
||||
mWindowMagnificationSettings.showSettingPanel();
|
||||
|
||||
verifyOnSetMagnifierSizeAndOnModeSwitch(
|
||||
R.id.magnifier_small_button, MAGNIFICATION_SIZE_SMALL);
|
||||
@@ -145,8 +175,10 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
public void performClick_mediumSizeButton_changeMagnifierSizeMediumAndSwitchToWindowMode() {
|
||||
// Open view
|
||||
mWindowMagnificationSettings.showSettingPanel(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
|
||||
setupMagnificationCapabilityAndMode(
|
||||
/* capability= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW,
|
||||
/* mode= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
|
||||
mWindowMagnificationSettings.showSettingPanel();
|
||||
|
||||
verifyOnSetMagnifierSizeAndOnModeSwitch(
|
||||
R.id.magnifier_medium_button, MAGNIFICATION_SIZE_MEDIUM);
|
||||
@@ -154,8 +186,10 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
public void performClick_largeSizeButton_changeMagnifierSizeLargeAndSwitchToWindowMode() {
|
||||
// Open view
|
||||
mWindowMagnificationSettings.showSettingPanel(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
|
||||
setupMagnificationCapabilityAndMode(
|
||||
/* capability= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW,
|
||||
/* mode= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
|
||||
mWindowMagnificationSettings.showSettingPanel();
|
||||
|
||||
verifyOnSetMagnifierSizeAndOnModeSwitch(
|
||||
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);
|
||||
getInternalView(R.id.magnifier_panel_view);
|
||||
|
||||
// Open view
|
||||
mWindowMagnificationSettings.showSettingPanel(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
|
||||
setupMagnificationCapabilityAndMode(
|
||||
/* capability= */ ACCESSIBILITY_MAGNIFICATION_MODE_ALL,
|
||||
/* mode= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
|
||||
mWindowMagnificationSettings.showSettingPanel();
|
||||
|
||||
// Perform click
|
||||
fullScreenModeButton.performClick();
|
||||
@@ -192,8 +228,10 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
|
||||
public void performClick_editButton_setEditMagnifierSizeMode() {
|
||||
View editButton = getInternalView(R.id.magnifier_edit_button);
|
||||
|
||||
// Open view
|
||||
mWindowMagnificationSettings.showSettingPanel(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
|
||||
setupMagnificationCapabilityAndMode(
|
||||
/* capability= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW,
|
||||
/* mode= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
|
||||
mWindowMagnificationSettings.showSettingPanel();
|
||||
|
||||
// Perform click
|
||||
editButton.performClick();
|
||||
@@ -208,8 +246,10 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
|
||||
getInternalView(R.id.magnifier_horizontal_lock_switch);
|
||||
final boolean currentCheckedState = diagonalScrollingSwitch.isChecked();
|
||||
|
||||
// Open view
|
||||
mWindowMagnificationSettings.showSettingPanel(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
|
||||
setupMagnificationCapabilityAndMode(
|
||||
/* capability= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW,
|
||||
/* mode= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
|
||||
mWindowMagnificationSettings.showSettingPanel();
|
||||
|
||||
// Perform click
|
||||
diagonalScrollingSwitch.performClick();
|
||||
@@ -219,8 +259,10 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
public void onConfigurationChanged_selectedButtonIsStillSelected() {
|
||||
// Open view
|
||||
mWindowMagnificationSettings.showSettingPanel(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
|
||||
setupMagnificationCapabilityAndMode(
|
||||
/* capability= */ ACCESSIBILITY_MAGNIFICATION_MODE_ALL,
|
||||
/* mode= */ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
|
||||
mWindowMagnificationSettings.showSettingPanel();
|
||||
View magnifierMediumButton = getInternalView(R.id.magnifier_medium_button);
|
||||
magnifierMediumButton.performClick();
|
||||
|
||||
@@ -232,9 +274,46 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
|
||||
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) {
|
||||
T view = mSettingView.findViewById(idRes);
|
||||
assertNotNull(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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,8 +184,7 @@ public class WindowMagnificationTest extends SysuiTestCase {
|
||||
mWindowMagnification.mWindowMagnifierCallback.onClickSettingsButton(TEST_DISPLAY);
|
||||
waitForIdleSync();
|
||||
|
||||
verify(mMagnificationSettingsController).showMagnificationSettings(
|
||||
eq(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW));
|
||||
verify(mMagnificationSettingsController).showMagnificationSettings();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user