diff options
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 |