Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 93f20c6e authored by Candice Lo's avatar Candice Lo Committed by Automerger Merge Worker
Browse files

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

Merge "Hide fullscreen button in partial only mode" into udc-dev am: edbdb977 am: 7ad61dee am: 2f191b52

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23087459



Change-Id: I7d0d26dc2be6a5715421218ba7177ee1edf27caf
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 44b6998b 2f191b52
Loading
Loading
Loading
Loading
+3 −8
Original line number Original line Diff line number Diff line
@@ -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() {
+4 −6
Original line number Original line Diff line number Diff line
@@ -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);
            });
            });
        }
        }
    };
    };
+83 −38
Original line number Original line Diff line number Diff line
@@ -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;
        }
        }
+2 −4
Original line number Original line Diff line number Diff line
@@ -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
+96 −17
Original line number Original line Diff line number Diff line
@@ -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);
    }
}
}
Loading