summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/accessibility/MagnificationSettingsController.java11
-rw-r--r--packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationSettings.java121
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationSettingsControllerTest.java6
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationSettingsTest.java113
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationTest.java3
6 files changed, 189 insertions, 75 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/MagnificationSettingsController.java b/packages/SystemUI/src/com/android/systemui/accessibility/MagnificationSettingsController.java
index 3349fe5f1147..c3bb423e5e4e 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/MagnificationSettingsController.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/MagnificationSettingsController.java
@@ -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() {
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java
index 1c030da99e15..c820e4f105c2 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java
@@ -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);
});
}
};
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationSettings.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationSettings.java
index 155c26d9fe9d..44b49b8c2386 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationSettings.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationSettings.java
@@ -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);
+ }
- int selectedButtonIndex = mLastSelectedButtonIndex;
- switch (mode) {
- 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
- mEditButton.setVisibility(View.INVISIBLE);
- mAllowDiagonalScrollingView.setVisibility(View.GONE);
- // force the fullscreen button showing
- selectedButtonIndex = MagnificationSize.FULLSCREEN;
- break;
+ 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 (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:
+ // 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:
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;
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationSettingsControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationSettingsControllerTest.java
index 30cbc5242a81..665246bd7f7d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationSettingsControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationSettingsControllerTest.java
@@ -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
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationSettingsTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationSettingsTest.java
index c08b5b47cb06..ce96708039ae 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationSettingsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationSettingsTest.java
@@ -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);
@@ -135,9 +152,22 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
}
@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);
+ }
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationTest.java
index 239b5bd39430..086f6285f8cf 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationTest.java
@@ -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