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

Commit a40be420 authored by Bill Lin's avatar Bill Lin Committed by Android (Google) Code Review
Browse files

Merge "Refresh display bounds when display layout updated"

parents 2ae3ef74 630f3af9
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -277,6 +277,7 @@ public class OneHandedController implements RemoteCallable<OneHandedController>,
        registerSettingObservers(mUserId);
        setupTimeoutListener();
        updateSettings();
        updateDisplayLayout(mContext.getDisplayId());

        mAccessibilityManager = AccessibilityManager.getInstance(context);
        mAccessibilityManager.addAccessibilityStateChangeListener(
@@ -448,8 +449,13 @@ public class OneHandedController implements RemoteCallable<OneHandedController>,
        onShortcutEnabledChanged();
    }

    private void updateDisplayLayout(int displayId) {
    @VisibleForTesting
    void updateDisplayLayout(int displayId) {
        final DisplayLayout newDisplayLayout = mDisplayController.getDisplayLayout(displayId);
        if (newDisplayLayout == null) {
            Slog.w(TAG, "Failed to get new DisplayLayout.");
            return;
        }
        mDisplayAreaOrganizer.setDisplayLayout(newDisplayLayout);
        mTutorialHandler.onDisplayChanged(newDisplayLayout);
        mBackgroundPanelOrganizer.onDisplayChanged(newDisplayLayout);
+3 −2
Original line number Diff line number Diff line
@@ -123,9 +123,8 @@ public class OneHandedDisplayAreaOrganizer extends DisplayAreaOrganizer {
            OneHandedBackgroundPanelOrganizer oneHandedBackgroundGradientOrganizer,
            ShellExecutor mainExecutor) {
        super(mainExecutor);
        mDisplayLayout.set(displayLayout);
        setDisplayLayout(displayLayout);
        mOneHandedSettingsUtil = oneHandedSettingsUtil;
        updateDisplayBounds();
        mAnimationController = animationController;
        final int animationDurationConfig = context.getResources().getInteger(
                R.integer.config_one_handed_translate_animation_duration);
@@ -282,6 +281,7 @@ public class OneHandedDisplayAreaOrganizer extends DisplayAreaOrganizer {
    @VisibleForTesting
    void setDisplayLayout(@NonNull DisplayLayout displayLayout) {
        mDisplayLayout.set(displayLayout);
        updateDisplayBounds();
    }

    @VisibleForTesting
@@ -289,6 +289,7 @@ public class OneHandedDisplayAreaOrganizer extends DisplayAreaOrganizer {
        return mDisplayAreaTokenMap;
    }

    @VisibleForTesting
    void updateDisplayBounds() {
        mDefaultDisplayBounds.set(0, 0, mDisplayLayout.width(), mDisplayLayout.height());
        mLastVisualDisplayBounds.set(mDefaultDisplayBounds);
+8 −0
Original line number Diff line number Diff line
@@ -109,6 +109,7 @@ public class OneHandedControllerTest extends OneHandedTestCase {
        mSpiedTransitionState = spy(new OneHandedState());

        when(mMockDisplayController.getDisplay(anyInt())).thenReturn(mDisplay);
        when(mMockDisplayController.getDisplayLayout(anyInt())).thenReturn(null);
        when(mMockDisplayAreaOrganizer.getDisplayAreaTokenMap()).thenReturn(new ArrayMap<>());
        when(mMockDisplayAreaOrganizer.isReady()).thenReturn(true);
        when(mMockBackgroundOrganizer.isRegistered()).thenReturn(true);
@@ -152,6 +153,13 @@ public class OneHandedControllerTest extends OneHandedTestCase {
        assertThat(mSpiedTransitionState.getState()).isEqualTo(STATE_NONE);
    }

    @Test
    public void testNullDisplayLayout() {
        mSpiedOneHandedController.updateDisplayLayout(0);

        verify(mMockDisplayAreaOrganizer, never()).setDisplayLayout(any());
    }

    @Test
    public void testStartOneHandedShouldTriggerScheduleOffset() {
        mSpiedTransitionState.setState(STATE_NONE);
+7 −0
Original line number Diff line number Diff line
@@ -432,4 +432,11 @@ public class OneHandedDisplayAreaOrganizerTest extends OneHandedTestCase {

        assertThat(testSpiedDisplayAreaOrganizer.isReady()).isFalse();
    }

    @Test
    public void testDisplayArea_setDisplayLayout_should_updateDisplayBounds() {
        mSpiedDisplayAreaOrganizer.setDisplayLayout(mDisplayLayout);

        verify(mSpiedDisplayAreaOrganizer).updateDisplayBounds();
    }
}