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

Commit b221eb4c authored by Bill Lin's avatar Bill Lin
Browse files

Refactor One handed mode Unit tests

1) Fix all broken tests and use mock for unit tests
2) Integrate TestableContext for unit tests
3) Do not update/restore Settings from TestBase
4) Limit to grant permissions for test cases

Fixes: 167943723
Test: atest WMShellUnitTests
Change-Id: Id02aa26e63b96962d955fcfbf061d668a6cb731c
parent a052eef7
Loading
Loading
Loading
Loading
+11 −8
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.os.ServiceManager;
import android.os.SystemProperties;
import android.provider.Settings;
import android.util.Slog;
import android.view.ViewConfiguration;
import android.view.accessibility.AccessibilityManager;

import androidx.annotation.NonNull;
@@ -154,7 +155,7 @@ public class OneHandedController {
        OneHandedTouchHandler touchHandler = new OneHandedTouchHandler(timeoutHandler,
                mainExecutor);
        OneHandedGestureHandler gestureHandler = new OneHandedGestureHandler(
                context, displayController, mainExecutor);
                context, displayController, ViewConfiguration.get(context), mainExecutor);
        OneHandedBackgroundPanelOrganizer oneHandedBackgroundPanelOrganizer =
                new OneHandedBackgroundPanelOrganizer(context, displayController, mainExecutor);
        OneHandedDisplayAreaOrganizer organizer = new OneHandedDisplayAreaOrganizer(
@@ -222,8 +223,7 @@ public class OneHandedController {
        setupGesturalOverlay();
        updateSettings();

        mAccessibilityManager = (AccessibilityManager)
                context.getSystemService(Context.ACCESSIBILITY_SERVICE);
        mAccessibilityManager = AccessibilityManager.getInstance(context);
        mAccessibilityManager.addAccessibilityStateChangeListener(
                mAccessibilityStateChangeListener);
    }
@@ -345,7 +345,8 @@ public class OneHandedController {
        };
    }

    private void onEnabledSettingChanged() {
    @VisibleForTesting
    void onEnabledSettingChanged() {
        final boolean enabled = OneHandedSettingsUtil.getSettingsOneHandedModeEnabled(
                mContext.getContentResolver());
        mOneHandedUiEventLogger.writeEvent(enabled
@@ -360,7 +361,8 @@ public class OneHandedController {
                        mContext.getContentResolver()));
    }

    private void onTimeoutSettingChanged() {
    @VisibleForTesting
    void onTimeoutSettingChanged() {
        final int newTimeout = OneHandedSettingsUtil.getSettingsOneHandedModeTimeout(
                mContext.getContentResolver());
        int metricsId = OneHandedUiEventLogger.OneHandedSettingsTogglesEvent.INVALID.getId();
@@ -388,7 +390,8 @@ public class OneHandedController {
        }
    }

    private void onTaskChangeExitSettingChanged() {
    @VisibleForTesting
    void onTaskChangeExitSettingChanged() {
        final boolean enabled = OneHandedSettingsUtil.getSettingsTapsAppToExit(
                mContext.getContentResolver());
        mOneHandedUiEventLogger.writeEvent(enabled
@@ -398,7 +401,8 @@ public class OneHandedController {
        setTaskChangeToExit(enabled);
    }

    private void onSwipeToNotificationEnabledSettingChanged() {
    @VisibleForTesting
    void onSwipeToNotificationEnabledSettingChanged() {
        final boolean enabled =
                OneHandedSettingsUtil.getSettingsSwipeToNotificationEnabled(
                        mContext.getContentResolver());
@@ -461,7 +465,6 @@ public class OneHandedController {

        OverlayInfo info = null;
        try {
            // TODO(b/157958539) migrate new RRO config file after S+
            mOverlayManager.setHighestPriority(ONE_HANDED_MODE_GESTURAL_OVERLAY, USER_CURRENT);
            info = mOverlayManager.getOverlayInfo(ONE_HANDED_MODE_GESTURAL_OVERLAY, USER_CURRENT);
        } catch (RemoteException e) { /* Do nothing */ }
+2 −1
Original line number Diff line number Diff line
@@ -87,6 +87,7 @@ public class OneHandedGestureHandler implements OneHandedTransitionCallback,
     * @param displayController        {@link DisplayController}
     */
    public OneHandedGestureHandler(Context context, DisplayController displayController,
            ViewConfiguration viewConfig,
            ShellExecutor mainExecutor) {
        mDisplayController = displayController;
        mMainExecutor = mainExecutor;
@@ -95,7 +96,7 @@ public class OneHandedGestureHandler implements OneHandedTransitionCallback,
                com.android.internal.R.dimen.navigation_bar_gesture_larger_height);
        mDragDistThreshold = context.getResources().getDimensionPixelSize(
                R.dimen.gestures_onehanded_drag_threshold);
        final float slop = ViewConfiguration.get(context).getScaledTouchSlop();
        final float slop = viewConfig.getScaledTouchSlop();
        mSquaredSlop = slop * slop;

        updateIsEnabled();
+1 −2
Original line number Diff line number Diff line
@@ -103,8 +103,7 @@ public class OneHandedTutorialHandler implements OneHandedTransitionCallback {
        mPackageName = context.getPackageName();
        mContentResolver = context.getContentResolver();
        mWindowManager = context.getSystemService(WindowManager.class);
        mAccessibilityManager = (AccessibilityManager)
                context.getSystemService(Context.ACCESSIBILITY_SERVICE);
        mAccessibilityManager = AccessibilityManager.getInstance(context);

        mStartOneHandedDescription = context.getResources().getString(
                R.string.accessibility_action_start_one_handed);
+0 −3
Original line number Diff line number Diff line
@@ -47,7 +47,6 @@ public class OneHandedAnimationControllerTest extends OneHandedTestCase {
    private static final int TEST_BOUNDS_HEIGHT = 1000;

    OneHandedAnimationController mOneHandedAnimationController;
    OneHandedTutorialHandler mTutorialHandler;

    @Mock
    private SurfaceControl mMockLeash;
@@ -60,8 +59,6 @@ public class OneHandedAnimationControllerTest extends OneHandedTestCase {
    @Before
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);

        mTutorialHandler = new OneHandedTutorialHandler(mContext, mMainExecutor);
        mOneHandedAnimationController = new OneHandedAnimationController(mContext);
    }

+1 −10
Original line number Diff line number Diff line
@@ -59,7 +59,7 @@ public class OneHandedBackgroundPanelOrganizerTest extends OneHandedTestCase {
    DisplayController mMockDisplayController;

    @Before
    public void setUp() throws Exception {
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mTestableLooper = TestableLooper.get(this);
        mToken = new WindowContainerToken(mMockRealToken);
@@ -81,15 +81,6 @@ public class OneHandedBackgroundPanelOrganizerTest extends OneHandedTestCase {
        assertThat(mBackgroundPanelOrganizer.getBackgroundSurface()).isNotNull();
    }

    @Test
    public void testUnregisterOrganizer() {
        mBackgroundPanelOrganizer.onDisplayAreaAppeared(mDisplayAreaInfo, mLeash);
        mTestableLooper.processAllMessages();
        mBackgroundPanelOrganizer.unregisterOrganizer();

        assertThat(mBackgroundPanelOrganizer.getBackgroundSurface()).isNull();
    }

    @Test
    public void testShowBackgroundLayer() {
        mBackgroundPanelOrganizer.onDisplayAreaAppeared(mDisplayAreaInfo, mLeash);
Loading